溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MongoDB高可用分為哪些方式

發(fā)布時間:2021-12-23 14:05:02 來源:億速云 閱讀:351 作者:iii 欄目:云計算

這篇文章主要介紹“MongoDB高可用分為哪些方式”,在日常操作中,相信很多人在MongoDB高可用分為哪些方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MongoDB高可用分為哪些方式”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1 : MongDB的架構(gòu)設(shè)計之中,MongoDB支持多個機(jī)器之間通過異步復(fù)制達(dá)到故障轉(zhuǎn)移和實現(xiàn)冗余,多臺的機(jī)器之中只有一臺是用于寫操作,正是由于這個原因,在MongoDB之中只有一臺充當(dāng)了Primary角色的機(jī)器能把讀操作分發(fā)給Slave。

MongoDB 高可用可以分為兩種的方式:

1:master——Slave 主從復(fù)制,目前已經(jīng)不怎么實用了

2:Replica Sets復(fù)制集

        MongoDB 在1.6版之后加入了新的一個功能點叫做復(fù)制及:replica Set,增加了故障的自動切換和自動修復(fù)成員節(jié)點。各個DB之間的數(shù)據(jù)完全一致。大大降低了維護(hù)成功,

如圖:MongoDB高可用分為哪些方式

                數(shù)學(xué)上來將,就是一個同構(gòu)型的集合:也就是一個集群。MongoDB的Relica Set架構(gòu)是通過一個日志來存儲寫操作的。這個操作就叫做”oplog“,oplog.rs 是一個固定長度的CappedCollection。這個Collection的位置存在于“Local數(shù)據(jù)庫之中”,用于記錄Replica Set操作的日志,它在默認(rèn)的情況之下,對于64位的MongoDB,opLog是比較大的??梢赃_(dá)到5%的磁盤空間,oplog的大小是可以通過Mongod的參數(shù) ”—oplogSize“來改變。

              除了固定的復(fù)制集意外,還保持了較好的伸縮性,一旦需求得不到滿足,那么就需要添加新的機(jī)器。那么句需要增加一些節(jié)點將壓力平均分配一下。

        增加節(jié)點的方式,一般可以通過oplog直接進(jìn)行增加節(jié)點,操作簡單并且無需人工干預(yù),可是oplog是

capped collection,采用的循環(huán)方式進(jìn)行日志處理,所以采用的是oplog的方式來添加,可能會有不一致的問題。

因為日志中間存儲的信息由可能已經(jīng)刷新過了。不過沒關(guān)系。通常而言,你可以通過數(shù)據(jù)庫的快照 --fastsync和oplog結(jié)合的

方式來增加節(jié)點。這種方式的操作流程是,先取某一個復(fù)制集成員的物理文件來作為一個初始化的數(shù)據(jù),然后剩余的部分用

oplog的方式去添加。

而 Sharding,這是一種將海量的數(shù)據(jù)水平擴(kuò)展的數(shù)據(jù)庫集群系統(tǒng),數(shù)據(jù)庫分表存儲在 sharding的各個節(jié)點之上。MongoDB的數(shù)據(jù)分塊成為chunk,每一個Chunk都是Collection中一段連續(xù)的數(shù)據(jù)記錄,通常的最大的尺寸是200MB。超出那么就會生成一個最新的數(shù)據(jù)塊。這個和Hbase Region的分裂是一樣的。

整個分拆的過程大致如下:

MongoDB高可用分為哪些方式

對于MongoDB

首先在CL: Client 這一層面來說,底層是否需要分片?是否需要這樣的一個復(fù)制集對與使用者來說完全不必要知道。Mongos: 好比就是一個大管家,要怎么去分拆Collections?,你Client完全不必要知道,只需要你告訴我一個東西:分區(qū)的Key是什么?在很多的組件之中,包括在hadoop,Storm,等個各種數(shù)據(jù)庫之中都會有這樣的一個 Partition Key的概念。對應(yīng)于我們的網(wǎng)絡(luò)之上就會充當(dāng)了這樣一個路由的功能。并且將自己所把控的一些集群的信息存放在Config服務(wù)器之中。

在其他的數(shù)據(jù)庫中間也就是如此,對于Hbase。依然需要對于表再進(jìn)行分拆。對應(yīng)于Hbase之中的Region。和MongoDB的分片其實用一個比較常用的英文名字就叫做 Segment。

如果你對于Hbase之流不夠了解沒關(guān)系。你只是需要知道,Region是表分裂的一個片段,region按大小分割的,每個表一開始就只是一個Region,Region隨著數(shù)據(jù)的寫入會不斷的擴(kuò)大,以至于達(dá)到了設(shè)計閾值以后,Region就開始分裂了,由1分二。當(dāng)table中的行越來越多的時候,Region的數(shù)量就越來越多。

MongoDB高可用分為哪些方式

HRegion是Hbase之中分布式存儲和負(fù)載的最小的單位,在這里給出一個比照的圖:如下:

MongoDB高可用分為哪些方式

而在kafka之中之中的Replication,其實更加相當(dāng)于Hadoop體系之中的 【副本機(jī)制】,和分片所需要解決的矛盾不同。

MongoDB高可用分為哪些方式

    簡單的額來說,分布式系統(tǒng)有自己獨特的屬性與性質(zhì),對于其存存儲體系有著固定的訴求。

到此,關(guān)于“MongoDB高可用分為哪些方式”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI