【Elasticsearch】源码-Elasticsearch源码基础模块

ES源码的主要基础模块:

Cluster

Cluster模块主要是主节点执行集群管理的封装实现,管理集群状态,维护集群层面的配置信息等。主要有:

  1. 管理集群状态,将新生成的集群状态发布到集群的所有节点
  2. 调用allocation模块执行分片分配,决策那些分片应该分配到哪个节点
  3. 在集群各节点中直接迁移分片,保持数据平衡

Allocation

封装了分片分配相关的功能和策略,包括主分片的分配和副本分片的分配,allocation由主节点调用。创建新索引、集群完全重启都需要分片分配的过程。

Discovery

负责发现集群中的节点,以及选举主节点。当节点加入或退出集群时,主节点会采取相应的行动。从某种角度来说,discovery模块起到类似zookeeper的作用,选主并管理集群拓扑。

Gateway

负责对收到Master广播下来的集群状态(cluster state)数据的持久化存储,并在集群完全重启时恢复它们。

Indices

索引模块管理全局级的索引设置,不包括索引级的(索引设置分为全局级和每个索引级)。它还封装了索引数据恢复功能。集群启动阶段需要的主分片恢复和副本分片恢复就是在这个模块实现的。

HTTP

HTTP模块允许通过JSON over HTTP的方式访问ES的API,HTTP模块本质上是完全异步的,这意味着没有阻塞线程等待响应。

Transport

传输模块用于集群内节点之间的内部通信。从一个节点到另一个节点的每个请求都使用传输模块。如同HTTP模块,传输模块本质上也是完全异步的。

Engine

Engine模块封装了对Lucene的操作及translog的调用,它是对一个分片读写操作的最终提供者。

小结

像其他的一些我们熟悉的流程:索引写流程、GET流程、Search流程、索引恢复流程都是建立在这些基础模块上进行操作的。

后续会更新各个模块的源码学习总结,记得关注,后续持续更新。

参考:
Elasticsearch源码与优化实战

发布了18 篇原创文章 · 获赞 38 · 访问量 681

猜你喜欢

转载自blog.csdn.net/wudingmei1023/article/details/103897632