【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源码与优化实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值