Eureka自我保护机制

Eureka的自我保护模式是一种在网络分区故障时确保服务注册信息稳定的机制。在该模式下,即使Eureka Server收不到心跳,也不会注销服务实例,避免因网络问题误删健康服务。触发条件是短时间内大量客户端丢失,进入保护模式后,Eureka不再剔除服务。关闭自我保护可通过设置`enable-self-preservation`为`false`。此机制遵循CAP理论的AP原则,保证高可用性。
摘要由CSDN通过智能技术生成

自我保护机制是什么

访问Eureka主页时,如果看到这样一段大红色的句子:

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

在自我保护模式中,eureka server会保护服务注册表中的信息,不在注销任何服务实例。
它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例,一句话理解,好死不如赖活着。

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

保护模式主要用于一组客户端和eureka server之间存在网络分区场景下的保护,一旦进入了保护模式, eureka server将会尝试保护其服务注册表中的信息,不会在删除服务注册表中的数据,也就是不会注销任何微服务。简单的说,就是在某一时刻,某一个微服务突然不可用了,eureka server不会立刻清理,而是依旧对该微服务的信息进行保存。属于CAP理论的AP分支。

导致原因

为什么会有这种自我保护机制?
为了防止eureka client可以正常运行,但是eureka server网络不通畅的情况下,eureka server不会立刻将eureka client 服务剔除

禁止自我保护

默认eureka server开启了自我保护,怎么关闭了?
在eureka server端7001的application.yml添加配置

server:
    enable-self-preservation: true  #禁用自我保护模式
    eviction-interval-timer-in-ms: 2000  #默认是90秒 改为2秒

在进去eureka server注册中心就看不到红字了,就成功关闭了自我保护。

 cloud-provider-payment8001 provider关闭自我保护

 instance:
    #客户端系那个服务端发送心跳的时间间隔,单位为秒(默认30s)
    lease-expiration-duration-in-seconds: 1
    #服务端在收到最后一次心跳后等到时间上限,单位为秒,默认为(90s)。超时剔除服务
    lease-renewal-interval-in-seconds: 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

残雪飞扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值