Raft 是怎样选出 Leader、复制日志的?和 Paxos 有什么区别?
先自己想一想,再看参考要点
参考要点
- 节点分为 Follower、Candidate 和 Leader,时间划分为任期,每个任期最多一个 Leader
- Follower 在随机的竞选超时内没有收到心跳,就成为 Candidate,任期号加 1 并请求投票,每个节点在一个任期内只投一票,只投给日志不比自己旧的 Candidate,得到过半选票就成为 Leader,随机超时让多个节点同时竞选、平票的概率很低
- 写入先进入 Leader 的日志,复制到大多数节点后才提交并返回,与 Leader 不一致的 Follower 日志被覆盖
- 网络分区时少数派一侧的旧 Leader 无法提交,不会脑裂
- 与 Paxos 达成的结果等价,但 Raft 把选主作为协议的一部分,日志只从 Leader 流向 Follower,更容易理解和实现