最近在跟着做6.824的Spring lab。目前做到了lab2,要求实现一个简易的Raft协议。在学习过程中遇到了很多困难,直接看Raft的那篇Extended paper对于我这种智力-2的选手太难了。因此我看了很多资料,整理了一个个人认为比较适合的阅读顺序:
Paxos基础
- Paxos Wiki 介绍了Basic Paxos/Multi Paxos,有大量的图示讲解,能够建立一个overview
- Stanford Paxos Slides主要看Paxos的来源以及Multi Paxos的各种优化
- Multi-Paxos上面那个slides的更具体的解释
Raft基础
- Raft visualization 可视化Raft的一个大致过程
- InfoQ Raft Introduction 更细致一些的visualization与Log Replica过程
- Stanford Raft Slides Raft论文的压缩版
- Paxos & Raft Quiz 做做题确认自己理解了上面的内容
- Raft original paper (extended) 补足Slides中没有提到的部分
工程实践
- Oceanbase的Paxos三部曲
- TiDB的Raft优化
- Students’ Guide to Raft 6.824助教记录下来的一些坑
UPDATE:
总算通过了Lab2的测试……中途也用了不少库和调试工具在此记录下:
- Logrus 一个好用的log库
go test -race
,可以搭配GORACE="halt_on_error=1 history_size=7"
获得更好的效果- go-deadlock 带死锁检测的Mutex
- go-pprof 可以看所有goroutine的堆栈、profile锁等,非常好用
- go-spew 好用的pretty printer,不过用的时候记得加锁
gdb
最传统的但是还是要有…