Eureka 学习 源码分析05 应用实例续租

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 )

Eureka 学习 源码分析05 应用实例续租

核心方法renew ,执行续租逻辑。如果返回的response为404,调用register注册

心跳请求如下,采用put请求Eureka-server

Eureka 学习 源码分析05 应用实例续租

Eureka 学习 源码分析05 应用实例续租

  • 当 task 执行正常,TimedSupervisorTask 再次提交自己scheduler 延迟 timeoutMillis 执行。
  • 当 task 执行超时,重新计算延迟时间( 不允许超过 maxDelay ),再次提交自己scheduler 延迟执行

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3. Eureka-Server 接收续租

3.1 接收续租请求

com.netflix.eureka.resources.InstanceResource,处理单个应用实例信息的请求操作的 Resource ( Controller )。

续租应用实例信息的请求,映射 InstanceResource#renewLease() 方法

Eureka 学习 源码分析05 应用实例续租

Eureka 学习 源码分析05 应用实例续租

整个过程修改的租约的过期时间,即使并发请求,也不会对数据的一致性产生不一致的影响,因此像注册操作一样加锁