EurekaServer启动流程
2021-09-29 21:15:18 8 举报
eureka服务器启动流程
作者其他创作
大纲/内容
EurekaBootStrap
initEurekaEnvironMent():通过配置管理器ConfigurationManager获取AbstractConfiguriation单例(ConcurrentCompositeConfiguration并发混合配置容器),然后初始化数据中心DataCenter以及默认环境test
initEurekaServerContext():
第一步,通过EurekaServerConfig的默认实现类DefaultEurekaServerConfig的init方法,先获取eureka.server.properties中的配置加载到Properties,然后再读取eureka.server-{env}.properties,覆盖Properties,加载到AbstractConfiguration,然后通过动态属性工厂DynamicPropertyFactory向外暴露属性
第二步,通过EurekaInstanceConfig的默认实现类DefaultEurekaInstanceConfig的init方法,先获取eureka.client.properties的属性加载到Properties,然后再加载eureka.client-{env}.properties中的属性到Properties,然后加载到AbstractConfiguration,通过动态属性工厂DynamicPropertyFactory向外暴露配置
第三步,使用EurekaInstanceConfig生成InstanceInfo实例(这里使用了构建者模式)(ps:EurekaInstanceConfig主要为与eureka server通讯需要的属性,InstanceInfo主要为实例本身作为client的自身的属性)
第四步,使用EurekeInstanceConfig以及InstanceInfo实例构建应用信息管理器ApplicationInfoManager
第五步,通过EurekaClientConfig的默认实现类DefaultEurekaClientConfig构建eureka客户端配置,雷同server,先读取eureka.client.properties,在读取eureka.client-{env}.properties,加载到AbstractConfiguration,最后通过动态属性工厂DynamicPropertyFactory向外暴露配置,然后这里还会构建一个通讯组件配置EurekaTransportConfig
第六步,使用应用信息管理器ApplicationInfoManager和EurekaClientConfig构建EurekaClient的默认实现DiscoveryClient
先拷贝应用信息管理器ApplicationInfoManager、实例信息InstanceInfo、客户端配置eurekaClientConfig、TransportConfig等之前构建的信息
然后根据是否需要注册到eureka属性registerWithEureka和fetchWithRegistry属性分别构建统计项,如果两项都不需要,那么初始化工作完成
如果registerWithEureka或者fetchWithRegistry有一项开启,那么要初始化三个线程池:用于调度定时任务的默认最大线程数量为5的线程池、用于向eureka server发送心跳的heartbeatExecutor(默认最大5)、用于缓存注册表信息的cacheRefreshExecutor(默认最大5)
然后通过构建的EurekaTransportConfig来创建客户端与服务端的通讯组件EurekaTransport,接着初分别初始化获取注册表以及心跳续约通讯的客户端
然后如果需要获取注册表信息,那么直接用附近的eureka-server获取注册表,获取失败的话,再从备份的注册表中获取
最后开启心跳续约以及获取注册表的定时任务
第七步,使用eurekaServerConfig、eurekaClientConfig以及eurekaClient构建服务发现注册表PeerAwareInstanceRegistry
第八步,使用服务发现注册表PeerAwareInstanceRegistry、eurekaServerConfig、eurekaClientConfig、applicationInfoManager构建服务节点PeerEurekaNodes
第九步,通过eurekaServerConfig、服务发现注册表PeerAwareInstanceRegistry、服务节点PeerEurekaNodes、服务信息管理器ApplicationInfoManager构建eureka服务器上下文eurekaServerContext
第十步,将上下文信息存储到holder,以便后续访问
第十一步,从相邻的eureka server拷贝注册表信息(作为服务器需要注册表信息)
第十二步,注册统计数据
0 条评论
下一页