spring cloud之Eureka
Region 表示aws的地理位置,一个region有多个awailability zone,各region间完全隔离。这种方式实现最大的容错和稳定性。
spring cloud 默认使用的region是us-east-1c,非aws下awailability zone理解成机房,region理解成跨机房的eureka集群。
Eureka client 周期性向eureka server发送心跳,默认30s
Eureka server 默认90没有收到微服务心心跳就注销
多个eureka server之间通过复制实现服务注册表中数据同步
Eureka client会缓存服务注册表,从而降低eureka server的压力,另外当eureka server宕掉也可以从缓存中找到服务提供者。
https://mp.weixin.qq.com/s/vwPstQ0R0s_PsEhZnALP9Q
Eureka 缓存机制
http://blog.itpub.net/69918724/viewspace-2643265/
Eureka 常用配置
https://zhuanlan.zhihu.com/p/63524849
Eureka Server 相关配置 eureka.server.xxx
-
eureka.server.enable-self-preservation 是否开启自我保护机制
-
eureka.server.renewal-percent-threshold 表示 Eureka Server 开启自我保护的系数,默认:0.85
-
eureka.server.eviction-interval-timer-in-ms 表示 Eureka Server 清理无效节点的频率,默认 60000 毫秒(60 秒)。
Eureka Instance 相关配置 eureka.instance.xxx
-
eureka.instance.instance-id 服务实例的唯一id,默认
${spring.application.name}.${spring.application.instance_id:${server.port}}
-
eureka.instance.prefer-ip-address
true: 实例以 IP 的形式注册
false: 实例以机器 HOSTNAME 形式注册
-
eureka.instance.appname 服务名,默认取 spring.application.name 配置值,如果没有则为 unknown
-
eureka.instance.lease-renewal-interval-in-seconds
表示 Eureka Client 向 Eureka Server 发送心跳的频率(默认 30 秒),如果在 lease-expiration-duration-in-seconds 指定的时间内未收到心跳,则移除该实例。
-
eureka.instance.lease-expiration-duration-in-seconds
表示 Eureka Server 在接收到上一个心跳之后等待下一个心跳的秒数(默认 90 秒),若不能在指定时间内收到心跳,则移除此实例,并禁止此实例的流量。
-
此值设置太长,即使实例不存在,流量也能路由到该实例
-
此值设置太小,由于网络故障,实例会被取消流量
需要设置为至少高于 lease-renewal-interval-in-seconds 的值,不然会被误移除了。
-
Eureka Client 相关配置 eureka.client.xxx
-
`eureka.client.fetch-registery
-
客户端是否从 Eureka Server 获取实例注册信息
-
eureka.client.registery-fetch-interval-seconds
-
eureka.client.register-with-eureka
表示此实例是否注册到 Eureka Server 以供其他实例发现。在某些情况下,如果你不想自己的实例被发现,而只想发现其他实例,配置为 false 即可。
-
eureka.client.serviceUrl.defaultZone