ElasticSearch 源码分析 十三 集群

Cluster 模块封装了集群层面要执行的任务

ElasticSearch 集群的两个主要service

MasterService :负责集群任务管理,运行。对外提供提交任务的接口,接收到任务后,内部维护一个线程池来运行这些任务。

上图已经展示出,把任务提交到线程池,底层实现为PrioritizedEsThreadPoolExecutor

这个service 主要是处理集群状态和监听器

运行集群任务,在MasterService 的 doStart方法,如下

提交集群任务,在ClusterApplierService的submitStateUpdateTask ,提交集群状态更新的task。然后调用线程池执行任务

提交的线程池,具体实现同上,为ES的优先级线程池PrioritizedEsThreadPoolExecutor

任务的执行 :看runTasks

1.校验当前master service 必须是已启动 started

2.校验当前节点必须是master节点

3.然后构建clusterChangedEvent,调用集群发布器发布这个集群变更事件