mongoDB——wiredTiger副本集模型的成員角色

      mongoDB的理解,現階段在串聯調查的知識點,以後開始解析代碼,從邏輯層面來再次確認理解不正確或者認識不足的地方。


Replica-set

之前接觸過的NoSQL數據庫,比如:hbase,hive來說,爲了數據的安全性和可擴展性考慮,都是是用master-slave的模型,master節點永遠承擔這read&write,slave就是冷備份,只有當master發生宕機的情況下,衆多的slave中才會升格一個作爲master,避免整個集羣失效。


WiredTiger

而mongoDB的,WiredTiger存儲引擎下,是去中心化的,沒有所謂的master-slave,官方稱爲primary-secondary。

  • 在一個副本集中,有且只有一個primary,且擁有read&write權限。
  • 一個正常的secondary成員存儲着primary所有數據的copy,secondary成員具有投票權和被選舉權(根據設定而定)

而在一個副本集中,secondary成員還有以下2種分類:

  • 擁有被選舉(Priority:1)

             即可以被選舉成爲primary,具有write權限。

  • 沒有被選舉(Priority:0)

            這種成員角色維護着primary的數據copy,但在故障切換中,永遠不會成爲primary。這類成員具有以下特性:

  1. 作爲冷備份
  2. 可副本集中,確保可以選舉出合適的primary
  3. 在replica-set的多個數據中心,通過網絡分區,確保中心數據在故障切換中,可快速選舉primary

       這類成員又細分爲以下4類:

  • Hidden members

             這類成員也像其他成員一樣,維持着primary數據的copy,不能成爲primary,可參與投票,但沒有相應read的權限,只是專注於報告需求或者備份。

  • Delayed members

            利用primary的oplog複製數據。好處是當發生人爲錯誤,比如誤刪數據庫的情況下,可以根據oplog進行恢復

  • Arbiters

            這類成員不對primary的數據進行copy,所以永遠不會成爲primary,唯一的用途就是在副本集中發生無法決策出primary時,快速選舉出最適合做primary的節點

  • Non-voting members

           擁有primary數據的copy,可以接受來自客戶端的read操作,也可以成爲primary,但在選舉中不具有投票權。


成爲primary的先決條件是:在可投票的X個成員中,某個成員獲得選票大於等於【(x/2)+1】.


  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章