『壹』 如何的才能更好的學習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 實現不可比的。