服务下线后,失效剔除速度过慢如何解决?
第一步:服务下线,eureka server端失效剔除的流程
一个服务出现了故障,eureka server端如何发现它挂了,并把它从服务注册列表中删除掉?
1、client端发送给server端的心跳
2、server端启动的定时线程去检查client端是否在规定时间内发送了心跳,如果没有发送就认为该服务出现了故障。
3、将服务信息从server服务注册列表清除
4、readWrite缓存信息清除
5、readWrite缓存与readOnly缓存同步
6、client端拉取readOnly缓存的时间间隔设置
线上册数设置,工作中的一些配置,大家可以根据自己的情况灵活调整
client微服务端设置的参数:
1、心跳续约时间,默认是30s,我们设置为10s
# 心跳检测检测与续约时间
lease-renewal-interval-in-seconds: 10
2、服务失效剔除的时间间隔
# 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
lease-expiration-duration-in-seconds: 20
Eureka server端参数设置
1、移除队列里过期的租约变更记录的定时任务执行频率
#移除队列里过期的租约变更记录的定时任务执行频率,单位:毫秒。默认值 :30 * 1000 毫秒。
eviction-interval-timer-in-ms: 3000
2、客户端拉取readOnly缓存的时间间隔,默认是30s,可以根据需要调整,我们线上是使用的10s
eureka.client.registry-fetch-interval-seconds=30
3、readWrite缓存到readOnly缓存的同步时间,调整eureka的server端配置参数
对应的配置参数,#只读缓存更新频率,单位:毫秒,默认是30s,我们线上使用的是3s钟
response-cache-update-interval-ms: 3000