spring cloud:eureka源码之我见(六)服务续约(心跳)

eureka client每隔一定的时间,会给eureka server发送心跳,保持心跳,从而让eureka server感知到自己的存活。

eureka client服务续约流程:

(1)服务续约流程肯定是在eureka client初始化的时候开始执行,这样才能保证eureka server正常感知到服务存活。在DiscoveryClient(eureka client)初始化的时候,会去调度一堆定时任务,其中一个就是HeartbeatThread,心跳线程。

(2)在 HeartbeatThread的renew()方法中,eureka client向eureka server发送了心跳的http请求。走的是EurekaHttpClient的sendHeartbeat()方法,http://localhost:8080/v2/apps/ServiceA/i-000000-1,put请求。

(3)server端负责承接心跳请求的是ApplicationsResource,然后找到ApplicationResource,最后找到InstanceResource,通过put请求,定位到renewLease()方法。

(4)通过注册表registry的renew()方法,完成服务续约。实际进去调用的是父类的renew()方法。

(5)根据服务名和实例id,找到对应的Lease<InstanceInfo>。而实例的服务续约的逻辑,其实就是在Lease对象中更新lastUpdateTimestamp时间戳。每次续约,就更新一下这个时间戳。

(6)在续约成功之后,保存自己最新一次心跳的时间戳

lastSuccessfulHeartbeatTimestamp = System.currentTimeMillis();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值