如何理解MongoDB中的shard分片

如何理解MongoDB中的shard分片,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為涇川企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,涇川網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

閱讀目的:深刻的了解MongoDB的分片機(jī)制

閱讀關(guān)鍵: 無比要對(duì)MongoDB的與分片 shard有關(guān)的概念有清楚的了解。

 1:   Shard介紹

        shard指的是水平方向的多節(jié)點(diǎn)的數(shù)據(jù)分散的存儲(chǔ),說的更簡(jiǎn)單一點(diǎn),就是一臺(tái)機(jī)器上可能裝不下的數(shù)據(jù),我們

裝到多臺(tái)機(jī)器上去,比如,我們將全國(guó)的省份證的信息,存儲(chǔ)到不同的Shard Server中間去,這里的Shard Server,就是每一個(gè)分布式的Mongo機(jī)器。

        應(yīng)用的程序可以通過mongos process 登陸到shard集群之中,MongoPress 進(jìn)行一個(gè)路由上的調(diào)度。查詢,請(qǐng)求的過程也是如此。 面對(duì)使用者只有一層一個(gè)節(jié)點(diǎn)。

    

2: 負(fù)載均衡和失效切換

        當(dāng)某個(gè)shard的負(fù)載超過一定闕值后,就會(huì)自動(dòng)的重新分發(fā)數(shù)據(jù),用來保證系統(tǒng)的負(fù)載均衡。更簡(jiǎn)單的話來形容,就是

寫入的時(shí)候如果向某一臺(tái)機(jī)器上去寫,超過了機(jī)器自身的能力了,就會(huì)重新的分發(fā)數(shù)據(jù),與之對(duì)應(yīng)的Hbase,通常會(huì)出現(xiàn)單臺(tái)

寫入的熱點(diǎn)問題,目前對(duì)于Mongo的處理機(jī)制還未知。

      在一個(gè)通常的配置之中,每一個(gè)Shard中都該包含了2個(gè)以上節(jié)點(diǎn)的設(shè)備組,設(shè)備組的名字通常稱為 replica.set,replica.set有N臺(tái)服務(wù)器,在其中有一個(gè)為主,其他的為輔助,一旦其中的一個(gè)掛掉以后,會(huì)自動(dòng)重啟將一臺(tái)服務(wù)器切換為

主服務(wù)器。

3:

    Shard架構(gòu)圖:

        如何理解MongoDB中的shard分片

4 :shard key 

            要實(shí)現(xiàn)分片功能,我們需要指定集合的分片key,相當(dāng)于數(shù)據(jù)庫的分區(qū)字段,

這個(gè)分片key通常需要?jiǎng)?chuàng)建一個(gè)索引,分片key可以由一個(gè)或則多個(gè)字段構(gòu)成

5: chunks

        Chunks是一個(gè)集合之中的一段連續(xù)的數(shù)據(jù),當(dāng)一個(gè)Chunk達(dá)到一定大小的時(shí)候,就會(huì)開始分裂。當(dāng)一個(gè)

shard超過一定量的數(shù)據(jù)時(shí),chunk會(huì)被遷移到其他shard之中,新增shard也會(huì)影響chunk的移動(dòng),好比你把日志

寫入到你的本地文件,規(guī)定是60M的一個(gè)文件,一旦超過大小,就有新的文件,一旦文件在機(jī)器上存放不了了,

那就將這臺(tái)機(jī)器上的文件轉(zhuǎn)移到其他的機(jī)器上去~        

  MongoDB的shard,四環(huán)一種將海量的數(shù)據(jù)水平擴(kuò)展的數(shù)據(jù)庫集群系統(tǒng),數(shù)據(jù)庫分表存放在Sharding的

各個(gè)節(jié)點(diǎn)之上。

相對(duì)于關(guān)系數(shù)據(jù)庫而言,Chunk就是數(shù)據(jù)庫中的一行記錄,Collection就是對(duì)于與關(guān)系數(shù)據(jù)庫中的表。

Shard Server

即存儲(chǔ)實(shí)際數(shù)據(jù)的分片,每個(gè)Shard可以是一個(gè)mongod實(shí)例,也可以是一組mongod實(shí)例構(gòu)成的Replica Set。為了實(shí)現(xiàn)每個(gè)Shard內(nèi)部的auto-failover,MongoDB官方建議每個(gè)Shard為一組Replica Set。關(guān)于如何安裝及搭建replica set請(qǐng)參考我的另一篇文章 http://gong1208.iteye.com/blog/1558355

Config Server

為了將一個(gè)特定的collection存儲(chǔ)在多個(gè)shard中,需要為該collection指定一個(gè)shard key,例如{age: 1} ,shard key可以決定該條記錄屬于哪個(gè)chunk。Config Servers就是用來存儲(chǔ):所有shard節(jié)點(diǎn)的配置信息、每個(gè)chunk的shard key范圍、chunk在各shard的分布情況、該集群中所有DB和collection的sharding配置信息。

說的更加明白一點(diǎn),Config Server 保存集群的元數(shù)據(jù)。

Route Process

這是一個(gè)前端路由,客戶端由此接入,然后詢問Config Servers需要到哪個(gè)Shard上查詢或保存記錄,再連接相應(yīng)的Shard進(jìn)行操作,最后將結(jié)果返回給客戶端。客戶端只需要將原本發(fā)給mongod的查詢或更新請(qǐng)求原封不動(dòng)地發(fā)給Routing Process,而不必關(guān)心所操作的記錄存儲(chǔ)在哪個(gè)Shard上。

route process 說的更明白點(diǎn)就是一個(gè)選擇器,不斷的調(diào)度合適的客戶端請(qǐng)求,將需求中所請(qǐng)求,所需要的數(shù)據(jù),從合適的shard之中返回你所需求的數(shù)據(jù)。

下面我們?cè)谕慌_(tái)物理機(jī)器上構(gòu)建一個(gè)簡(jiǎn)單的 Sharding Cluster:

架構(gòu)圖如下:

     如何理解MongoDB中的shard分片

關(guān)于 如何理解MongoDB中的shard分片問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

標(biāo)題名稱:如何理解MongoDB中的shard分片
當(dāng)前網(wǎng)址:http://muchs.cn/article38/geoppp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、建站公司品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、面包屑導(dǎo)航手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)