0
点赞
收藏
分享

微信扫一扫

Eureka自我保护机制

一世独秀 2022-02-17 阅读 52

1、自我保护机制介绍

Eureka Server 在运行期间会去统计心跳失败的比例在5分钟内是否低于85%,如果低于85%,Eureka Server 会认为当前实例的客户端与自己的心跳连接出现了网络故障,那么Eureka Server 会把这些实例保护起来,让这些实例不会过期导致实例被剔除。

这样做的目的是为了减少网络不稳定或者网络分区的情况下,Eureka Server 将健康的服务剔除下线的问题。使用自我保护机制可以使得 Eureka 集群更加健壮和稳定地运行。

2、处于自我保护阶段会出现如下两种情况

1、 Eureka Server 不再从注册列表中移除因为长时间没有收到心跳而应该剔除的过期服务。
2、 Eureka Server 仍然能够接受新服务的注册和查询请求,但不会被同步到其他节点上,保证当前节点依然可用。

3、自我保护机制触发的条件参数

在这里插入图片描述

当 Renews < Renews threshold 时会触发 Eureka Server 的自我保护机制。
下图是触发了 Eureka 的自我保护机制后的现象:
在这里插入图片描述

4、参数值的计算公式

Renews threshold = 服务总数 * 每分钟续约数量(60s/客户端的续约间隔)* 自我保护续约百分比阈值因子

服务总数为4,客户端的续约间隔默认为30s,自我保护续约百分比阈值因子默认为85%,带入计算可得 4 * 2 * 0.85 = 6.8 —>> 取整得 6。
如果 Renews 大于 6 表示 Eureka Server 处于正常状态。

更新 Renews threshold 的几个地方:

1、Eureka Server 启动的时候

2、服务注册的时候

4、每15分钟定时刷新

5、弊端和处理方式

一旦触发了自我保护机制,可能会造成一些错误服务的调用,如果 不希望此类情况的出现,我们可以采取以下处理方式
处理方式一
在 Eureka Server 中添加配置 eureka.server.enable-self-preservation=false
在这里插入图片描述
处理方式二
降低自我保护续约百分比阈值 eureka.server.renewal-percent-threshold=0.5
在这里插入图片描述

举报

相关推荐

0 条评论