第五章: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界面中删除其中宕机的服务。

 

posted on 2018-12-07 15:05  唯伊  阅读(148)  评论(0)    收藏  举报

导航