Python知識分享網(wǎng) - 專業(yè)的Python學習網(wǎng)站 學Python,上Python222
深入探索MongoDB集群模式:從高可用復制集到動態(tài)擴容實戰(zhàn) PDF 下載
發(fā)布于:2024-01-29 11:28:10
(假如點擊沒反應,多刷新兩次就OK!)

深入探索MongoDB集群模式:從高可用復制集到動態(tài)擴容實戰(zhàn) PDF 下載  圖1

 

 

 

資料內(nèi)容:

 

 

MongoDB 復制集
MongoDB復制集的主要意義在于實現(xiàn)服務高可用,類似于Redis中的哨兵模式
它主要提供兩個方面的功能
1. 數(shù)據(jù)寫入主節(jié)點(Primary)時將數(shù)據(jù)復制到另一個副本節(jié)(Secondary)點上
2. 主節(jié)點發(fā)生故障時自動選舉出一個新的替代節(jié)點
在實現(xiàn)高可用的同時,復制集實現(xiàn)了其他幾個作用
數(shù)據(jù)分發(fā):將數(shù)據(jù)從一個區(qū)域復制到另一個區(qū)域,減少另一個區(qū)域的讀延遲
讀寫分離:不同類型的壓力分別在不同的節(jié)點上執(zhí)行
異地容災:在數(shù)據(jù)中心故障時快速切換到異地
典型復制集結構
一個典型的復制集由三個或三個以上具有投票權的節(jié)點組成,其中一個主節(jié)點(Primary):接
收寫入操作,讀操作和選舉時投票,兩個或多個從節(jié)點(Secondary):復制主節(jié)點上的新數(shù)據(jù)和
選舉時投票
數(shù)據(jù)是如何復制的?
當一個修改操作,無論是插入,更新或刪除,到達主節(jié)點時,它對數(shù)據(jù)的操作將被記錄下來(經(jīng)
過一些必要的轉換)。這些記錄稱為oplog從節(jié)點通過從主節(jié)點上不斷獲取新進入主節(jié)點的oplog,并在自己的數(shù)據(jù)上回放,以此保持跟主
節(jié)點的數(shù)據(jù)一致。
 
通過選舉完成故障恢復
具有投票權的節(jié)點之間兩兩互相發(fā)送心跳;
當5次心跳未收到時判斷為節(jié)點失聯(lián)
如果失聯(lián)的是主機點,從節(jié)點會發(fā)起選舉,選出新的主節(jié)點
如果失聯(lián)的是從節(jié)點則不會產(chǎn)生新的選舉
選舉基于RAFT一致性算法實現(xiàn),選舉成功的必要條件是大多數(shù)投票節(jié)點存活
復制集中最多可以有50個節(jié)點,但具有投票權的節(jié)點最多7個
影響選舉的因素
整個集群必須有大多數(shù)節(jié)點存活
被選舉為主節(jié)點的節(jié)點必須
1.能夠與多數(shù)節(jié)點建立連接
2.具有較新的oplog
3.具有較高的優(yōu)先級(如果有配置)
復制集節(jié)點有以下的選配項
是否具有投票權(v 參數(shù)): 有則參與投票
優(yōu)先級(priority參數(shù)):優(yōu)先級越高的節(jié)點越優(yōu)先成為主節(jié)點。優(yōu)先級為0的節(jié)點無法成為主節(jié)
點,默認值為1。