栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Eureka自我保护机制

Eureka自我保护机制

1、自我保护机制介绍

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

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

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

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

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

Renews threshold :Eureka Server 期望每分钟收到客户端实例续约的总数
Renews (last min) :最后一分钟收到的客户端实际的续约总数

当 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 启动的时候

com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl#openForTraffic

2、服务注册的时候

com.netflix.eureka.registry.AbstractInstanceRegistry#register

3、取消注册的时候
com.netflix.eureka.registry.AbstractInstanceRegistry#internalCancel

4、每15分钟定时刷新

com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl#scheduleRenewalThresholdUpdateTask


com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl#updateRenewalThreshold

5、弊端和处理方式

一旦触发了自我保护机制,可能会造成一些错误服务的调用,如果 不希望此类情况的出现,我们可以采取以下处理方式
处理方式一
在 Eureka Server 中添加配置 eureka.server.enable-self-preservation=false

处理方式二
降低自我保护续约百分比阈值 eureka.server.renewal-percent-threshold=0.5

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/742287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号