1、Cluster
Cluster模块是主节点执行集群管理的封装实现。
主要功能:
- 管理集群状态,将新生成的集群状态发布到集群所有节点。
- 在集群各节点中直接迁移分片,保持数据平衡。
- 调用allocation模块执行分片分配,决策哪些分片应该分配到哪个节点
2、Allocation
封装了分片分配相关的功能和策略,包括主分片的分配和副分片的分配,本模块由主节点调用。
3、Discovery
发现模块负责发现集群中的节点,以及选举主节点。
4、Gateway
负责对收到Master广播下来的集群状态(cluster state)数据的持久化存储,并在集群完全重启时恢复它们。
5、Indices
- 索引模块管理全局级的索引设置,不包括索引级的(索引设置分为全局级和每个索引级)。
- 封装了索引数据恢复功能。
6、HTTP
HTTP模块允许通过JSON over HTTP的方式访问ES的API,HTTP模块本质上是完全异步的,这意味着没有阻塞线程等待响应。使用异步通信进行 HTTP 的好处是解决了 C10k 问题(10k量级的并发连接)。
7、Transport
- 传输模块用于集群内节点之间的内部通信。从一个节点到另一个节点的每个请求都使用传输模块。
- 如同HTTP模块,传输模块本质上也是完全异步的。传输模块使用 TCP 通信,每个节点都与其他节点维持若干 TCP 长连接。内部节点间的所有通信都是本模块承载的。
8、Engine
Engine模块封装了对Lucene的操作及translog的调用,它是对一个分片读写操作的最终提供者。