Eureka 心跳检测、自我保护机制、服务摘除机制的原理

1,013 阅读2分钟

「这是我参与 11 月更文挑战的第 17 天,活动详情查看:2021最后一次更文挑战」。

你好,我是悟空呀。

Eureka 注册中心的心跳机制和自我保护机制总是在面试的时候被问到,而且心跳机制在分布式组件中都有应用,非常有必要学习一波,而 Eureka 注册中心的心跳机制还是比较值得我们借鉴的,本篇总结了 Eureka 心跳机制、自我保护机制、服务摘除机制,一起来看下吧。

我们知道 Eureka 注册中心是通过心跳检测机制来判断服务是否可用的,如果不可用,可能会把这个服务摘除。为什么是可能呢?因为 Eureka 有自我保护机制,如果达到自我保护机制的阀值,后续就不会自动摘除。

这里我们可以再复习下 Eureka 的心跳机制、自我保护机制、服务摘除机制。

  • Eureka 心跳机制:每个服务每隔 30s 自动向 Eureka Server 发送一次心跳,Eureka Server 更新这个服务的最后心跳时间。如果 180 s 内(版本1.7.2 bug )未收到心跳,则任务服务故障了。

  • Eureka 自我保护机制:如果上一分钟实际的心跳次数,比我们期望的心跳次数要小,就会触发自我保护机制,不会摘除任何实例。期望的心跳次数:服务实例数量 * 2 * 0.85。

  • Eureka 服务摘除机制:不是一次性将服务实例摘除,每次最多随机摘除 15%。如果摘除不完,1 分钟之后再摘除。

说完 Eureka 的心跳机制和服务摘除机制后,我们来看下 Ribbon 的心跳机制。

作者简介:悟空,8年一线互联网开发和架构经验,用故事讲解分布式、架构设计、Java 核心技术。《JVM性能优化实战》专栏作者,开源了《Spring Cloud 实战 PassJava》项目,公众号:悟空聊架构。本文已收录至 www.passjava.cn