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