Raft学习记录


raft for dumbs

最近在跟着做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基础

工程实践

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 最传统的但是还是要有…