国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

一文帶你搞明白MongoDB分布式集群

2024-09-07 00:22:36
字體:
來源:轉載
供稿:網友
      本文給大家介紹的關于MongoDB分布式集群的內容,要想更好的運用MongoDB,對MongoDB分布式集群的充分了解是有必要的,下面就跟隨小編深入了解MongoDB 分布式集群吧。
 
       在分布式應用系統中,mongodb 已經成為 NoSQL 經典數據庫。要想很好的使用 mongodb,僅僅知道如何使用它是不夠的。只有對其架構原理等有了充分認識,才能在實際運用中使其更好地服務于應用,遇到問題知道怎么處理,而不是抓瞎抹黑。
 
       集群概覽
 
       mongodb 相關的進程分為三類:
 
mongo 進程 -C 該進程是 mongodb 提供的 shell 客戶端進程,通過該客戶端可以發送命令并操作集群;
mongos 進程 -C mongodb 的路由進程,負責與客戶端連接,轉發客戶端請求到后端集群,對客戶端屏蔽集群內部結構;
mongod 進程 -C 提供數據讀寫的 mongodb 實例進程。
 
柜臺服務員接受客戶的保單業務請求(mongos 路由節點接收客戶端的操作請求);
柜臺服務員查詢文件目錄系統查看該保單應該保存到哪個倉庫(mongos 節點與 config 配置節點通信,查詢相關操作數據在哪個分片節點);
知道哪個倉庫后,柜臺服務員將保單給倉庫管理員,倉庫管理員將保單放到指定倉庫中(mongos 節點將請求發送給數據所在分片節點,分片節點進行讀寫處理)。
       mongos 路由服務
 
       mongos 服務類似網關,連接 mongodb 集群與應用程序,對外屏蔽 mongodb 內部結構,應用程序只需要將請求發送給 mongos,而無需關心集群內部副本分片等信息。
 
       mongos 本身不保存數據與索引信息,它通過查詢 config 配置服務來獲取,所以可以考慮將 mongos 與應用程序部署在同一臺服務器上,當服務器宕機時 mongos 也一起失效,防止出現 mongos 閑置。
 
       mongos 節點也可以是單個節點,但為了高可用,一般部署多個節點。就像柜臺服務員一樣,可以有多個,相互之間沒有主備關系,都可以獨立處理業務。
 
       需要注意的是,在開啟分片的情況下,應用程序應該避免直接連接分片節點進行數據修改,因為這種情況下很可能造成數據不一致等嚴重后果,而是通過 mongos 節點來操作。
 
       config 配置服務
 
       config 配置節點本質也是一個副本集,副本集中存放集群的元數據,如各個分片上的數據塊列表,數據范圍,身份驗證等信息。如下,可以看到數據庫 config,數據庫中集合保存了集群的重要元數據。
 
mongos> use config;
switched to db config
mongos> show collections;
changelog
chunks
collections
databases
lockpings
locks
migrations
mongos
shards
tags
transactions
version
       一般情況下,用戶不應該直接變更 config 的數據,否則很可能造成嚴重后果。
 
 
       所以副本集是一個縱向概念,描述的是相同的數據存儲在多個節點上;而分片是一個橫向概念,描述的是全量數據被切成不同的片段,每個片段獨立存儲。這個片段就是分片,而分片通過副本集進行存儲。
 
       副本集
 
       副本集包含三種角色:
 
主節點(Primary)
副節點(Secondary)
仲裁節點(Arbiter)
       一個副本集由一個主節點,多個副節點,0或多個仲裁節點組成。
 
       主節點與副節點是數據節點。主節點提供數據的寫操作,數據寫到主節點后,會通過同步機制同步到副節點上。默認讀操作也由主節點提供,但是可以手動設置 read preference,優先從副節點讀取。
 
       仲裁節點不是數據節點,不存儲數據,也不提供讀寫操作。仲裁節點是作為投票者存在,當主節點異常需要進行切換時,仲裁節點有投票權,但沒有被投票權。仲裁節點可以在資源有限的情況下,依然支持故障恢復。比如只有2個節點的硬盤資源,在這種情況下可以增加一個不占存儲的仲裁節點,組成“一主一副一仲裁”的副本集架構,當主節點宕掉時,副節點能夠自動切換。
 
       節點間通過“心跳”進行溝通,以此知道彼此的狀態。當主節點異常不可用時,從其他有被投票權的節點中投票選出一個升級為主節點,繼續保持服務高可用。這里投票采取“大多數”原則,即需要多于總節點數一半的節點同意,才能被選舉成主節點。也因此不建議采用偶數個節點組成副本集,因為偶數情況下,如果發生半數節點網絡隔離,隔離的半數節點達不到“大多數”的要求,無法選舉產生新的主節點。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内江市| 子洲县| 乌拉特中旗| 辛集市| 建昌县| 阳西县| 灵川县| 鲁山县| 行唐县| 宁城县| 马山县| 聊城市| 北辰区| 延川县| 商都县| 藁城市| 石门县| 张北县| 湖南省| 高清| 从化市| 全椒县| 承德县| 乌兰察布市| 合川市| 天等县| 康保县| 通渭县| 峨边| 隆化县| 昭觉县| 房产| 山丹县| 榆林市| 吉林省| 揭阳市| 皋兰县| 体育| 铜川市| 香港| 通辽市|