6.824 是MIT推出的一个分布式系统课程,讲师是大名鼎鼎的Robert Tappan Morris。Lab2 是课程中的第二个实验,实验要求需要用Go语言实现Raft。Raft是为可理解而设计的共识算法(consensus algorithm),它在性能和容错性上等价于Paxos,但结构却完全不一样。Raft通过减少状态空间和将问题分解为几个独立的子问题,使得Raft更容易理解,也更利于工程实现。
在开始实验前,需要先阅读以下材料:
- 6.824 Schedule: Spring 2022
- In Search of an Understandable Consensus Algorithm
- Lab Guidance
- Students’ Guide to Raft
以上材料是必读的,在YouTube上有一个配套的教学视频,英文比较吃力的同学可以在B站看翻译后的视频。
共识算法是分布式系统最核心的部分,也是非常难的部分,Paxos的主要问题是难以理解,而且作者Leslie Lamport在论文中并没有给出具体的实现细节,正如Chubby的实现者所述:
There are significant gaps between the description of the Paxos algorithm and the needs of a real-world system. . . . the final system will be based on an unproven protocol.
大概意思是说,Paxos算法的描述和现实世界实际需求存在着显著差距,最终的系统都是基于未经证明的协议。