‘壹’ 如何的才能更好的学习MIT6.824分布式系统课程
首先 Google 的入门三篇(GFS / Big Table / Map Rece) 是一定要读的,有个对分布式系统的基本认识,另外需要理解 lamport 老爷子的 logical clock 的思想,之后去读 Raft。
Raft 其实实现一个玩具还是比较容易的,真正难的是在原论文中没有提到的很多工程优化。但是按照原论文的几个 RPC 实现是没啥大问题的,就是有点慢另外吞吐上不去而已。
参考几个 go 的 raft 实现咯,比如 hashicorp 的那个(consul 这个可能测试少了点,也许有 bug),c++ 的 logcabin (diego 自己写的...不过性能呵呵)
几个工业级别的 raft 实现其实不太适合初学者,比如 coreos 的 etcd 和 pingcap 的 tikv(其实这两个 raft 实现本是同根生,都是源自 etcd 的 raft 实现,由 pingcap 和 coreos 两个团队互相维护和开发). 这两个实现做了大量的工程优化,有些地方和原论文有点不一样。不过这两个不管是测试还是生产环境中的检验,都是其他 raft 实现不可比的。