第五章:Eureka服务保护
1、服务保护模式
服务保护模式(自我保护模式):一般情况下,微服务在Eureka上注册后,会每30秒发送心跳包,Eureka通过心跳来判断服务时候健康,同时会定期删除超过90秒没有发送心跳服务。
导致Eureka Server接收不到心跳包的可能:一是微服务自身的原因,二是微服务与Eureka之间的网络故障。通常微服务的自身的故障只会导致个别服务出现故障,一般不会出现大面积故障,而网络故障通常会导致Eureka Server在短时间内无法收到大批心跳。虑到这个区别,Eureka设置了一个阀值,当判断挂掉的服务的数量超过阀值时,Eureka Server认为很大程度上出现了网络故障,将不再删除心跳过期的服务。
那么这个阀值是多少呢?Eureka Server在运行期间,会统计心跳失败的比例在15分钟内是否低于85%,如果低于85%,Eureka Server则任务是网络故障,不会删除心跳过期服务。
而这种服务保护算法叫做Eureka Server的服务保护模式。
2、服务保护模式的存在必要性
因为同时保留"好数据"与"坏数据"总比丢掉任何数据要更好,当网络故障恢复后,Eureka Server会退出"自我保护模式"。
Eureka还有客户端缓存功能(也就是微服务的缓存功能)。即便Eureka Server集群中所有节点都宕机失效,微服务的Provider和Consumer都能正常通信。
微服务的负载均衡策略会自动剔除死亡的微服务节点。
3、关闭服务保护模式
# 关闭自我保护:true为开启自我保护,false为关闭自我保护 eureka.server.enableSelfPreservation=false # 清理间隔(单位:毫秒,默认是60*1000),当服务心跳失效后多久,删除服务。 eureka.server.eviction.interval-timer-in-ms=60000
测试过程
1、单机eureka启动服务,启动一个服务提供者,此时关闭服务提供者。大概过2分30秒时间,此时会出现服务保护机制。
2、单机eureka启动服务,启动七个服务提供者,此时关闭其中一个服务提供者。大概过2分30秒时间,此时eureka界面中删除其中宕机的服务。
浙公网安备 33010602011771号