SpringCloud 简介
spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
微服务
微服务是一种可以让软件职责单一、松耦合、自包含、可以独立运行和部署的架构思想。关键思想就是:拆分、单一、独立、组件化。把原本一个庞大、复杂的项目按业务边界拆分一个一个独立运行的小项目,通过接口的方式组装成一个大的项目。
SpringCloud 核心组件有
服务注册发现 - Netflix Eureka
配置中心 - spring cloud config
负载均衡-Netflix Ribbon
断路器 - Netflix Hystrix
路由(网关) - Netflix Zuul
服务在发布时指定对应的服务名 将服务注册到注册中心
在main方法添加@EnableDisscoveryClient
同一个服务修改端口就可以启动多个实例
调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务
搭建服务注册中心服务注册中心
加入cloud Discovery栏添加Eureka Server组件
在启动类修改EurekaServerApplication.java,添加@EnableEurekaServer
在默认情况下,服务注册中心也会把自己当做是一个服务,将自己注册进服务注册中心,所以我们可以通过配置来禁用他的客户端注册行为,修改application.properties文件(服务器和客户端都采用properties格式,最好不要更改为yml)
server:
port: 18761
server.port=1111
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}
#不注册自己
eureka.client.register-with-eureka=false
#避免eureka查找服务列表
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka/
启动应用,并访问http://localhost:1111/即可看到Eureka信息面板
创建并注册服务提供者 Eureka Client
选择Web组件或者其它能够持久运行的。不然会注册失败
启动类EurekaClientApplication.java添加@EnableDiscoveryClient注解以实现Eureka中的DiscoveryClient实现。
修改配置文件application.properties(其他的文章当中会用到yml的格式,但还是建议用properties,避免出现其他的坑)
spring.application.name=ribbon-consumer
server.port=3333
#eureka.client.service-url.default-zone写法报错
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}
先启动:eureka-server
然后启动eureka-client
访问:http://localhost:1111
发现多了一个RIBBON-CONSUMER,说明注册成功了