6.824 Lab 2: Raft协议实现指南 (无剧透版)
背景
MIT6.824是一个用来学习分布式系统的非常好的资源。其中第二个课程作业就是关于Raft算法。
由于在工作中涉及到分布一致性算法的调研,接触了paxos/raft算法。然后被@neutronest安利了一发,于是开始着手实现这个作业。
本文是我对这个项目的实现总结。希望能在划出重点的同时,不涉及实现细节,避免破坏大家的写代码体验。
本文唯一参考资料:In Search of an Understandable Consensus Algorithm
任务分解
在官方文档里,整个项目被分成了2A、2B、2C三个部分:
- 2A - 投票与选举
- 2B - 一致性
- 2C - 可持久化
实际上,2C的工作量非常少,我们可以把2B和2C合成一个。然后单独提出几个比较重要的测试用例,划分成子项目。任务分解如下:
- 2A - 投票与选举
- 2B/2C - 一致性和可持久化
- 三个难度比较高的Case
- Test (2B): leader backs …