Eureka DiscoveryClient 客户端的创建流程
2021-12-10 15:45:55 0 举报
Eureka DiscoveryClient 客户端的创建流程
作者其他创作
大纲/内容
启动多个调度任务1.定时抓取注册表调度任务2.给erueka server发送心跳的调度任务3.复制实例信息4.注册一个状态变更的监听器
EurekaHttpClients.newBootstrapResolver
1个核心线程
registrationClientFactoryregistrationClient
registryStalenessMonitor
fetchRegistryFromBackup尝试抓取注册表,如果抓取不成功,会从备用的注册表地址去抓取
将服务实例,服务实例管理器,erueka client 配置,网络通信配置,都保存一下
RestTemplateTransportClientFactories
fetchRegistry抓取注册表
scheduler
AzToRegionMapper
30秒90秒
尝试抓取注册表,如果抓取不成功,会从备用的注册表地址去抓取
bootstrapResolver
2个核心线程
AbstractDiscoveryClientOptionalArgs
EurekaClientConfig
Jersey1TransportClientFactories
CacheRefreshThread缓存刷新
backgroundTask询问Eureka服务url信息变化,5分钟
1.从eureka-client.properties中读取服务实例配置2.构造服务实例(instanceinfo)3.构造服务实例管理器(ApplicationInfoManager)
heartbeatStalenessMonitor
(1)读取EurekaClientConfig,包括TransportConfig(2)保存EurekaInstanceConfig和InstanceInfo(3)处理了是否要注册以及抓取注册表,如果不要的话,释放一些资源(4)支持调度的线程池(5)支持心跳的线程池(6)支持缓存刷新的线程池(7)EurekaTransport,支持底层的eureka client跟eureka server进行网络通信的组件,对网络通信组件进行了一些初始化的操作(8)如果要抓取注册表的话,在这里就会去抓取注册表了,但是如果说你配置了不抓取,那么这里就不抓取了(9)初始化调度任务:如果要抓取注册表的话,就会注册一个定时任务,按照你设定的那个抓取的间隔,每隔一定时间(默认是30s),去执行一个CacheRefreshThread,给放那个调度线程池里去了;如果要向eureka server进行注册的话,会搞一个定时任务,每隔一定时间发送心跳,执行一个HeartbeatThread;创建了服务实例副本传播器,将自己作为一个定时任务进行调度;创建了服务实例的状态变更的监听器,如果你配置了监听,那么就会注册监听器
将自己注册一个监控
如果要抓取注册表以及服务注册的话,会搞2个THresholdLevelMetric,还有一些moitor,监视erueka客户端和服务端之间的注册表抓取行为监控
transportClientFactory
statusChangeListener监听instance的状态变更
40秒30秒
Provider<BackupRegistry>
serviceUrlPollIntervalMs
preRegistrationHandler.beforeRegistration
applicationsSource
instanceInfoReplicator开启实例信息复制器最为客户端向服务器注册自己的信息
HeartbeatThread心跳
sessionedClientReconnectIntervalSeconds会话客户端的重新连接间隔 20分钟
AsyncResolver
EurekaClientNames.QUERY
clientConfig
30秒
比较本地
EurekaClientNames.REGISTRATION
queryClientFactoryqueryClient
getAndUpdateDelta增量抓取
initScheduledTasks
拉取备份注册信息
getAndStoreFullRegistry全量抓取
初始化网络通信组件scheduleServerEndpointTask
applicationInfoManager
初始化三个线程池
EurekaTransporteureka client跟eureka server进行网络通信
heartbeatExecutor
eureka server同时也是一个eureka client,因为他可能要向其他的eureka server去进行注册,组成一个eureka server的集群。集群中的每一个server都是instance
transportConfig
DiscoveryClient
cacheRefreshExecutor
InstanceRegionChecker
0 条评论
下一页