Eureka集群,实例注册流程
2020-06-22 11:28:57 0 举报
登录查看完整内容
Eureka 注册实例详细流程,可以用此图跟踪源码
作者其他创作
大纲/内容
步骤1
Eureka Server1
AcceptorExecutor#process构造TaskHolder任务,并添加到阻塞队列acceptorQueue中TaskHolder中维持着注册实例、伙伴节点等信息
AbstractInstanceRegistry#register注册节点
步骤2
ApplicationResource#addInstance接收http注册请求,接收实例InstanceInfo
伙伴节点接收批量注册请求
在此获取阻塞队列内容
将获取到的TaskHolder传递到pendingTasks、processingOrder中
Eurea Server2
ApplicationResource#addInstance调用执行单实例注册,同上方法
AcceptorExecutor#acceptorThread初始为后台线程,传递AcceptorRunner实例任务名称以TaskAcceptor-开头
TaskExecutors.BatchWorkerRunnable#getTasksOf获取任务列表
PeerAwareInstanceRegistryImpl#register第一步:调用父类进行注册第二步:通知副本节点有节点注册
PeerEurekaNode#register判断为Register,执行伙伴节点register方法
InstanceRegistry#register第一步:发布注册事件第二步:调用父类注册方法
将后台任务添加到AcceptorExecutor#batchWorkQueue中
PeerReplicationResource#batchReplication接收批量注册请求,path:/peerreplication/batch/
ReplicationTaskProcessor#process批量处理任务
AcceptorRunner#run运行线程
Peer1PeerAwareInstanceRegistryImpl#replicateInstanceActionsToPeers遍历伙伴节点,调用此方法,将实例发送到所有伙伴节点
TaskAcceptor-线程
Peer2
TaskExecutors#batchExecutors创建TaskExecutors,并生成BatchWorkerRunnabler任务,任务前缀为TaskBatchingWorker-
PeerAwareInstanceRegistryImpl#replicateToPeers通知伙伴节点
Eureka集群注册流程
获取
......
步骤3
AcceptorRunner#drainInputQueues循环获取acceptorQueue队列元素
TaskDispatcher#process此类由TaskDispatchers#createBatchingTaskDispatcher方法创建
TaskBatchingWorker-线程
PeerReplicationResource#handleRegister处理注册请求
接收HTTP线程
PeerReplicationResource#dispatch对于每个实例,执行分发
JerseyReplicationClient#submitBatchUpdates通过http请求伙伴节点,批量注册实例http路径为:\"peerreplication/batch/\"
BatchWorkerRunnable#run运行线程
AcceptorRunner#assignBatchWork处理pendingTasks任务
0 条评论
回复 删除
下一页