Replication
不僅是客戶端連接?“MongoDB Wire Protocol”是否也用於複製?
似乎MongoDB Wire Protocol也用於複製。不僅是客戶端/驅動程序連接。這是真的嗎?客戶端/驅動程序和複製流量之間的主要區別是什麼?
MongoDB Wire Protocol 是一個簡單的基於套接字的請求-響應式協議。客戶端通過正常 TCP/IP 套接字與數據庫伺服器通信。
從協議的角度來看,沒有區別。一個非常基本的思考方式是這樣的(假設您啟動了一個相當最新的輔助節點並且沒有執行初始同步):
- 複製是從輔助節點到主節點的客戶端連接
- 這是使用 TCP/IP 並在頂部使用 MongoDB 有線協議完成的(除非您使用 SSL,否則會添加到混合中)
- 輔助創建一個可尾游標並開始從Oplog流式傳輸操作
- 輔助節點將這些冪等操作應用於其數據,以達到與主節點相同的狀態
現在,實際上事情比這更複雜,但這給了你一個很好的起點。您仍然必須添加多執行緒複製、複製鏈,以便您可以從另一個輔助而不是主複製等。這些是我在(當我在 MongoDB 工作時)及以後進行了數小時白板會議的高級主題這個答案的範圍,更不用說我現在的資訊可能已經過時了。
如果您想深入了解複製的工作原理,我推薦 Kristina Chodorow 的內部文章(儘管這些天它們有點過時)以及 MongoDB 工程師就該主題進行的各種討論(這裡是一個範例) .