Eureka自我保护机制

某时刻某个服务不可以用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存

  • 默认情况下,如果EurekaServer在一定时间内没有接收到某个服务实例的心跳,EurekaServer将会注销该实例(90s),但是当网络分区发生故障时,微服务与Eureka之间无法正常通行,以上行为可能变得非常危险了,因为微服务本身是健康的,此时不应该注销这个服务。Eureka通过自我保护机制来解决这个问题。

即当EurekaServer节点在短时间内丢失过多客户端时,那么这个节点就会进入自我保护模式,一旦进入该模式,EurekaServer就会保护服务注册表的信息,不再删除服务注册表的数据(也就是不会销毁任何微服务),当网络故障恢复后,该EurekaServer节点会自动退出自我保护模式

  • 在自我保护模式中,EurekaServer会保护服务注册表中的信息,不在销毁任何服务实例,当它收到的心跳数重新恢复到阙值以上时,该EurekaServer节点就会自动退出自我保护模式。

它的设计哲学就是宁可保留错误的服务注册信息,也不盲目销毁任何可能健康的服务实例(好死不如赖活着)

  • 自我保护模式是一种应对网络异常的安全保护措施,它的架构哲学时宁可保留所有的微服务(健康的和不健康的都会保留),也不盲目销毁任何健康的微服务,使用自我保护模式,可以让Eureka集群更加的健壮和稳定

  • 在SpringCloud中,可以使用 eureka.server.enable-self-preservation = false 禁用自我保护模式【不建议关闭】

posted @ 2021-12-07 16:33  一刹流云散  阅读(204)  评论(0编辑  收藏  举报