Eureka
Understanding eureka client server communication
https://github.com/Netflix/eureka/wiki/Understanding-eureka-client-server-communication
延伸阅读:
SpringCloud微服务如何优雅停机及源码分析
Spring Cloud Eureka 服务实现不停机(Zero-downtime)部署
客户端:
更新:
向Eureka Server发送心跳(默认 30 秒)
获取注册表:
Eureka 客户端从服务器获取注册表信息并将其缓存在本地。之后,客户端使用该信息来查找其他服务。通过获取上次获取周期和当前获取周期之间的增量更新,此信息会定期(每 30 秒)更新一次。增量信息在服务器中保存的时间更长(大约 3 分钟),因此增量提取可能会再次返回相同的实例。Eureka 客户端自动处理重复信息。
获取增量后,Eureka 客户端通过比较服务器返回的实例计数来与服务器协调信息,如果由于某种原因信息不匹配,则再次获取整个注册表信息。Eureka 服务器缓存 deltas、整个注册表和每个应用程序的压缩负载,以及未压缩的信息。有效负载还支持 JSON/XML 格式。Eureka 客户端使用 jersey apache 客户端获取压缩 JSON 格式的信息。
取消:
Eureka 客户端在关闭时向 Eureka 服务器发送取消请求。这会从服务器的实例注册表中删除实例,从而有效地使实例脱离流量。
这是在 Eureka 客户端关闭时完成的,应用程序应确保在其关闭期间调用以下代码。
DiscoveryManager.getInstance().shutdownComponent()
时差:
来自 Eureka 客户端的所有操作可能需要一些时间才能反映在 Eureka 服务器中,随后会反映在其他 Eureka 客户端中。这是因为 eureka 服务器上的负载缓存会定期刷新以反映新信息。Eureka 客户端也会定期获取增量。因此,将更改传播到所有 Eureka 客户端可能需要长达 2 分钟的时间。
服务端:
N个心跳周期内,没有接收到某个节点的心跳(默认 90秒),剔除该节点
根据心跳数据更新该服务的健康状态并复制到其他Server中,
自我保护机制:短时间内,阈值15%(续订率低于为该值配置的百分比(15 分钟内低于 85%)),可能是网络故障,开启保护模式(不再剔除任何服务节点)
默认情况下启用自保, eureka.enableSelfPreservation=false
浙公网安备 33010602011771号