3.1 触发条件
当每分钟心跳次数( renewsLastMin
) 小于 numberOfRenewsPerMinThreshold
时,并且开启自动保护模式开关( eureka.enableSelfPreservation = true
) 时,触发自动保护机制,不再自动过期租约,实现代码如下:
计算公式如下:
expectedNumberOfRenewsPerMin
= 当前注册的应用实例数x
2numberOfRenewsPerMinThreshold
=expectedNumberOfRenewsPerMin
*
续租百分比(eureka.renewalPercentThreshold
)
为什么乘以 2
默认情况下,注册的应用实例每半分钟续租一次,那么一分钟心跳两次,因此 x 2
为什么乘以续租百分比
低于这个百分比,意味着开启自我保护机制。
默认情况下,eureka.renewalPercentThreshold = 0.85
。
如果你真的调整了续租频率,可以等比去续租百分比,以保证合适的触发自我保护机制的阀值。另外,你需要注意,续租频率是 Client 级别,续租百分比是 Server 级别。
3.3.1 Eureka-Server 初始化
Eureka-Server 在启动时,从 Eureka-Server 集群获取注册信息,并首次初始化 numberOfRenewsPerMinThreshold
、 expectedNumberOfRenewsPerMin
3.3.2 定时重置
Eureka-Server 定时重新计算 numberOfRenewsPerMinThreshold
、expectedNumberOfRenewsPerMin
3.3.3 应用实例注册
应用实例注册时,增加 numberOfRenewsPerMinThreshold
、expectedNumberOfRenewsPerMin
3.3.4 应用实例下线
应用实例下线时,减少 numberOfRenewsPerMinThreshold
、expectedNumberOfRenewsPerMin