Raft算法三节点集群故障场景:选举与日志复制疑问
3节点Raft集群单节点故障后的核心问题解答
1. 选举阶段Leader如何获得多数票?
3节点集群的多数票阈值是2(计算逻辑:节点数//2 +1)。选举流程里,候选人(也就是后续成为Leader的节点)会先给自己投一票,再向剩余可用的Follower发起投票请求。此时集群剩下1个Leader(原候选人)和1个正常Follower,只要Follower响应并投出赞成票,候选人就能拿到2票,满足多数要求,成功当选Leader。
2. Leader是否可以给自己投票?
可以。Raft协议明确规定,候选人发起选举的第一步就是给自己投一票,这是选举机制的标准流程。
3. 日志复制阶段如何达成多数?
同样基于2票的多数阈值:Leader生成日志条目后,会先将条目写入自己的本地日志(这算1票),再向Follower发送日志复制请求。当Follower成功写入日志并返回确认后,已成功写入的节点数就达到了2,满足多数要求,Leader即可提交这条日志,并通知Follower同步提交状态。
4. 日志复制时是否会陷入无限等待?
不会。只要剩余的Follower处于正常工作状态,它会处理Leader的日志复制请求并返回确认,Leader很快就能凑够2个节点的写入确认,完成日志提交。只有当剩余的Follower也发生故障时,集群才会失去多数节点支持(仅剩Leader1个节点),此时Raft会停止处理新请求,但这是集群无法继续服务的正常状态,不属于无限等待——一旦故障节点恢复,集群会重新恢复正常运行。
内容的提问来源于stack exchange,提问作者danialang
相关产品推荐
相关产品推荐

