Eureka 学习 源码分析05 应用实例续租
2. Eureka-Client 发起续租
Eureka-Client 向 Eureka-Server 发起注册应用实例成功后获得租约 ( Lease )。
Eureka-Client 固定间隔向 Eureka-Server 发起续租( renew ),避免租约过期。
默认情况下,租约有效期为 90 秒,续租频率为 30 秒。两者比例为 1 : 3 ,保证在网络异常等情况下,有三次重试的机会
2.1 初始化定时任务
Eureka-Client 在初始化过程中,创建心跳线程,固定间隔向 Eureka-Server 发起续租( renew )
核心方法renew ,执行续租逻辑。如果返回的response为404,调用register注册
心跳请求如下,采用put请求Eureka-server
- 当
task
执行正常,TimedSupervisorTask 再次提交自己到scheduler
延迟timeoutMillis
执行。 - 当
task
执行超时,重新计算延迟时间( 不允许超过maxDelay
),再次提交自己到scheduler
延迟执行
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3. Eureka-Server 接收续租
3.1 接收续租请求
com.netflix.eureka.resources.InstanceResource
,处理单个应用实例信息的请求操作的 Resource ( Controller )。
续租应用实例信息的请求,映射 InstanceResource#renewLease()
方法
整个过程修改的租约的过期时间,即使并发请求,也不会对数据的一致性产生不一致的影响,因此像注册操作一样加锁。