Eureka自我保护机制及服务离线

开课吧樵夫2021-09-26 11:24

    在前几篇中《创建Eureka服务中心》我们介绍了Eureka的心跳检测并创建了Eureka服务中心,本篇将承接前面的内容讲解Eureka的自我保护机制以及离线服务。

    自我保护机制

    通过阅读Eureka官网体系架构图下方的文档我们能够知道,eureka客户端,默认会每隔30秒发送一次心跳的eureka注册中心,如果在90秒内没收到一个eureka客户端的心跳,那么就摘除这个服务实例,消费者将无法访问这个服务实例了。

Eureka自我保护机制及服务离线

    但是很多情况下不是微服务节点有问题,而是出现了网络抖动等原因导致EurekaServer无法发现该微服务(检测不到该微服务主机的心跳),从而摘除这个服务实例。

    如果在短时间内EurekaServer摘除掉了较多的微服务(收到的心跳数量小于阈值),那么为了保证系统的可用性(AP),那些由于网络抖动被摘除的服务实例将会“复活”,Eureka自动进入自我保护模式。

    (服务列表只可读取、写入,不可执行删除操作。当EurekaServer收到的心跳数量恢复到阈值以上时,其会自动退出自我保护模式。)

    自我保护模式是自动开启的,可以在eurekaserver的配置文件中关闭,不建议关闭!(除非处于特殊状态,例如:测试)

# 关闭自我保护机制
eureka.server.enable-self-preservation: false

    关闭自我保护机制后可以设置server端剔除不可用服务的时间

# 设置server端剔除不可用服务的时间窗,单位毫秒
eureka.server.eviction-interval-timer-in-ms: 5000

    也可以修改不同服务实例发送心跳的周期

# 设置当前Client每1秒向Server发送一次心跳,单位秒
eureka.server.lease-renewal-interval-in-seconds: 1

    指定让Server认定当前Client已经失效的时间

# 指定让Server认定当前Client已经失效的时间,将来可以从注册表中剔除了,单位秒
eureka.server.lease-expiration-duration-in-seconds: 3

    自我保护的阈值因子默认为0.85,也就是说当EurekaServer接收到的心跳数量小于85%时自我保护机制就会自动开启。自我保护的阈值因子也可以在eurekaserver的配置文件中根据需求进行自定义。

# 自定义自我保护的阈值,默认为0.85
eureka.server.renewal-percent-threshold: 0.65

    配置完成后执行代码,刷新浏览器