Because of the DP presentations, you will not have recitation videochats for this paper.

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:

With those visualizations in mind, read the paper. Skip sections 5.4.3 and 7.

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:

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.

  1. 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?
  2. 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.)
  3. 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?