Stanford的新的分布式协议raft算法作为paxos算法的替代品(Paxos难于理解,难以实现),优点是更注重协议的可理解性以及可落地性,已经在etcd,consul中应用。该协议各节点之间如同主从模式,由一个节点负责接收命令,然后通知各个从节点,当过半数节点确认后,则该命令生效.
raft协议中节点分为三种状态:
1.Follower:所有结点都以follower的状态开始,负责跟随leader保持同步状态,选主时负责投票。如果leaderheartbeat timeout
②会进入candidate状态。
2.Candidate :由超时的follower转变而来,会发起新一轮的选主投票过程,会投自己一票并且发起RequestVote RPC给其余节点,要求投票,得到超过半数的candidate将成为新的leader。
3.Leader:一般一个任期(term
①)内只有一个leader,主要负责处理所有客户端交互,发送heartbeat消息(Append Entries messages)维护更新其余follower日志状态。