eureka源码解析——集成到springCloud


本文讲解 springCloud怎么整合并自动装配eureka并启动eureka-server

一、装配流程解析

1.1@EnableEurekaServer注解解析

1.1.1配置流程

在引入eureka的依赖之后,配置eureka server的时候需要我们在springBoot的启动类上面加个@EnbaleEurekaServer的注解标识启动一个eureka server
在这里插入图片描述

1.1.2 注解剖析@EnableEurekaServer

这里使用了Import导入了一个配置类EurekaServerMarkerConfiguration

在这里插入图片描述

1.1.3 EurekaServerMarkerConfiguration

这里往spring容器中添加了一个bean,类名叫做Marker,好像只是做个开启的标记,自动装配的逻辑不在这里,我们看下spring.factories看相关的自动装配的逻辑

在这里插入图片描述

1.1.4 spring.factories配置解析

这里可以发现eureka-serverjar中在spring.factories文件中自动装配了一个类EurekaServerAutoConfiguration

在这里插入图片描述

1.1.5 EurekaServerAutoConfiguration解析

1.1.5.1 EurekaServerAutoConfiguration类声明解析

这里重点关注两个配置,一个是ConditionalOnBean,判断如果容器中存在Marker这个bean才进行自动装配,因为之前我们已经在@EnableEurekaServer中注入了,所以这个是没问题,第二个是使用Import导入了一个EurekaServerInitializerConfiguration来进行初始化流程,还有就是加载和装配配置类

在这里插入图片描述

1.1.5.2 EurekaServerAutoConfiguration类属性解析

这里注入了了一些bean,其中还包括eurekaClientClientConfig,这个是因为eurekaServer依赖于eurekaClient来和集群其他节点进行通信。

在这里插入图片描述

1.1.5.3 EurekaServerAutoConfiguration类装配bean

这里会装配dashboardcontroller,然后对注解表进行创建,然后初始化集群节点信息类对象,再初始化EurekaServerContext也就是eurekaserver的上下文,然后装配bootstrap类用来做项目启动和停止的,最后就是初始化jersey框架的bean,对外暴露restful接口。

在这里插入图片描述

1.1.6 EurekaServerInitializerConfiguration类解析

这个类是在自动装配的时候导入的,是用于做eurekaServer的初始化逻辑的,这里实现了SmartLifecycle,spring会在初始化完成后,回调Lifecycle的start方法

  1. 这里start方法中分首先会开启一个线程,执行eurekaServerBootstrap#contextInitialized方法,然后发布EurekaRegistryAvailableEvent事件,设置runningtrue,再发布EurekaServerStartedEvent事件

在这里插入图片描述

1.1.7 EurekaServerBootstrap#contextInitialized

首先初始化eureka environment,然后初始化context,最后将context设置到ServletContext

在这里插入图片描述

1.1.7.1 EurekaServerBootstrap#initEurekaEnvironment

其实就是从配置文件中获取当前的eureka environment1

在这里插入图片描述

1.1.7.2 EurekaServerBootstrap#initEurekaEnvironment

这里重点就是他会去集群中的其他节点拉取注册表信息。

在这里插入图片描述

1.1.7 EurekaServerContext

在讲解EurekaServerAutoConfiguration自动装配的时候会自动注入bean->EurekaServerContext,配置eureka的上下文,构造的时候会传入PeerEurekaNodesPeerAwareInstanceRegistry 注册表信息,我们在这个类中发现他会去初始化和小会这两个组件。在initialize会启动peerEurekaNodes和初始化注册表

在这里插入图片描述

1.1.7.1 PeerEurekaNodes#start
  1. 首先调用updatePeerEurekaNodes更新集群节点信息,就是创建节点对象
  2. 创建一个定时任务定时更新节点信息

在这里插入图片描述

1.1.7.2 PeerAwareInstanceRegistryImpl#init

这里初始化了一些很重要的组件,后续我们会讲解,其中包括服务续约,自我保护,cache,初始化注册表等关键信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值