SpringCloud组件-Eureka源码刨析

一、EurekaServer的启动流程

查看eureka的启动starter依赖,eureka根据springboot自动装配的特点,会自动装配spring.factores中的类。查看spring-cloud-netflix-eureka-server中的spring.factores文件。文件内容为#org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration,自动装配了EurekaServerAutoConfiguration类,进入该类。

通过import引入了EurekaServerInitializerConfiguration类,@ConditionalOnBean中有一个marker类,当容器加载了这个类之后才会装配EurekaServerAutoConfiguration。先查看一下这个Marker类。

Marker是EurekaServerMarkerConfiguration装配的

而EurekaServerMarkerConfiguration又是通过EnableEurekaServer注解导入的,所以只有项目添加了@EnableEurekaServer注解之后才会装配EurekaServerAutoConfiguration。接下来查看该类中的一些装配详情。

1、eureka仪表盘

 当配置eureka.dashboard.enabled=true的时候可以访问eureka的管理界面

2、对等感知实例注册器

在集群模式下,由于eureka是没有主从之分的,都是单独的对等存在所以需要相互注册。PeerEurekaNodes是辅助封装对等节点相关的信息和操作,比如更新集群中的对等。进入PeerEurekaNodes查看相关操作。

启动了一个定时任务,定时更新对等信息。但是这个任务并不是在这里启动。

3、 加载eureka的容器上下文。 点击进入容器类

这里启动了刚才上面的更新注册信息的定时任务。registry.init方法中启动了定时任务,定时更新续约次数的期望值和自我保护的临界值。

4、注入Jersy过滤器,Jersy是一个rest框架帮我们发布restful服务接口的,类似于(Spring mvc)框架的中的续约等接口都是这么暴露的。查看定义

扫描这两个包下面定义的接口信息。 

 

5、@import标签引入了EurekaServerInitializerConfiguration。进入该类,类继承了SmartLifecycle接口,则会自动运行start方法,来看一下start方法中的具体操作。

 

执行了eurekaServerBootstrap的容器初始化方法,并且发布了两个事件。 进入contextInitialized方法

registry.syncUp方法是同步其它EurekaServer的注册信息 ,进入方法查看详情

 

第一处是获取其它Eureka注册的服务信息,第二处则将这些信息注册到自己的注册表中。

再来看一下EurekaBootstrap的contextInitialize方法中的openForTraffic方法。

 

 二、EurekaClient的启动过程

  跟server服务一样,我们先看spring.factories文件里面的自动装配的类。

关注注解@AutoConfigureAfter中的元素,当加载完EurekaDiscoveryClientConfiguration等类之后才会装配EurekaClientAutoConfiguration,进入该类

只要是配置了eureka.client.enabled=true则会装配该bean,并且该bean中配置了Marker, EurekaClientAutoConfiguration正好需要有这个bean才会创建,所以只要引入了eurekaClient的依赖,并且eureka.client.enabled=true,则该服务会自动成为一个eureka的客户端。

1、加载EurekaClient的配置信息

 2、加载客户端对象

 进入客户端对象创建的细节,根据代码一直进入。

最终可以看到方法中调用了这些核心方法,依次是获取服务注册表信息,注册自己服务,启动一些定时任务,现在来看一下都启动了哪些定时任务。进入之后可以看到启动了定时拉取服务列表信息,定时续约 。

3、com.netflix.discovery.DiscoveryClient#shutdown

在服务下线是调用unregister下线服务

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值