eureka server同步任务批处理机制
2021-06-23 17:57:10 0 举报
eureka server同步任务批处理机制
作者其他创作
大纲/内容
BacthingDispatcher
心跳
ApplicationResource
下线
注册
processingOrder
jersy2-ReplicationClient
AcceptorExecutor
batch
server2:8761
不同于一般情况下,任务提交了立即同步或异步执行,任务的执行拆分了三层队列:第一层,接收队列( acceptorQueue ),重新处理队列( reprocessQueue )。蓝线:分发器在收到任务执行请求后,提交到接收队列,任务实际未执行。黄线:执行器的工作线程处理任务失败,将符合条件( 见 「3. 任务处理器」 )的失败任务提交到重新执行队列。第二层,待执行队列( processingOrder )粉线:接收线程( Runner )将重新执行队列,接收队列提交到待执行队列。第三层,工作队列( workQueue )粉线:接收线程( Runner )将待执行队列的任务根据参数( maxBatchingSize )将任务合并成批量任务,调度( 提交 )到工作队列。黄线:执行器的工作线程池,一个工作线程可以拉取一个批量任务进行执行。 三层队列的好处:接收队列,避免处理任务的阻塞等待。接收线程( Runner )合并任务,将相同任务编号( 是的,任务是带有编号的 )的任务合并,只执行一次。Eureka-Server 为集群同步提供批量操作多个应用实例的接口,一个批量任务可以一次调度接口完成,避免多次调用的开销。当然,这样做的前提是合并任务,这也导致 Eureka-Server 集群之间对应用实例的注册和下线带来更大的延迟。毕竟,Eureka 是在 CAP 之间,选择了 AP
InstanceResource
一次网络请求将batch数据发送过来
ReplicationTaskProcessor后台线程
AcceptorRunner后台线程Task
节省网络通讯开销
PeerReplicationResource#batchReplication
每500ms就会将队列里的任务打包成一个batch,batch最大值是250
三层缓存解读
acceptorQueue
batchWorkQueue
server1:8761
submitBacthUpdates
0 条评论
下一页