eureka 源码分析三--InstanceInfo 中OverriddenStatus的作用

1. eureka server端实例存储结构

ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>
其中key = appName,value = ConcurrentHashMap

//存储覆盖状态
protected final ConcurrentMap<String, InstanceStatus> overriddenInstanceStatusMap = CacheBuilder
        .newBuilder().initialCapacity(500)
        .expireAfterAccess(1, TimeUnit.HOURS)
        .<String, InstanceStatus>build().asMap();
1.1 eureka server status
状态 描述
starting 实例初始化状态,此状态主要给实例预留初始化时间
down 当健康检查失败时,实例的状态转变到down
up 正常服务状态
out_of_service 不参与接收服务 。但是服务正常
unknown 未知状态
1.2 与server status有关的方法
方法 描述 调用场景
register 注册实例 1.实例启动的时候开始注册;2.心跳404时开始注册实例
cancel 取消server注册的某一实例 客户端shutdown实例后,调用cancel
renew 续租请求 客户端定时心跳时调用该方法。deleteStatusOvrride方法调用后会触发renew续租失败,触发重新注册实例。
statusUpdate 状态更新方法 主要调用的时机时让此service下线,不在接收请求。或者让下线的服务重新上线。
deleteStatusOverride 移除实例的覆盖状态 实例的覆盖状态移除后,覆盖状态将变成unknown

2.假如InstanceInfo中只有status状态

  1. client端调用updateStatus更新实例状态到out_of_service 。即status = out_of_service。此时client的状态是up状态
  2. server端此实例的状态现在是out_of_service。并且标记responseCache无效。
  3. 客户端等待定时器定时更新实例的状态。但是由于时间间隔没有更
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值