For this recitation, you'll be reading In Search of an Understandable Consensus Algorithm. This paper describes Raft, an algorithm for achieving distributed consensus. The paper contrasts Raft to an algorithm called Paxos: you do not need to know anything about Paxos to read this paper. Raft was designed to be more understandable than Paxos.
Before reading the paper, check out two very helpful websites, which have some useful visualizations:
- An introduction to distributed consensus
- A visualization of Raft
With those visualizations in mind, read the paper. Skim sections 5.4.3, 7, 9.1, and 9.2.
- The first four sections give background and motivation for Raft. Sections five and six are the primary technical sections.
- Fig. 2 is a good reference to come back to after you've read the paper. Don't get stuck trying to memorize the entire table before you move onto page 5 of the paper; skip it, come back to it during your reading or at the end.
To check your understanding of the paper at this point, you should be able to answer the following:
- How does Raft handle the following three types of failures?: leader failures, candidate or follower failures, and network partitions (a network partition means that one part of the cluster is unable to communicate with any machine in the other part).
- Take a look at figure 7. For each log, (a)-(f), what sequence of events might have led to that log?
Question for Recitation
Before you come to this recitation, you'll turn in a brief answer to the following questions (really—we don't need more than a sentence or so for each question). Your TA will be in touch about exactly how to turn that in.
Your answers to these questions should be in your own words, not direct quotations from the paper.
- The authors of Raft were "in search of an understandable consensus algorithm". What does it mean to be understandable in this context? Understandable by whom?
- How understandable is Raft, in your opinion?
- Why is understandability important? (Or is it important?)