Eureka启动流程源码解析

入口:在eureka-server的包的META-INF下面有配置文件spring.factories文件,我们知道这个是指定要自动装配的类的文件,点进去看

有一个EurekaServerAutoConfigutation类:

我们看到其中有个注解@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)

这个注解是说需要有EurekaServerMarkerConfiguration这个bean存在才实例化,那么这个bean是哪里来的呢?这个bean是来源于启动类的@EnableEurekaServer注解:

一个服务想要成为eureka服务,那么需要在启动类上加上@EnableEurekaServer注解

看看注解是什么内容:

我们看到导入了一个EurekaServerMakerConfiguration类 :


实例化了一个Marker。

回到上面的配置类,EurekaServerAutoConfigutation,看看里面实例化了哪些bean,我们不需要每个都看,只需看一些重点的:

1.eurekaController是我们的控制台,也就是后台界面,可以通过eureka.dashboard.enabled=false关闭;


2.peerAwareInstanceRegistry:对等节点感知注册器,集群模式下各个节点是平等的,不像zookeeper那样有master

3.peerEurekaNodes,封装了对对等的操作,比如更新对等节点信息

我们点进去看看,里面有个start()方法:



5.回到主配置类中,一个人context类,注册了上下文:

里面调用了start方法:


6.回到主配置类中,FilterRegistrationBean:

7.主配置类上的注解@Import(EurekaServerInitializerConfiguration.class):


8.主配置类中有个

重点关注,进⼊

org.springframework.cloud.netflix.eureka.server.EurekaServerBootstrap#contextInitialized


重点关注initEurekaServerContext()


研究⼀下上图中的syncUp⽅法:


继续研究com.netflix.eureka.registry.AbstractInstanceRegistry#register(提供实例注册功能)


继续研究com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl#openForTraffic

进⼊postInit()⽅法查看


至此,eureka启动流程就走完了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。