一般我们Server端会像下图一样,引入Eureka,下面就通过这个来分析Eureka服务端源码流程
一、服务端自动配置
@EnableEurekaServer会引入EurekaServerMarkerConfiguration类
EurekaSeverMarkerConfiguration最终会引入Marker对象,这就是一个标记对象
二、SpringBoot 加载EurekaServerAutoConfiguration
SpringBoot会在启动的时候加载 spring-cloud-netflix-eureka-server端下面的META-INF下面的EurekaServerAutoConfiguration
让我们来看看这个类
在@ConditionalOnBean这里我们就会发现当时加的Marker多有用了
三、EurekaServerAutoConfiguration和EurekaClientAutoConfiguration详解
这里为什么要加入EurekaClientAutoConfiguration那?由于spring-cloud-eureka-server也需要进行网络通信,所以会引入Eureka Client包,最终会导致EurekaClientAutoConfiguration的导入
EurekaClientAutoConfiguration这个类通过 @configuration和@bean,引入了很多Eureka Client端源码中常见的组件
3.1 实例管理组件
ApplicationInfoManager 实例管理器, Eureka-server会依赖Eureka-client,Eureka client又会导入EurekaClientAutoConfiguration,这个类会导入实例管理器
里面的实例信息为:
3.2 Eureka client实例
Eureka Server在运行的时候,也需要eureka client,因为它也需要向其他server进行网络通信
3.3 Client端 服务注册组件
EurekaServerAutoConfiguration这个类通过 @configuration和@bean,引入了很多Eureka Server端源码中常见的组件
3.3 Server端 服务发现、注册组件
完成后续的服务端启动的时候,从相邻节点拉取全量的注册表信息
3.4 Server集群节点管理组件
集群节点配置信息,当server端新增节点的时候,都是要向相邻节点注册上去的
3.5 Eureka Server上下文
3.6 Eureka Server BootStrap组件
3.7 Server端 接收请求组件,类似于springmvc的 controller
3.8 Eureka Server初始化组件
四、Server端完整流程(最重要)
上面这些组件都准备好了,server端就要开始启动了,看看入口在哪里,有哪些流程?
4.1 Server服务注册
一般来说,server启动完成后,会向其他server端进行服务注册,这一步在那里?其实就是我们上面说的
EurekaAutoServiceRegistration
它的start会完成向服务端注册, 如果想继续追源码的话,它最终调用的是instanceInfoReplicator.onDemandUpdate();
4.2 Server定时注册
4.2 Server服务发现
Server端的服务发现和Client端的服务发现是不一样的,Server端的服务发现是要从相邻的server节点拉取注册表
上面不是引入一个EurekaServerInitializerConfiguration
这里非常重要,通过调用PeerAwareInstanceRegistry的syncUp来同步相邻节点的注册表信息
4.3 心跳续约
在DiscoveryClient中,会创建定时调度的任务,去完成心跳续约
版权归原作者 上海第一shen 深情 所有, 如有侵权,请联系我们删除。