Eureka的自我保护机制:
首先来说下CAP理论,关于分布式的架构都会涉及到CAP理论,Eureka用的AP设计,即高可用以及分区容错性
自我保护机制的工作机制是如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制
1、没有心跳也就是当某时刻某一个微服务不可用,Eureka仍然不会清理这个服务,仍然会保留,对该微服务信息进行保存,宁愿保留错误的微服务信息,也不愿注销可能会存活的微服务实例。
2、当某一个微服务死掉了或者不可用了,Eureka有一个时间,默认90秒,90秒如果还没恢复,Eureka将其注销
3、当节点(微服务)恢复的时候,再自动退出自我保护机制,同步到其他节点上
Eureka自我保护主要应对网络异常的一种安全保护措施,保留可用与不可用,不盲目注销,使用自我保护机制,可以让Eureka集群更加健壮、稳定,也就是上面提到的AP。这也是和Zookeeper的区别,不会像Zookeeper那样如果有一半不可用的情况会导致整个集群不可用而变成瘫痪。
在Spring Cloud中,可以在Eureka服务中心使用eureka.server.enable-self-preservation = false 禁用自我保护模式。在没有特定的业务场景下,但建议保留默认的