面试题答案
一键面试基本原理
Elasticsearch 使用基于 Zen Discovery 的选举算法(在 Elasticsearch 7.0 之前),之后版本默认切换到了基于 Raft 的选举算法。以 Raft 为例,其核心在于通过领导者(Leader)来协调集群状态的变更,在选举过程中,节点间通过心跳和投票机制来确定领导者。
主要组件及作用
- 节点:
- 候选节点(Candidate):当节点启动或发现当前没有领导者时,它会转换为候选节点。候选节点发起选举,向其他节点发送投票请求,若获得超过半数节点的投票,则成为领导者。
- 领导者节点(Leader):负责处理所有写操作,并将数据变更同步到其他节点(跟随者节点)。领导者定期向跟随者发送心跳信息,以维持其领导地位。
- 跟随者节点(Follower):接收领导者的心跳信息,确认领导者的存在。在接收到候选节点的投票请求时,跟随者节点可以投票给候选节点。若在一定时间内未收到领导者的心跳,跟随者节点可能会转换为候选节点并发起新一轮选举。
- 集群状态:集群状态记录了集群中所有节点、索引、分片等信息。领导者负责维护和更新集群状态,并将其同步给其他节点,确保整个集群状态的一致性。这对于选举过程中判断节点是否符合条件以及集群是否健康稳定运行至关重要。