Cluster 模块封装了集群层面要执行的任务
ElasticSearch 集群的两个主要service
MasterService :负责集群任务管理,运行。对外提供提交任务的接口,接收到任务后,内部维护一个线程池来运行这些任务。
上图已经展示出,把任务提交到线程池,底层实现为PrioritizedEsThreadPoolExecutor
这个service 主要是处理集群状态和监听器
运行集群任务,在MasterService 的 doStart方法,如下
提交集群任务,在ClusterApplierService的submitStateUpdateTask ,提交集群状态更新的task。然后调用线程池执行任务
提交的线程池,具体实现同上,为ES的优先级线程池PrioritizedEsThreadPoolExecutor
任务的执行 :看runTasks
1.校验当前master service 必须是已启动 started
2.校验当前节点必须是master节点
3.然后构建clusterChangedEvent,调用集群发布器发布这个集群变更事件