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. Skip sections 5.4.3 and 7.
- 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 help you master the technical material, we're trying out some new things. We've developed a list of questions that you should be able to answer after reading, and we'll be holding open office hours specifically for help in answering those questions.
Reflection Questions
Below are three questions for you to reflect on as you read the paper. You will post your reflection, or respond to another student's reflection, on your Teaching Team Piazzas. You do not need to email responses to these questions to your TA. As a reminder:
- Each DP team should have one team member post a reflection, and the others respond to someone else’s reflection (you don't have to respond to your DP teammate's reflection). Rotate which member posts each week.
- You only need to post a reflection (or a respond to a reflection) about one of the questions below. If you see all of your fellow students reflecting on the same question, try to pick a different one.
Now, for the questions themselves. There are many possibile answers for each. We're expecting you to thoughtfully consider these questions, not come up with the single "best" answer. 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.” Did they find one (i.e., is Raft understandable)? Do the authors achieve any other design goals as a result of designing for understandability?
- Suppose we were still on campus, and wanted to have you act out Raft in recitation. How would you design that activity? How would you illustrate the specific types of failures that Raft handles? (Lest you think this is not a technical question: trust us that figuring out how to best act out these systems requires a solid understanding of the system itself.)
- Along with this week’s lecture, we’ve finished the fault tolerance portion of 6.033. What themes have you seen in this portion? How does Raft fit into the big picture of fault-tolerant systems?