Eureka自我保护

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

概述



保护模式主要用于一组客户端和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 EXPIRED JUST TO BE SAFE  


2b414d1cd2da4aadacb0795d5e155fc6.png


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



为了防止EurekaClient可以正常运行,但是 与 EurekaServer网络不通情况下,EurekaServer不会立刻将EurekaClient服务剔除


什么是自我保护模式?



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


74cb3d5284914cdea6f4143116600c68.png


配置代码修改说明



出厂默认,自我保护机制是开启的

eureka.server.enable-self-preservation=true
使用eureka.server.enable-self-preservation = false 可以禁用自我保护模式
 server:
    #关闭自我保护机制,保证不可用服务被及时踢除
       enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000
 instance:
  #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
  #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2


相关文章
|
安全 微服务
(七)、Eureka自我保护
(七)、Eureka自我保护
(七)、Eureka自我保护
|
4月前
|
缓存 负载均衡 监控
SpringCloud&Eureka理论与入门
SpringCloud&Eureka理论与入门
38 0
|
安全 Java 开发者
Eureka 自我保护机制介绍|学习笔记
快速学习 Eureka 自我保护机制介绍
77 0
Eureka 自我保护机制介绍|学习笔记
|
XML 缓存 算法
【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(下)
【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(下)
178 0
|
存储 缓存 安全
【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(上)
【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(上)
86 0
|
安全 Java 微服务
Spring Cloud Eureka 全解 (5) - 自我保护机制
Spring Cloud Eureka 全解 (5) - 自我保护机制
Spring Cloud Eureka 全解 (5) - 自我保护机制
SpringCloud - Eureka 自我保护机制
SpringCloud - Eureka 自我保护机制
160 0
SpringCloud - Eureka 自我保护机制