Basic
一个 Raft 集群的机器有三种状态:Leader、Follower、Candidate:
Raft 状态转换
- Follower 为初始状态
- 当选举超时时,Follower/Candidate → Candidate(重新开始新的一轮选举)
- Candidate 收到过半的选票后,Candidate → Leader
- 发现新的 Leader or 触发新的一轮选举时,Candidate → Follower
- Leader 当发现有更高 Term 的服务时,切换为 Follower
Term
Raft 把时间划分为多个 Term(以连续的整数编号),每个 Term 以 Selection 开始,其中一个或多个 Candidate 试图成为 Leader,如果 Candidate 赢得选举,则其在该 Term 中成为 Leader。
Term 用于充当逻辑时钟,收到 Term 比自己当前 Term 更大时,则会更新自己当前 Term。
- Follower 收到过期 Term 的消息时,会忽略
- Leader & Candidate 收到更大的 Term 时,会切换回 Follower 状态。