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

 

posted on 2021-10-22 11:32  Persevere0730  阅读(69)  评论(0)    收藏  举报