eureka-server启动+初始化源码图
2021-09-28 11:31:57 0 举报
此为netflix的v1.7.2 eureka-server源码图
作者其他创作
大纲/内容
依赖
从相邻的server节点中copy注册表信息registry.syncUp()
集群节点信息实例peerEurekaNodes
服务实例管理器DiscoveryClient: eurekaClientConfig
服务实例管理器applicationInfoManager
EurekaBootStrap类监听类必执行方法contextInitialized(ServletContextEvent event)
文本
//todo zzks eureka server 启动流程 // 1 com.netflix.eureka.EurekaBootStrap#initEurekaEnvironment() 初始化数据中心 运行环境 // 2 com.netflix.eureka.DefaultEurekaServerConfig#init()读取eureka-server配置文件 // 3 com/netflix/eureka/EurekaBootStrap.java:177 applicationInfoManager // 将自己作为服务实例,从eureka-client中读取配置,构造了服务实例信息,构造了实例信息管理器 // 4 将自己作为eureka-client eureka-client中读取配置,基于服务实例和eureka -client 配置构造了eureka client DiscoveryClient // 5 构造感知eureka server 集群的注册表 PeerAwareInstanceRegistry // 6 构造一个eureka server 集群的信息 peerEurekaNodes // 7 基于eureka server配置/注册表/eureka server集群/服务实例来构造了一个eureka server context 上下文 // 8 eurekaServerContext 进行初始化 1)更新eureka server 进群信息 2)基于eureka server 集群信息初始化注册表 // 9 从相邻的eureka server 节点拷贝注册表 // 10注册监控
初始化环境initEurekaEnvironment()
初始化放置EurekaServerContextHolder.initialize(serverContext);serverContext.initialize();
加载
利用接口方式对外暴露配置数据,有利于理解, 同时后续变动配置名称,只需要改动接口实现类的一 个枚举值就行
eureka-server.properties
当前服务实例的配置instanceConfig
上下文serverContext = new DefaultEurekaServerContext()
作为eurekaServer的配置信息对象eurekaServerConfig
//todo zzks 可以感知eureka server集群的服务实例注册表,eureka client(作为服务实例)过来注册的注册表, // 而且这个注册表是可以感知到eureka server集群的。假如有一个eureka server集群的话, // 这里包含了其他的eureka server中的服务实例注册表的信息的
(2)调用
这里的applicationInfoManager 是基于instanceConfig来构建的一个管理服务实例的管理器,后续会对服务实例信息进行全面管控
(1)调用
web.xml
初始化上下文initEurekaServerContext()
可以感知eureka server集群的服务实例注册表-实例PeerAwareInstanceRegistryImpl
注册监控相关EurekaMonitors.registerAllStats();
基于instanceConfig构建
这里的eureka-server 也会把自己当成一个服务client往注册中心注册applicationInfoManager = eurekaClient.getApplicationInfoManager()含义:表示自己eureka-server作为一个client拥有自己的的一个服务实例管理器,而且这个服务实例管理器拥有instanceConfig 实际上这里instanceConfig里面的信息和eurekaClient信息部分是相同的
构建
监听类com.netflix.eureka.EurekaBootStrap
eureka-client.properties
单例:dubbo check+ volatileConfigurationManager.getConfigInstance()
tomcat
收藏
0 条评论
回复 删除
下一页