本文已参与「新人创作礼」活动,一起开启掘金创作之路。
eureka-server启动流程
-
初始化环境
-
数据中心
-
运行环境
-
-
初始化上下文
-
构造EurekaServerContext
-
构造EurekaServerConfig
- 加载eureka-server.properties和eureka-server-env.properties文件中的配置项
-
构造ServerCodes
- 基于EurekaServerConfig构造,用于eureka-server收发请求时的编码与解码
-
构造PeerAwareInstanceRegistry
-
加入EurekaServerConfig
-
加入ServerCodes
-
构造EurekaClientConfig
- 加载eureka-client.properties和eureka-client-env.properties文件中的配置项
-
构造EurekaClient
- 基于EurekaClientConfig构造,用于在eureka-server集群中自己作为服务实现服务发现与注册功能
-
-
构造PeerEurekaNodes
-
加入PeerAwareInstanceRegistry
-
加入EurekaServerConfig
-
加入EurekaClientConfig
-
加入ServerCodes
-
加入ApplicationMananger
-
-
构造ApplicationManager
-
构造EurekaInstanceConfig
- 加载eureka-client.properties和eureka-client-env.properties文件中的配置项
-
构造InstanceInfo
- 基于EurekaInstanceConfig通过EurekaConfigBasedInstanceInfoProvider
-
-
-
初始化EurekaServerContext
-
更新eureka server集群信息
-
基于eureka server集群信息初始化注册表
-
-
从相邻的eureka server节点拷贝注册表
-
注册监控
-
上下文放入ServletContext中
-
eureka-client启动流程
eureka-examples项目中ExampleEurekaClient类,作为eureka-client客户端启动流程demo。
eureka server包含一个内部的eureka client实例,服务实例启动的时候,会启动eureka client。
使用eureka client向eureka server服务注册
-
读取eureka-client.properties配置文件,构造EurekaInstanceConfig实例(服务实例的配置),基于接口对外提供服务实例的配置项的读取
-
基于服务实例的配置,构造服务实例(InstanceInfo)
-
基于服务实例的配置和服务实例,构造服务实例管理器(ApplicationInfoManager)
-
读取eureka-client.properites配置文件,构造eureka client的配置(EurekaClientConfig),基于接口对外提供eureka client的配置项的读取
-
基于eureka client配置(EurekaClientConfig)和服务实例管理器(ApplicationInfoManager),构造EurekaClient(DiscoveryClient),
- 保存eureka-client配置
- 构造服务注册和服务发现的指标统计监控器
- 启动3个线程池(调度、心跳、缓存刷新)
- 启动网络通信组件
- ClosableResolver bootstrapResolver
- TransportClientFactory transportClientFactory
- EurekaHttpClient registrationClient
- EurekaHttpClientFactory registrationClientFactory
- EurekaHttpClient queryClient
- EurekaHttpClientFactory queryClientFactory
- 抓取注册表,如果失败,从备用注册表地址抓取
- 初始化调度任务
- 服务抓取
- 服务注册
- 心跳调度器
- 服务实例信息同步器
- 服务实例状态变更监听器
- 注册监控项