简单梳理下eureka注册中心代码

本文优点:按着步骤操作可以串起来

注册中心分两部分,eureka-server和eureka-client

一.概述:

1.eureka-server:主要维护了eureka-client的服务地址信息,用的双层map,然后其实就是提供了对这个map的增删查改接口,如:注册(添加),获取服务(查询),续约(更新过期时间),剔除(删除),同步(初始全量获取,新注册剔除会同步),并加了两级缓存,同步和剔除起了两个任务

2.eureka-client:主要就是服务注册,获取任务(全量,增量),续约任务

二.eureka-server代码梳理

1.找到eureka-server的pom依赖


    
    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-server
    
    

2.点击spring-cloud-starter-netflix-eureka-server,找到如下依赖


   org.springframework.cloud
   spring-cloud-netflix-eureka-server

3.搜索spring-cloud-netflix-eureka-server,并点进去

简单梳理下eureka注册中心代码_第1张图片

4.找到包下的spring.factories,找到EnableAutoConfiguration下的EurekaServerAutoConfiguration,并点击进去,这个类是eureka-server的自动装载类,下边分析这个类怎么被加载的

PS:需要了解点spring boot自动装载知识

简单梳理下eureka注册中心代码_第2张图片

5.找到spring boot启动类,点击@SpringBootApplication注解

简单梳理下eureka注册中心代码_第3张图片

6.找到@EnableAutoConfiguration注解,并点击

简单梳理下eureka注册中心代码_第4张图片

7.找到如下@Import({AutoConfigurationImportSelector.class}),点击类

简单梳理下eureka注册中心代码_第5张图片

8.AutoConfigurationImportSelector类实现了ImportSelector接口,这个接口就是手动注入bean的接口

PS:这里需要了解spring前置知识

下边的图1是AutoConfigurationImportSelector类图

 

简单梳理下eureka注册中心代码_第6张图片

点击红框方法进去,这里扫描了META-INF下的spring.factories,这里便扫描了步骤4的内容

简单梳理下eureka注册中心代码_第7张图片

selectImport方法是在refresh的invokeBeanFactoryPostProcessors中调用的,如下:

简单梳理下eureka注册中心代码_第8张图片

9.进入EurekaServerAutoConfiguration类,@ConditonalOnBean就是后边的Marker类存在则加载本类,进入程序启动类,点击@EnableEurekaServer注解,这里加载了Marker类,所以这个注解是开启eureka-server.

简单梳理下eureka注册中心代码_第9张图片

进入程序启动类,点击@EnableEurekaServer

简单梳理下eureka注册中心代码_第10张图片

点击EurekaServerMarkerConfiguration

简单梳理下eureka注册中心代码_第11张图片

如下类注入了Marker,则激活了EurekaServerAutoConfiguration类(eureka-server自动装配类)

简单梳理下eureka注册中心代码_第12张图片

10.进入EurekaServerAutoConfiguration类

找到eurekaServerBootstrap方法,然后搜索PeerAwareInstanceRegistry注入的地方

简单梳理下eureka注册中心代码_第13张图片

11.找到PeerAwareInstanceRegistry,点击new InstanceRegistry方法,一直点super方法,最终定位到AbstractInstanceRegistry类,这个类中提供了注册,续约,服务获取,剔除等方法,如下图

简单梳理下eureka注册中心代码_第14张图片

简单梳理下eureka注册中心代码_第15张图片

简单梳理下eureka注册中心代码_第16张图片

简单梳理下eureka注册中心代码_第17张图片

简单梳理下eureka注册中心代码_第18张图片

12.服务同步和剔除任务则在如下Import的红框类中,这个类实现了SmartLifecycle接口,则在bean装载并初始化完后执行start方法

简单梳理下eureka注册中心代码_第19张图片

简单梳理下eureka注册中心代码_第20张图片

简单梳理下eureka注册中心代码_第21张图片

简单梳理下eureka注册中心代码_第22张图片

下图中sysup是服务同步方法,this.registry.openForTraffic方法则是启动剔除服务

简单梳理下eureka注册中心代码_第23张图片

三.eureka-client代码分析

你可能感兴趣的:(spring,cloud)