eureka
1 eureka-server集群是没有主从关系的,所有节点都可以写入,内部通过通信保证信息一致;
下面是同步策略
2 一个eureka-server每天的请求量测算
假设我们保持eureka-client心跳和拉取服务的时间间隔都保持默认值30s;
我们有20个服务,每个服务在现网部署5台实例,那么每分钟一个eureka-server接收的请求数最大为:20*5*2=200,每小时为:200*60=12000,每天为12000*24=288000
3 eureka满足CAP中的AP(A - 可用性 P - 分区容错性)
满足分区容错性的原因是,我们开启server的自我保护后,如果有个服务心跳发送失败了,server不会立即剔除这个服务,所以其它server就仍然可以从这个server来去到这个
服务,所以这个服务对用户来讲仍然是可用的,这就是分区容错性;
4 自我保护
如果设置的开启自我保护的阈值是80%,那么在有100台实例的情况下,如果有20个挂了则会将这20个剔除掉,这个时候就开启了自我保护,当第21个机器没有及时续约的话,则
不会剔除这个机器
5 eureka-server优化:
快速剔除,读取缓存设置为false
拉取间隔时间、心跳时间的优化
# 自我保护,看服务多少
enable-self-preservaltion = false
# 自我保护阈值
renewal-percent-threshold = 0.85
# 踢除服务时间间隔
eviction-interval-time-in-ms = 1000
#关闭从公readOnly读取注册表
use-read-only-response-cache = false
# readWrite和readOnly同步时间间隔
response-cache-update-interval=ms=1000
生产中问题:
1 优化目的:减少服务上下线的延时
2 自我保护选择:看网络和服务情况
3 服务更新:停止,在发送下线请求
6 eureka-client
注册和拉取服务列表的时候,默认使用配置的defaultZone中的第一个,只有第一个不正常才会从后面的注册和拉取;而且默认集群情况下eureka-server我们再现网部署3个就可以了,client中有一个默认的server个数的配置,默认值是3,如果不修改的话,即使配置3个以上,也只会使用配置的前三个,后面的几个不生效;
因为有上面的问题,所以在不同的client,我们需要在配置defaultZone的时候,需要在每个client里将defaultZone的顺序配置成不一样的,这样不用的客户端就会去不同的server-url注册和拉取服务列表,不会出现一个server的压力太大的问题
也就是下面的配置顺序在每个client里配置成不同的值:
defaultZone: http://localhost:7901/eureka/,http://localhost:7902/eureka/,http://localhost:7900/eureka/
需要优化的点:
刷新注册表(拉取注册表)间隔
心跳间隔