Before Raft, there already exist several consensus protocols(e.g., Paxos, view-stamped replication). However, as we know, Paxos is notoriously difficult to understand. Although the algorithm itself is not very complicated, the question I always ask when I study Paxos is: Why does it work? Besides, the Paxos algorithm introduced by Lamport is somewhat incomplete. For example, it doesn’t address the “Dueling Proposers” problem and the cluster membership management. The original version of Paxos(called Synod) is also inefficient since it needs two rounds to choose a single value.