【微服务】Eureka的自我保护机制

Eureka的自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮,稳定的运行。

在正常情况下,Eureka客户端会定期向Eureka服务器发送心跳,以表明它仍然存活和可用。如果Eureka服务器在配置的时间间隔内未能从某个服务器实例收到心跳,它通常会将该实例从注册列表中移除,认为该实例不可用。

然而,在自我保护模式下,如果Eureka服务器在短时间内丢失了对大量服务实例的心跳(15分钟超过85%的客户端),它会认为这是一个网络问题,而不是所有这些服务实例都突然不可用。因此,服务器将进入自我保护模式。

当进入自我保护模式时,会存在以下行为:

  • 停止移除服务实例:Eureka服务器在自我保护模式下不会因为缺少心跳而移除任何服务实例,即使服务实例停止发送心跳,它们仍然会被保留在注册表中。
  • 保持服务注册表状态:这可以确保在网络故障恢复后,服务消费者仍然能够发现所有原先注册的服务实例,无需等待这些实例重新注册和上线。
  • 记录状态和警告:Eureka服务器会在其状态页面上显示它是否处于自我保护模式,并显示相关的警告信息。

Eureka的自我保护模式是可配置的。可以通过配置参数来调整何时触发自我保护模式,或完全关闭此功能。例如,可以通过修改 eureka.server.enable-self-preservation 的配置值来开启或关闭自我保护模式。

复制代码
eureka:
  server:
    enable-self-preservation: true

自我保护模式默认是开启的,因为它可以在网络不稳定的环境中提供更稳定的服务发现功能。不建议在生产环境中关闭自我保护模式。

当Eureka进入自我保护模式之后,我们可以做以下几个事情解除这种自我保护:

  1. 确保客户端可用性:
    1. 确保所有客户端实例都运行正常,并且网络连接正常,无阻塞或延迟过高。
    2. 检查客户端与 Eureka Server 之间的网络连接是否稳定。
  2. 等待自动恢复:
    1. 正常的情况下,等待网络恢复后,Eureka Server 会自动关闭自我保护模式。
  3. 重启 Eureka Server:
    1. 如果问题仍然存在,尝试重启 Eureka Server。有时候,重启可以解决暂时的问题或状态不一致。
  4. 调整自我保护模式的阈值:
    1. 检查 eureka.server.enableSelfPreservation 配置项,确保它被设置为 true,这是自我保护模式的开启 开关。
    2. 你可以调整 eureka.server.renewalPercentThreshold 来改变触发自我保护模式的阈值。
  5. 查看日志排查问题:
    1. 查看 Eureka Server 和客户端的日志,找出可能导致问题的具体原因。
  6. 关闭自我保护模式:
    1. 使用eureka.server.enable-self-preservation=false来禁用自我保护模式,测试环境可以配置,生产不 建议。
相关推荐
程序员岳焱4 分钟前
Java 高级泛型实战:8 个场景化编程技巧
java·后端·编程语言
钢铁男儿14 分钟前
C# 类和继承(扩展方法)
java·servlet·c#
饮长安千年月20 分钟前
JavaSec-SpringBoot框架
java·spring boot·后端·计算机网络·安全·web安全·网络安全
移动开发者1号21 分钟前
Android 大文件分块上传实战:突破表单数据限制的完整方案
android·java·kotlin
代码匠心22 分钟前
从零开始学Flink:揭开实时计算的神秘面纱
java·大数据·后端·flink
上海运维Q先生28 分钟前
Cilium动手实验室: 精通之旅---11.Advanced BGP Features - Lab
云原生·k8s·cilium
jie1889457586637 分钟前
C++ 中的 const 知识点详解,c++和c语言区别
java·c语言·c++
网安INF42 分钟前
RSA加密算法:非对称密码学的基石
java·开发语言·密码学
蔡蓝1 小时前
设计模式-观察着模式
java·开发语言·设计模式
大咖分享课1 小时前
容器安全最佳实践:云原生环境下的零信任架构实施
安全·云原生·架构