lasticsearch 的集群状态(Cluster State)确实只记录了当前的完整状态,而不会直接存储之前的状态或变化的历史信息。要了解哪些内容发生了变化,需要通过对比前后两个集群状态来计算。这种设计的核心思想是:
1. 集群状态是一个快照
集群状态是一个全局一致的快照,记录了集群在某个时间点的完整状态。它包括:
-
索引元数据:每个索引的配置、设置、映射等。
-
分片分配:每个分片的分配情况,包括主分片和副本分片的位置。
-
节点信息:集群中所有节点的状态和角色。
-
其他元数据:如全局设置、模板等。
2. 变化通过对比前后状态来计算
要了解哪些内容发生了变化,需要通过对比前后两个集群状态来计算。具体来说:
-
新增的内容:在当前状态中存在,但在之前状态中不存在。
-
删除的内容:在之前状态中存在,但在当前状态中不存在。
-
修改的内容:在前后状态中都存在,但某些属性发生了变化。
3. 为什么这样设计?
3.1 简洁性
-
集群状态只记录当前的完整状态,而不是记录每次变化的详细信息。这使得集群状态始终保持简洁和一致,便于管理和同步。
3.2 效率
-
通过计算差异(diff),Elasticsearch 可以高效地处理集群状态的变化,而不需要在每个节点上存储大量的临时信息。
3.3 最终一致性
-
通过持续的增量更新,Elasticsearch 确保所有节点最终都能达到一致的状态。即使某些节点暂时离线,它们在重新加入集群时也能通过同步最新的集群状态来恢复。


被折叠的 条评论
为什么被折叠?



