欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

eureka 自我保护机制

发布时间:2023/12/20 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 eureka 自我保护机制 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、自我保护模式开启的条件是:1 分钟后,若 Renews (last min) < Renews threshold,那么开启自我保护机制。

Renews threshold表示:Eureka Server 期望每分钟收到客户端实例续约的阈值。
Renews(last min)表示:Eureka Server 最后 1 分钟收到客户端实例续约的总数。

Renews threshold = 服务实例总数 *(60/续约间隔)*自我保护续约百分比阈值因子(默认0.85)。

Renews(last min) = 服务实例总数 * (60/续约间隔)

2、自我保护关闭
适用于开发阶段:假设某一个客户端(微服务)宕机了,会及时被服务端剔除掉,不会长期保留这个已宕机服务实例,影响我们开发时判断。

eureka server端
application.properties

#关闭自我保护 eureka.server.enable-self-preservation=false #超时3s自动清除 eureka.server.eviction-interval-timer-in-ms=3000

eureka client端
application.properties

#用来修改eureka server默认接受心跳的最大时间 默认是90s eureka.instance.lease-expiration-duration-in-seconds=10 #指定客户端多久向eureka server发送一次心跳 默认是30s eureka.instance.lease-renewal-interval-in-seconds=5

 
编写这两个配置的作用:

首先,server关闭自我保护机制,但如果client不做配置的话,发现尽管client宕机了,过了很久一段时间还是没有剔除client的注册实例,我本人听到的解释是心跳是双方面的,server单方面关闭自我保护机制还不管用,所以client端也要编写配置和server端配合使用,eureka.instance.lease-expiration-duration-in-seconds=10把统计心跳的周期改为10秒,10秒统计一次心跳数,eureka.instance.lease-renewal-interval-in-seconds=5是5秒发一次心跳,所以一个周期(10秒)就可以发两次心跳,那只要哪怕有一次发送心跳失败,就是1/2=50% < 85%,就会剔除服务实例。

注意:这两个配置一定要配合使用,如果不关闭自我保护机制,只是编写client端配置的话,即使client端宕机了,也不会及时剔除服务实例。

总结

以上是生活随笔为你收集整理的eureka 自我保护机制的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。