Eureka自我保护.md

2022-08-22
0 1,327

概述

保护模式主要用于一组客户端和Eureka server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

如果在Eureka server的首页看到以下这段提示,则说明Eureka进入了保护模式:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPORED JUST TO BE SAFE

也就是说:某时刻某个微服务不可用了,Eureka也不会例可清理,依旧会对该微服务的信息进行保存。属于CAP里面的AP分支。

为什么产生Eureka自我保护机制

为了防止:EurekaClient正常运行,但是与EurekaServer网络不通。所以EurekaServer不会立刻将EurekaClient剔除。

什么是自我保护模式

默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认是90秒)。但是当网络分区故障(延时、卡顿、拥挤)发生时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实时健康的,此使本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当EurekaServer节点在短时间内丢失过多客户端时(可能发生网络故障),那么这个节点就会进入自我保护模式。

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