任何时刻,每一个服务器节点都处于 leader, follower, candidate 三个状态之一
Raft 只需要考虑状态的切换,不需要像 Paxos 一样考虑状态之间的共存和互相影响
Raft 保证一个任期内只能有一个 Leader 产生,同时任期的机制可以非常容易看出集群的状态,例如看某个节点是否有 Term 2 任期可以看出节点是否离线
主要只有两种不同的 RPC 通信方式:
服务器之间通信的时候会交换当前任期号;如果一个服务器上的当前任期号比其他的小, 该服务器会将自己的任期号更新为较大的那个值。
如果一个节点接收到一个包含过期的任期号的请求,它会直接拒绝这个请求。
如果一个 candidate 或者 leader 发现自己的任期号过期了,它会立即回到 follower 状态。