本章給出了raftexample中使用的傳輸層程式碼,補全了上一節中傳輸層與raft節點(raft server和channel server)的互動細節。下圖中流程的核心在於傳輸層中的streamRtpipelineRt,raft的傳輸層通過這兩個roundtrip與其他節點互動,並通過streamReader讀取來自其他節點的資訊進行處理。streamHandler用於給msgAppV2Writerwriter提供連線,處理完之後返回給handler(raft example中好像沒有涉及streamHandler的處理)。

該模組中使用了大量channel,可以借鑑其思想和方式。

原圖地址:transport

參考

etcd-raft 網路傳輸原始碼簡析