springcloud版本选择
中文文档:https://www.springcloud.cc/spring-cloud-dalston.html(中文文档是基于Greenwich版本)
官方文档:https://spring.io/projects/spring-cloud
- Angel发布系列基于Spring Boot 1.2.x构建,并且在某些方面与Spring Boot 1.3.x不兼容。
- Brixton建立在Spring Boot 1.3.x之上,并且与1.2.x不兼容。Brixton发布系列基于Spring Boot 1.3.x构建,但也已在1.4.x上进行了测试。
- Camden发布系列基于Spring Boot 1.4.x构建,但也已在1.5.x上进行了测试。
- Dalston和Edgware发行列车建立在Spring Boot 1.5.x上,并且不能与Spring Boot 2.0.x一起使用。
- Greenwich可以构建并与Spring Boot 2.1.x一起使用,并且不能与Spring Boot 1.5.x一起使用。
发行列车 | springboot版本 |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
下面图片标注了当前官方的推荐使用版本,此版本是我的学习版本,可以点进去查看官方文档。
- GA:General Availability,正式发布的版本,官方推荐使用此版本。在国外都是用GA来说明release版本的。
- PRE:预览版,内部测试版,主要是给开发人员和测试人员测试和找BUG用的,不建议使用。
- SNAPSHOT: 快照版,尚处于开发中的版本,可以稳定使用,且仍在继续改进版本。
点击ReferenceDoc,再点击Getting Started,搜索<groupId>org.springframework.boot</groupId>
,可以找到官方推荐的springboot版本
项目地址:
https://gitee.com/yucong9527/cloud.first.git
https://gitee.com/yucong9527/cloud.second.git(高可用)
- 项目整合:eureka,feign,zuul,config
- 为什么没有hystrix,ribbon,stream,bus?因为feign自带ribbon,并且feign集成了hystrix;至于stream,通常会利用中间件写独立的组件;配置在项目中的可变变量可以存储在zk从而代替bus。
- first.eureka:eureka服务器
first.entity:实体类
first.service:feign接口,指定了失败回调函数和对first.provider进行负载
first.provider:服务提供者,也是eureka客户端和config客户端
first.consumer:服务调用者,也是eureka客户端和config客户端
first.zuul:网关,也是eureka客户端和config客户端
first.config:配置中心,config服务端也是eureka客户端,provider、consumer、zuul的配置都放在gitee,通过profiles来统一管理 - 先启动eureka服务,first.eureka ;
再启动配置中心,first.config;
再启动服务提供者,first.provider,provider先注册到eureka,读取config配置,再到Git找到application-first.yml文件,读取自己的配置;
再启动服务提供者,first.consumer,consumer先注册到eureka,读取config配置,再到Git找到application-first.yml文件,读取自己的配置;
再启动服务提供者,first.zuul,zuul先注册到eureka,读取config配置,再到Git找到application-first.yml文件,读取自己的配置;
以上配置并不是启动成功就可以执行,本身需要向eureka注册服务、其他组件会定时拉取eureka注册列表。 - eureka服务器地址:http://localhost:7001
服务调用:http://localhost:9501/enjoy-api/consumer-proxy/product/get/1
服务调用:http://localhost:9501/enjoy-api/consumer-proxy/product/find/aa
provider异常回调:http://localhost:9501/enjoy-api/consumer-proxy/product/get/123
provider异常回调:http://localhost:9501/enjoy-api/consumer-proxy/product/find/aaa
Eureka介绍
Eureka提供了基于rest的服务,在集群中主要用于服务管理,将业务组件注册到eureka容器中,这些组件就可以进行集群部署,eureka主要维护这些服务的列表并自动检测他们的状态。
服务提供者
eureka客户端的服务提供者,主要进行以下工作:第一,向服务器注册服务;第二,发送心跳给服务器;第三,向服务器端获取注册列表。当客户端注册到服务器时,他会提供一些关于自己的注册信息给服务器,列如自己的主机、端口号、健康监测连接等。
心跳检测配置
- 客户端的实例会向服务端发送周期性的心跳,默认是30秒发送一次,可以通过修改客户端的eureka.instance.lease-renewal-interval-in-seconds属性来改变这个值。
- 服务器端接收心跳请求,如果在一定期限内没有接收到服务实例的心跳,那么会将实例从注册表中清理掉,其他的客户端将会无法访问这个实例。这个期限的默认值是90秒,可以通过修改客户端的eureka.instance.lease-expiration-duration-in-seconds属性来改变这个值。也就是说服务器90秒没有收到客户端的心跳,就会将这个实例从列表中清理掉。但需要注意的是,清理注册表有一个定时器在执行,默认是60秒执行一次。
eureka.instance.lease-renewal-interval-in-seconds:指示eureka客户端需要向eureka服务器发送心跳以指示它仍然存在的频率(以秒为单位),默认30秒。
eureka.instance.lease-expiration-duration-in-seconds:eureka服务器在接收到最后一个心跳之后等待的时间(秒),然后才能从此视图中删除此实例,默认90秒。
自我保护机制
- 自我保护机制的工作机制是如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制。
- 需要注意的是,如果开起来自我保护机制,则实例不会被剔除。在测试时,可以关闭自我保护机制,在服务器中配置:eureka.server.enable-self-preservation=false。
eureka.server.enable-self-preservation:自我保护机制,默认开启true。
eureka.server.eviction-interval-timer-in-ms:服务器清理实例的时间间隔,单位毫秒,默认是60秒
客户端到服务器抓取注册表时间间隔
在默认情况下,客户端每隔30s去服务器抓取注册表(可用的服务列表),并且将服务端的注册表保存到本地服务中,可以通过修改eureka.client.registry-fetch-interval-seconds配置来改变注册表抓取间隔。
eureka.client.registry-fetch-interval-seconds:抓取注册表时间间隔,默认30s