SpringCloud【源码分析】之Euraka-Client

本文深入解析了Eureka服务注册与续约机制,详细介绍了DiscoveryClient如何通过心跳线程和缓存刷新类进行服务注册、续约及下线操作。重点关注了InstanceInfoReplicator类在注册过程中的作用,以及EurekaServer如何处理客户端的注册和更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​ SHAPE  \* MERGEFORMAT ​通过流程图我们可以很清晰的看到在服务提供者向Eureka-server是通过注册 续约 下线3部分。下面就针对这3部分看下源码

通过根据EnableDiscoveryClient注解 很容易找到DiscoveryClient是我们今天的主要战场。

观察下DiscoveryClient.class下的方法

其中有几个4个内部类 和几个主要方法

DiscoveryClient () 初始化信息

CacheRefreshThread 缓存刷新类

HeartbeatThread  心跳线程 用于注册 续约下线等定时任务的管理

DiscoveryClientOptionalArgs和EurekaTransport是用于通信的http方式 jersay架构完成。

关注的主要方法

InitScheduledTasks() //开启缓存刷新任务 心跳定时任务 instahce状态监听

cancelScheduledTasks()//刷新缓存任务

register() //注册

renew() //更新

类初始化的时候会走这个2个方法

通过feechRegistry()获取EurekaServer相关数据初始化DiscoveryClient类。

初始化完成调用initScheduledTasks()开启定时任务

 

是否注册Eureka 在配置文件可配置 默认开启

续约

关注this.scheduler.schedule()方法 可以看到执行的是

 

 

 

看到这里我们就可以对续约有一个认识了 是通过initschedulerTasks时创建了

一个心跳定时任务(TimedSupervisorTask)30秒发送一次http(jerSay架构)请求到Eurekaserver 通知我还活着。

注册

下面关注InstanceInfoReplicator类

开启一个定时任务40秒执行一次

监听事件调用的方法

Run()刷新 去注册自己的服务。需要注意的是第一自动注册并不是调用的本方法来执行注册的。

EurekaServer 接收client的 注册和更新 处理源码分析

ApplicationResource.class 注册


开始是请求参数的校验,最终调用registry()方法 最终又回到它的实现类peerAwareInstanceRegistyimpl#register()上

调用父类的注册,同时通知其他节点

AbstractInstanceRegistry.class

先看map里是否有这个实例信息 没有创建一个新的 再次对比 赋值更新操作时间戳

更新也是同理 在

PeerAwareInstanceRegistryImpl.class renew()方法中 有兴趣的可以自行翻阅下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值