eurekaServer端
2020-07-28 10:14:15 0 举报
eureka的服务端源码流程
作者其他创作
大纲/内容
初始化Bean
@EnableEurekaServer
初始化集群节点的信息
EurekaController
spring-cloud-netflix-eureka-server.jar里的spring.factories文件里的EnableAutoConfiguration对应EnableServerAutoConfiguration
@Import
register
registry.syncUp服务同步
eurekaClient.getApplications()
把所有实例注册到本地
激活
EurekaServerAutoConfiguration
super.postInit();
当一个方法有很多实现的时候,你就看他的类是在哪初始化的,一步步的往回走比如这个registry,看看他是哪里的,发现他是EurekaServerBootstrap 的成员变量,既然是成员变量就看他是在哪里初始化,发现是在EurekaServerBootstrap的构造方法里初始化的,然后就看这个类是在哪里初始化的,刚刚看过源码知道是在上一层EurekaServerAutoConfiguration初始化的。EurekaServerAutoConfiguration在这个类里面查到了Bootstrap的初始化的构造参数里面发现了registry的类,一般这种类的实现都是在附近,所以就搜索PeerAwareInstanceRegistry,发现了一个@bean的类。看见他返回一个InstanceRegistry所以就知道了是InstanceRegistry实现他的
开启定时剔除任务schedule
server的编码
在这个类上面有一个mark类,表示标记之后就会激活那个配置类
FilterRegistrationBean
eurekaServerBootstrap
AutoConfigurationImportSelector
参数化jersey过滤器
EurekaServerInitializerConfiguration
根据getEvictionIntervalTimerInMs()的实现类(EurekaServerConfigBean)找到evictionIntervalTimerInMs== 60 * 1000;所以知道他是60秒剔除
EnableAutoConfiguration
1.初始化eurekaserver的运行环境
2-1:修改eureka的状态为up2-2:开启一个定时任务,剔除60秒没有续约的实例
marker
serverCodecs
@SpringBootApplication
initEurekaEnvironment
实现了SmartLifecycle(spring生命周期的类)接口类,会在初始化完成后根据isAutoStartup的返回返回值,从而决定是否启动start()方法
registry.openForTraffic服务剔除
配置信息
进入到里面查看注释,有一个类EurekaServerAutoConfiguration激活eureka服务器相关的配置其实直接进入到那个类的
基于eurekaserver配置,注册表,集群节点集合,以及服务实例初始化eurekaserver上下文
initEurekaServerContext
peerAwareInstanceRegistry
初始化集群的注册表
组合注解
peerEurekaNodes
2.初始化eurekaserver的上下文
EurekaServerMarkerConfiguration
初始化spring cloud包装和eureka原生启动类
调用相邻节点http接口获取所有服务实例
进入到源码里面,如果看不懂代码,可以看一下注释or日志。当看到init、Bootstrap这种初始化的方法,一般都看一下
扫描所有jar包里的spring.factories类
EurekaServerConfigBean
导入对应EnableAutoConfiguration的所有的类
1.从邻近的eureka节点复制注册表
注释:负责添加一个标记bean来激活EurekaServerAutoConfiguration
eurekaServerBootstrap.contextInitialized
eurekaServerContext
0 条评论
下一页