全网最清晰 SpringCloud-Eureka Client流程

本文详细分析了SpringBoot中Eureka客户端的自动配置过程,包括组件加载、服务注册流程、定时任务和心跳续约,揭示了Eureka服务注册表的底层原理和全量/定时服务发现机制。
摘要由CSDN通过智能技术生成

一般我们Client端会像下图一样,引入Eureka,下面就通过这个来分析Eureka客户端源码流程
在这里插入图片描述

一、客户端自动配置

在这里插入图片描述
在这里插入图片描述

这里import了一个EnableDiscoveryClientImportSelector类,这个类又做了什么?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

就是加载了一些属性

二、SpringBoot 加载EurekaClientAutoConfiguration
SpringBoot会在启动的时候加载 spring-cloud-netflix-eureka-client端下面的META-INF下面的EurekaClientAutoConfiguration
让我们来看看这个类
在这里插入图片描述

三、EurekaClientAutoConfiguration详解
这里为什么要加入EurekaClientAutoConfiguration那?由于spring-cloud-eureka-server也需要进行网络通信,所以会引入Eureka Client包,最终会导致EurekaClientAutoConfiguration的导入
EurekaClientAutoConfiguration这个类通过 @configuration和@bean,引入了很多Eureka Client端源码中常见的组件
3.1 实例信息组件
在这里插入图片描述

3.2 实例管理组件
在这里插入图片描述

3.3 Eureka client实例
在这里插入图片描述

3.4 服务自动注册组件
在这里插入图片描述

3.5 服务注册组件
上面的服务自动注册组件,会调用到下面这个服务注册组件
在这里插入图片描述

四、Client端完整流程(最重要)
上面这些组件都准备好了,server端就要开始启动了,看看入口在哪里,有哪些流程?
4.1 服务注册
一般来说,client启动完成后,会向server端进行服务注册,这一步在那里?其实就是我们上面说的
EurekaAutoServiceRegistration
它的start会完成向服务端注册, 如果想继续追源码的话,它最终调用的是instanceInfoReplicator.onDemandUpdate();

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里是单线程异步执行的,因为scheduler核心线程数为1,然后submit给它的

  1. 调用discoveryClient.refreshInstanceInfo刷新实例信息
  2. 调用discoveryClient.register进行注册
  3. 调用sheduler.shedule 放一个下一次执行的延迟任务

最终,这里会调用到Server端的 ApplicationResource
在这里插入图片描述
在这里插入图片描述

这里又会调用到 PeerAwareInstanceRegistryImpl这个服务端组件的register方法
在这里插入图片描述

调用父类abstractInstanceRegistry的register完成注册,并且复制给其他node节点
在这里插入图片描述

这里就是eureka 最著名的三层缓存架构的注册表所在之处,我们看一下registry到底存了哪些信息?
在这里插入图片描述

<服务名:map<实例唯一id:InstanceInfo>>, 这就是一个注册中心底层原理

4.2 定时注册
在这里插入图片描述

4.3 服务发现(全量)
client在第一次启动的时候,会从eureka server全量的拉取注册表
入口在:
if (clientConfig.shouldFetchRegistry() && !fetchRegistry(false)) {
fetchRegistryFromBackup();
}
在这里插入图片描述

4.4 服务发现(定时)
!](https://img-blog.csdnimg.cn/direct/b36098ff32e5407e849cfbf296df3e33.png)

4.3 心跳续约
在DiscoveryClient中,会创建定时调度的任务,去完成心跳续约
在这里插入图片描述

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值