服务注册发现:Eureka源码剖析(9)核心机制之服务实例的自动故障感知及自动摘除机制

侯乾 Lv4
  • 故障感知和摘除指的是什么?
    正常下线,会通过eureka client的shutdown方法进行,走下线流程。
    当因为一些原因,没有通过正常下线的方式,服务实例却下线了,这种异常情况,成为故障。
    感知,eureka server会通过定时检查多久没心跳了,感知到这种故障服务实例,并自动从注册表中把这个服务实例摘除。
  • eureka的自动故障感知和自动摘除机制

    在eureka server启动的最后一步,openForTraffic中,最后一步super.postInit()方法里,启动了一个定时过期任务evictionTask

    • 定时过期任务延迟1分钟开始执行,然后每间隔1分钟执行一次
    • 该任务会遍历本地注册表里,所有超过3分钟没有心跳的服务实例,将这些服务实例收集起来,这一步算是完成了自动感知机制
    • 默认情况下,一次性最多只会过期15%的服务实例
    • 每个服务实例的剔除,是从收集到的过期服务实例列表里随机选择的,最多选择15%个
    • 接着正式执行每个服务实例的剔除操作
      • 从本地注册表里摘除这个故障实例(这一步算是完成了自动摘除机制了)
      • 将这个实例放到最近下线队列里
      • 从overriddenInstanceStatusMap中移除
      • 将这个实例放到最近变更队列里
      • 失效响应缓存(就是那个注册表多级缓存)
  • Title: 服务注册发现:Eureka源码剖析(9)核心机制之服务实例的自动故障感知及自动摘除机制
  • Author: 侯乾
  • Created at : 2020-03-03 19:26:18
  • Updated at : 2020-03-03 19:26:18
  • Link: http://houqian.github.io/2020/03/03/服务注册发现:Eureka源码剖析(9)核心机制之服务实例的自动故障感知及自动摘除机制/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
服务注册发现:Eureka源码剖析(9)核心机制之服务实例的自动故障感知及自动摘除机制