V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cheng6563
V2EX  ›  Java

Eureka 把服务踢下线后多久关闭服务最安全?

  •  
  •   cheng6563 · 2020-07-17 18:19:03 +08:00 · 2791 次点击
    这是一个创建于 1585 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我记得有个文章专门说明了这个问题,一下找不到了,有没有老哥有印象收藏了。
    5 条回复    2020-07-21 18:46:28 +08:00
    hcx0
        1
    hcx0  
       2020-07-17 20:26:08 +08:00
    默认最极端情况
    定时清理任务 60s
    3 个心跳周期 90s
    消费端缓存 90s

    这玩意儿应该在消费端做容错处理,不应该完全依赖注册中心来发现
    Kyle18Tang
        2
    Kyle18Tang  
       2020-07-17 20:57:44 +08:00
    这个要看设置的, 默认的时间有点长...
    jjed0119cs04
        3
    jjed0119cs04  
       2020-07-21 15:35:51 +08:00
    正确得做法应该是,服务下线的时候不要 kill -9,让服务关闭之前调用 eureka 的 shutdownHook 。然后 eurekaClient 还有一个本地缓存,还有可能被访问到这个服务,简单的做法是 shutdownhook 调用了之后先不关 docker,延迟 30s 左右再关。
    jjed0119cs04
        4
    jjed0119cs04  
       2020-07-21 16:55:16 +08:00
    @jjed0119cs04 很久了,才想起记错了难受,,eureka client 的缓存会被 eureka server 的广播清理的, 会保留的是 eureka 的 ReadOnlyCache,这个是不会主动清理的,方法还是一样,延迟 30s 后再关闭。让这 readyOnly 没被清理的 30s 正好被访问到不会出现服务访问不到的情况。
    cheng6563
        5
    cheng6563  
    OP
       2020-07-21 18:46:28 +08:00 via Android
    @jjed0119cs04 以 eureka 是会主动通知 client 的吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:24 · PVG 04:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.