最近在看raft相關的代碼和實現,發現etcd的raft模塊在實現上還是比較靈活的,但缺點就是需要用戶實現比較多的功能,如存儲和網絡等,同時帶來的優點就是不會對用戶的存儲和傳輸作限制。網上對該模塊的描述也比較多,這里我主要根據代碼畫出簡易的處理邏輯,代碼邏輯可以參考這里(后續流程圖也會按照這個系列的講解順序來)。
該例子給出了etcd raft處理的總體架構圖,但並不涉及raft處理的細節,綠底部分為raft節點的server,右下側為需要用戶實現的存儲和傳輸層。右上側為對外的Http server,處理添加新表項、增加/移除raft節點等,並通過不同的channel與raft server進行交互。
下面官方給出的例子的處理邏輯:

原圖地址:raftexample
