Eureka,是基于REST(Representational State Transfer)的服务,主要在AWS云中用于服务注册、发现,实现负载均衡和中间服务器的故障转移,我们一般称其为Eureka服务器。
Eureka的配置: 客户端程序:使用eureka client向服务器发送请求 服务端程序:接收客户端
Eureka的自我保护机制 当Eureka服务器检测到超过预期数量的客户端,正以不正当的方式终止连接并同时等待被逐出时,eureka服务器会进入自我保护模式。这样做的目的是为了防止出现灾难性的网络事件时,不会将eureka注册表中的数据清除,并将其传播到下游所有的客户端。即eureka认为超过预期数量的客户端同时下线是不正常的,此时会启动自我保护机制。
处于自我保护模式时,eureka服务器将停止逐出所有实例,直到发生以下任何一种情况:
- 心跳续订次数又回到了预期的阈值之上
- 自我保护功能被禁用 默认情况下自我保护状态是启用的,并且自我保护机制被触发的阈值默认为0.85
eureka协议要求,客户端在结束注册生命周期时,要主动执行明确的注销操作。
在生产环境中,如果eureka由于某种合理的原因进入了自我保护,则可以通过配置暂时禁用自我保护机制来强制服务器退出自我保护模式。eureka认为在这种情况下,需要人工干预并采取适当的措施。
相关配置:
eureka.server.enableSelfPreservation: true (是否开启自我保护,默认true) eureka.server.renewalPercentThreshold: 0.85 (设置自我保护的阈值,超过该值启动自我保护,取值范围为0.0-1.0,enableSelfPreservation为true时生效)
Eureka与自我保护机制相关的两项数据 Renews threshold 和 Renews (last min)。
Renews threshold,Eureka服务器期望每分钟最少收到服务实例心跳的总数。
公式:Renews threshold = 当前注册的服务实例总数 * 2 * renewalPercentThreshold
其中 * 2,是因为Eureka中每个实例每30秒1次心跳,1分钟即2次心跳; renewalPercentThreshold为更新阈值百分比,默认0.85
Renews (last min),Eureka服务器最近1分钟收到的服务器实例心跳的总数。