01. Spring Cloud Eureka Client 原理
2023-06-14 20:11:35 1 举报
AI智能生成
登录查看完整内容
Spring Cloud Eureka Client 原理
作者其他创作
大纲/内容
lastUpdatedTimestamp记录当前 instance 在 server 端被修改的时间戳
lastDirtyTimestamp记录当前 instance 在 client 端被修改的时间戳这个时间是在配置文件发生变更的时候才会修改
status决定是否能够正常提供服务的属性
overriddenStatus用户通过调用 API 的方式希望服务能够达到某种状态的期望值
InstanceInfo一个 InstanceInfo 实例表示一个微服务主机
Application一个 Application 实例保存着一个特定微服务的所有服务提供者实例
Applications客户端注册表,封装了来自 Eureka Server 的所有注册信息
重要概念
EurekaClientConfigBean向容器中注入配置类它读取 eureka.client 开头的配置属性
EurekaInstanceConfigBean向容器中注入配置类它读取 eureka.instance 开头的配置属性
queryClient.getApplications()获取服务端的所有注册信息利用 RestTemplate 完成拉取请求
getAndStoreFullRegistry()拉取并存储全量配置
updateDelta(delta)这里有两类 Region:本地 Region 和 远程 Region所以也有两类缓存:本地 Region 的缓存和远程 Region 的缓存
getAndUpdateDelta(applications)拉取并存储增量配置
判断是否需要全量拉取比如说【客户端刚刚启动】或者【强制拉取远程配置】等
fetchRegistry(boolean forceFullRegistryFetch)客户端一般需要拉取远程注册表第一次这里传的是 false
registrationClient.register()利用 RestTemplate 完成注册请求
register()向注册中心注册服务
fetchRegistry(true)判断配置文件中的远程配置中心地址是否发生变化如果发生了变化这里传的是 true
CacheRefreshThread定时刷新注册表信息线程
registrationClient.sendHeartBeat()利用 RestTemplate 发送续约请求
renew()续约发送心跳
HeartbeatThread定时发送心跳消息线程
refreshDataCenterInfoIfRequired()更新注册中心地址信息
refreshLeaseInfoIfRequired()更新续约信息
discoveryClient.refreshInstanceInfo()刷新客户端信息
discoveryClient.register()如果信息发生变更,这里会重新注册
InstanceInfoReplicator启动实例信息复制器线程
initScheduledTasks()初始化定时任务,包含 3 个任务
DiscoveryClient#<init>在构造方法里初始化组件
EurekaClient向容器中注入配置类实例类型是【CloudEurekaClient】
instanceInfoReplicator.stop()停止实例信息复制器线程
heartbeatExecutor.shutdownNow()关闭续约线程
cacheRefreshExecutor.shutdownNow()关闭定时刷新注册表信息线程
scheduler.shutdownNow()关闭定时刷新注册表的调度器线程
cancelScheduledTasks()取消定时任务
registrationClient.cancel()利用 RestTemplate 发送服务下线请求
unregister()向 server 发送服务下线请求
shutdown()服务关闭
EurekaClientAutoConfigurationSpring Boot 提供的 SPI
cancelOverrideStatus()向服务端发送【cancelOverrideStatus】请求
如果传入的状态是CANCEL_OVERRIDE
setStatus()利用 RestTemplate 向服务端发送【setStatus】请求
其它状态则调用设置状态方法
setStatus()根据请求设置状态
服务下线这是基于 SpringBoot 提供的 Endpoint端点入口是【ServiceRegistryEndpoint】
Spring Cloud Eureke Client 原理分析
0 条评论
回复 删除
下一页