IIWAB Eureka 的 Renew 机制 - IIWAB

Eureka 的 Renew 机制

IIWAB 12天前 ⋅ 43 阅读
  • 工作原理
    • 客户端流程:当Eureka Client启动后,会默认每30秒向Eureka Server发送一次续约请求,请求路径为“/eureka/apps/{appName}/{instanceId}”,请求参数包含实例ID、应用名称、IP端口、上次续约时间戳等关键信息。如果续约失败,客户端会根据“eureka.client.renewal-throttle-factor”参数调整重试策略。
    • 服务端流程:Eureka Server接收到续约请求后,会更新实例的“lastUpdateTimestamp”字段,并向客户端返回响应。正常情况下返回200 OK,异常时返回404 Not Found或500 Internal Server Error。同时,Server会启动一个定时任务,默认每60秒执行一次,检查每个实例的最后一次心跳时间是否超过90秒(默认的租约有效期),如果超过则认为该服务实例过期,需要将其从服务注册表中剔除。
  • 关键参数配置
    • eureka.instance.leaseRenewalIntervalInSeconds:客户端续约间隔时间,默认值为30秒。缩短该间隔可提高服务存活检测灵敏度,但会增加网络开销。
    • eureka.instance.leaseExpirationDurationInSeconds:服务过期时间,默认值为90秒。超过此时间未收到续约则标记为过期。
    • eureka.server.evictionIntervalTimerInMs:服务剔除定时任务间隔,默认值为60000毫秒,即60秒,用于控制过期服务的扫描频率。
    • eureka.server.enableSelfPreservation:是否开启自我保护模式,默认值为true。当15分钟内续约成功率低于85%时,Eureka Server会自动进入自我保护模式。
  • 自我保护模式:在自我保护模式下,Eureka Server不再主动剔除因长期没收到心跳请求的服务,而是维持服务列表的稳定,以防止因网络故障等原因导致大量服务被误删。同时,Server依然可以接收新服务的注册和查询请求,但不会将这些信息同步到集群的其他节点。当15分钟内续约成功率恢复到阈值以上时,Eureka Server会自动退出自我保护模式。

全部评论: 0

    我有话说: