最新文章

神秘的 Eureka 自我保护

神秘的 Eureka 自我保护

本文翻译自The Mystery of Eureka Self-Preservation 根据CAP定理, Eureka是一个AP系统, 这就导致了在网络分区期间多个注册表中的信息不一致. 自我保护功能则是为了尽可能降低这种不一致. 自我保护的定义 自我保护(self preservation)是Eureka的一项功能, Eureka注册表在未收到实例的心跳情况超过一定阈值时停止驱逐过期的实例. 从一个健康的系统开始 把下面看成一个健康的系统 假设所有的微服务都处于健康的状态并成功注册到Eureka注册表中. 多个注册表间会同步注册表记录, 所有的微服务实例都处于UP状态. 假设实例2从注册中心发现里实例4, 并调用实例4上的服务. 突发网络分区 假设出现了网络分区, 系统变成下面的状态. 由于网络分区, 实例4和5丢失了注册中心的连接, 但是实例2仍然可以连接到实例4. Eureka服务端因为没有收到实例4和5的心跳(超过一定时间后), 将他们驱逐. 然后Eureka服务端意识到突然丢失了超过15%(2/5)的心跳, 因此其进入自我保护模式 从此时开始, Eureka服务端不在驱逐任何实例, 即使实例真正的下线了. 实例3下线, 但其始终存在注册表中. 但此时注册表还会接受新实例的注册. 自我保护的基本原理 自我保护功能在下面两种情况下是合理的: Eureka服务端因为弱网分区问题没有收到心跳(这并不意味着客户端下线), 但是这种问题可能会很快被修复. 即使Eureka服务端和客户端的连接断开, 客户端间还可以继续保持连接.

About Me

张晓辉

英文名 Addo。 资深程序员,LF APAC 开源布道师,CNCF Ambassador,云原生社区管委会成员,公众号“云原生指北”作者,微软 Azure MVP。 曾任职于汇丰软件、唯品会、数人云、小鹏汽车,有多年的微服务和基础架构实践经验,主要工作涉及微服务、容 …

进一步了解