時間:2024-02-08 11:17作者:下載吧人氣:29
在分布式應(yīng)用系統(tǒng)中,mongodb 已經(jīng)成為 NoSQL 經(jīng)典數(shù)據(jù)庫。要想很好的使用 mongodb,僅僅知道如何使用它是不夠的。只有對其架構(gòu)原理等有了充分認(rèn)識,才能在實(shí)際運(yùn)用中使其更好地服務(wù)于應(yīng)用,遇到問題知道怎么處理,而不是抓瞎抹黑。這篇文章就帶你進(jìn)入 mongodb 集群的大門。
集群概覽
mongodb 相關(guān)的進(jìn)程分為三類:
類比銀行服務(wù),mongo 進(jìn)程相當(dāng)于客戶,mongos 進(jìn)程是柜臺服務(wù)員,mongod 進(jìn)程是銀行后臺實(shí)際處理業(yè)務(wù)的人員或者流程??蛻糁恍枰凸衽_服務(wù)員溝通,告知辦什么業(yè)務(wù),柜臺服務(wù)員將業(yè)務(wù)轉(zhuǎn)往后臺,后臺實(shí)際處理。
下圖是 mongodb 集群的一般拓?fù)浣Y(jié)構(gòu)。
如圖,mongodb 集群的節(jié)點(diǎn)分為三類:
還是拿銀行業(yè)務(wù)類比,當(dāng)客戶辦理保單保存業(yè)務(wù)時,
mongos 路由服務(wù)
mongos 服務(wù)類似網(wǎng)關(guān),連接 mongodb 集群與應(yīng)用程序,對外屏蔽 mongodb 內(nèi)部結(jié)構(gòu),應(yīng)用程序只需要將請求發(fā)送給 mongos,而無需關(guān)心集群內(nèi)部副本分片等信息。
mongos 本身不保存數(shù)據(jù)與索引信息,它通過查詢 config 配置服務(wù)來獲取,所以可以考慮將 mongos 與應(yīng)用程序部署在同一臺服務(wù)器上,當(dāng)服務(wù)器宕機(jī)時 mongos 也一起失效,防止出現(xiàn) mongos 閑置。
mongos 節(jié)點(diǎn)也可以是單個節(jié)點(diǎn),但為了高可用,一般部署多個節(jié)點(diǎn)。就像柜臺服務(wù)員一樣,可以有多個,相互之間沒有主備關(guān)系,都可以獨(dú)立處理業(yè)務(wù)。
需要注意的是,在開啟分片的情況下,應(yīng)用程序應(yīng)該避免直接連接分片節(jié)點(diǎn)進(jìn)行數(shù)據(jù)修改,因為這種情況下很可能造成數(shù)據(jù)不一致等嚴(yán)重后果,而是通過 mongos 節(jié)點(diǎn)來操作。
config 配置服務(wù)
config 配置節(jié)點(diǎn)本質(zhì)也是一個副本集,副本集中存放集群的元數(shù)據(jù),如各個分片上的數(shù)據(jù)塊列表,數(shù)據(jù)范圍,身份驗證等信息。如下,可以看到數(shù)據(jù)庫 config,數(shù)據(jù)庫中集合保存了集群的重要元數(shù)據(jù)。
mongos> use config; switched to db config mongos> show collections; changelog chunks collections databases lockpings locks migrations mongos shards tags transactions version
網(wǎng)友評論