面试题答案
一键面试基本原理
ElasticSearch集群主节点选举采用的是基于Bully算法思想的分布式算法。其核心原理是通过节点间的相互通信和比较,让具有较高“资格”的节点成为主节点。它依赖于节点之间的ping机制来检测节点的存活状态,并以此作为选举依据。
主要概念
- 节点角色:
- 主节点:负责集群的元数据管理,如索引的创建、删除,节点的加入和离开等操作。
- 数据节点:主要负责存储和处理数据。
- 协调节点:负责接收客户端请求,将请求分发到合适的数据节点,并汇总结果返回给客户端。
- 节点ID:每个节点都有唯一的ID,在选举过程中,节点ID用于比较节点的优先级。
- 版本号:每次集群状态变化时,版本号会递增,保证集群状态的一致性。
选举大致流程
- 初始化:集群启动时,所有节点都认为自己是主节点候选人。
- ping操作:节点之间相互发送ping请求,以发现其他节点并交换状态信息。
- 资格比较:每个节点将自己的节点ID与接收到的其他节点ID进行比较。具有最高节点ID的节点认为自己是潜在的主节点。
- 投票:节点向其他节点发送自己认为的主节点信息。如果多数节点(超过一半节点数量)认可某个节点为主节点,那么该节点就成为主节点。
- 集群状态更新:当选的主节点更新集群状态,并将更新后的状态信息广播给其他所有节点,其他节点根据接收到的状态信息调整自己的状态,完成选举过程。