面试题答案
一键面试基本流程
- 集群启动:Elasticsearch集群启动时,GatewayAllocator开始工作。它首先需要从持久化存储(如磁盘)加载集群状态信息。
- 获取集群状态:从网关(如本地文件系统、共享文件系统等)中读取保存的集群状态。这个状态包含了索引的元数据、分片的分配信息等。
- 分析分配需求:根据加载的集群状态,分析每个索引的分片分布需求。确定哪些分片需要分配到哪些节点上,考虑因素包括节点的负载、节点的健康状态等。
- 执行分配:将分片分配到合适的节点上。如果节点上还没有该分片的数据,会从其他拥有该分片副本的节点进行数据复制。
- 完成分配并更新状态:当所有分片都成功分配并完成数据同步后,更新集群状态,标记分配任务完成。
主要步骤
- 状态加载步骤:从网关读取存储的集群状态数据,解析其中的索引和分片信息。
- 需求分析步骤:评估节点的资源(如磁盘空间、CPU、内存等),结合分片的副本策略,规划每个分片的最佳分配位置。
- 分配执行步骤:向目标节点发送分配命令,节点接收到命令后开始处理分片数据的加载或复制。
关键组件
- Gateway:负责持久化存储集群状态信息,常见的有本地文件系统网关(Local Gateway)和共享文件系统网关(如NFS)等。它提供了加载和保存集群状态的接口。
- ClusterState:集群状态对象,包含了整个集群的元数据,如索引信息、节点信息、分片分配信息等。GatewayAllocator依据这个对象来进行分配决策。
- Node:Elasticsearch集群中的节点,负责接收分配任务并处理分片数据的加载、复制等操作。节点之间通过内部通信机制进行数据同步和状态更新。