![分布式文件系統(tǒng)概要設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/06f20559-c87c-4017-9700-8a47e36c849d/06f20559-c87c-4017-9700-8a47e36c849d1.gif)
![分布式文件系統(tǒng)概要設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/06f20559-c87c-4017-9700-8a47e36c849d/06f20559-c87c-4017-9700-8a47e36c849d2.gif)
![分布式文件系統(tǒng)概要設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/06f20559-c87c-4017-9700-8a47e36c849d/06f20559-c87c-4017-9700-8a47e36c849d3.gif)
![分布式文件系統(tǒng)概要設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/06f20559-c87c-4017-9700-8a47e36c849d/06f20559-c87c-4017-9700-8a47e36c849d4.gif)
![分布式文件系統(tǒng)概要設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/06f20559-c87c-4017-9700-8a47e36c849d/06f20559-c87c-4017-9700-8a47e36c849d5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分布式文件系統(tǒng)概要設(shè)計(jì)(初稿)三人行研發(fā)組2011-9-10修訂歷史日期版本描述作者2011-9-100.1概要設(shè)計(jì)初稿張琨2011-10-100.2概要設(shè)計(jì)完善熊書(shū)宜一 需求分析與目標(biāo)設(shè)定業(yè)務(wù)需求:1. 提供整站的UGC文件存儲(chǔ)與讀取2. 為后期在線網(wǎng)絡(luò)存儲(chǔ)打下基礎(chǔ)技術(shù)目標(biāo):1. 方便讀寫(xiě)海量規(guī)模的大文件2. 易于掌握,對(duì)外接口統(tǒng)一而簡(jiǎn)單3. 易于運(yùn)維和擴(kuò)展4. 服務(wù)穩(wěn)定同時(shí)數(shù)據(jù)安全二 系統(tǒng)架構(gòu)設(shè)計(jì)主流選型 1、MogileFS Key-Value型元文件系統(tǒng),不支持FUSE,應(yīng)用程序訪問(wèn)它時(shí)需要API,主要用在web領(lǐng)域處理海量小圖片,效率相比mooseFS高很多。 2、FastDFS 國(guó)
2、人在mogileFS的基礎(chǔ)上進(jìn)行改進(jìn)的key-value型文件系統(tǒng),同樣不支持FUSE,提供比mogileFS更好的性能。 3、MooseFS(我目前使用的) 支持FUSE,相對(duì)比較輕量級(jí),對(duì)master服務(wù)器有單點(diǎn)依賴(lài),用perl編寫(xiě),性能相對(duì)較差,其master非常占內(nèi)存?(測(cè)試結(jié)果貌似是chunkserver)國(guó)內(nèi)用的人比較兩者的區(qū)別主要在于: 1、HBase依賴(lài)于HDFS;MongoDB直接存儲(chǔ)在本地磁盤(pán)中 2、HBase按照列族將數(shù)據(jù)存儲(chǔ)在不同的文件中;MongoDB不分列,整個(gè)文檔都存儲(chǔ)在一個(gè)(或者說(shuō)一組)文件中,通過(guò)一個(gè)有一個(gè)通用的.ns文件保存名稱(chēng)空間(Column-based
3、和Document-Based之間的區(qū)別應(yīng)該是指這個(gè)地方吧) 3、HBase一個(gè)region只有一個(gè)HRegionServer對(duì)外提供服務(wù)(沒(méi)有負(fù)載均衡的概念);MongoDB的shards(類(lèi)似于region)支持負(fù)載均衡(主從結(jié)構(gòu),通過(guò)日志進(jìn)行同步,這個(gè)HBase也在開(kāi)發(fā)計(jì)劃當(dāng)中) 4、HBase根據(jù)文件的大小來(lái)控制region的分裂;MongoDB根據(jù)負(fù)載來(lái)決定shards的分裂架構(gòu)設(shè)計(jì)調(diào)研mongodb 的Auto-Sharding 能夠做到:。 當(dāng)各Sharding間負(fù)載和數(shù)據(jù)分布不平衡時(shí),自動(dòng)rebalancing /這是我需要測(cè)試的。 簡(jiǎn)單方便
4、的添加和刪除節(jié)點(diǎn)。 自動(dòng)故障轉(zhuǎn)移。 可擴(kuò)展至上千臺(tái)節(jié)點(diǎn)MongoDB集群包括一定數(shù)量的mongod(分片存儲(chǔ)數(shù)據(jù))、mongos(路由處理)、config server、clients。以下會(huì)一一介紹。1 > shards:一個(gè)shard為一組mongod,通常一組為兩臺(tái),主從或互為主從,這一組mongod中的數(shù)據(jù)是相同的, 具體可見(jiàn)mongodb分布式之?dāng)?shù)據(jù)復(fù)制。數(shù)據(jù)分割按有序分割方式,每個(gè)分片上的數(shù)據(jù)為某一范圍的數(shù)據(jù)塊,故可支持指定分片的范圍查詢(xún),這同 google的BigTable 類(lèi)似。數(shù)據(jù)塊有指定的最大容量,一旦某個(gè)數(shù)據(jù)塊的容量增長(zhǎng)到最大容量時(shí),這個(gè)數(shù)據(jù)塊會(huì)切分成為兩塊;當(dāng)分片
5、的數(shù)據(jù)過(guò)多時(shí),數(shù)據(jù)塊將被遷移到系統(tǒng)的其他分片 中。另外,新的分片加入時(shí),數(shù)據(jù)塊也會(huì)遷移。2 > mongos:可以有多個(gè),相當(dāng)于一個(gè)控制中心,負(fù)責(zé)路由和協(xié)調(diào)操作,使得集群像一個(gè)整體的系統(tǒng)。mongos可以運(yùn)行在任 何一臺(tái)服務(wù)器上,有些選擇放在shards服務(wù)器上,也有放在client 服務(wù)器上的。mongos啟動(dòng)時(shí)需要從config servers上獲取基本信息,然后接受client端的請(qǐng)求,路由到shards服務(wù)器上,然后整理返回的結(jié)果發(fā)回給client服務(wù)器。3 > config server:存儲(chǔ)集群的信息,包括分片和塊數(shù)據(jù)信息。主要存儲(chǔ)塊數(shù)據(jù)信息,每個(gè)config serv
6、er上都有一份所有塊數(shù)據(jù)信息的拷貝,以保證每臺(tái)config server上的數(shù)據(jù)的一致性。4 > shard key:為了分割數(shù)據(jù)集,需要制定分片key的格式,類(lèi)似于用于索引的key格式,通常由一個(gè)或多個(gè)字段組成以分發(fā)數(shù)據(jù)與mysql對(duì)比跟mysqld一樣,一個(gè)mongod服務(wù)可以有建立多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)可以有多張表,這里的表名叫collection,每個(gè)collection 可以存放多個(gè)文檔(document),每個(gè)文檔都以BSON(binary json)的形式存放于硬盤(pán)中。跟關(guān)系型數(shù)據(jù)庫(kù)不一樣的地方是,它是的以單文檔為單位存儲(chǔ)的,你可以任意給一個(gè)或一批文檔新增或刪除字段,而不會(huì)
7、對(duì)其它文 檔造成影響,這就是所謂的schema-free,這也是文檔型數(shù)據(jù)庫(kù)最主要的優(yōu)點(diǎn)。跟一般的key-value數(shù)據(jù)庫(kù)不一樣的是,它的value中存儲(chǔ) 了結(jié)構(gòu)信息,所以你又可以像關(guān)系型數(shù)據(jù)庫(kù)那樣對(duì)某些域進(jìn)行讀寫(xiě)、統(tǒng)計(jì)等操作??梢哉f(shuō)是兼?zhèn)淞薻ey-value數(shù)據(jù)庫(kù)的方便高效與關(guān)系型數(shù)據(jù)庫(kù)的強(qiáng)大功 能。Nginx按照db到collection(相當(dāng)于表的概念)做的配置location /pics/ gridfs pics
8、160; field=filename type=string; mongo 127.0.0.1:27017; gridfs:nginx識(shí)別插件的關(guān)鍵字pics:db名root_collection: 選擇collection,如root_collection=blog, mongod就會(huì)去找blog.files與blog.chunks兩個(gè)塊,默認(rèn)是fsfield:查詢(xún)字段,保證m
9、ongdb里有這個(gè)字段名,支持_id, filename, 可省略, 默認(rèn)是_idtype:解釋field的數(shù)據(jù)類(lèi)型,支持objectid, int, string, 可省略, 默認(rèn)是intuser:用戶名, 可省略pass:密碼, 可省略mongo:mongodb url配置replica sets的問(wèn)題問(wèn)題這時(shí)候如果Secondary宕機(jī),那么Primary會(huì)怎么樣呢?Primary會(huì)立刻變成Secondary!這時(shí)候集群里沒(méi)有Primary了!為什么會(huì)出現(xiàn)這樣的情況呢。原因 這是和MongoDB的Primary選舉策略有關(guān)的,試想如果情況不是Secondary宕機(jī),而是網(wǎng)絡(luò)斷開(kāi),那么兩個(gè)
10、節(jié)點(diǎn)都會(huì)選取自己為 Primary,因?yàn)樗麄兡苓B接上的只有自己這一個(gè)節(jié)點(diǎn)。而這樣的情況在網(wǎng)絡(luò)恢復(fù)后就需要處理復(fù)雜的一致性問(wèn)題。而且斷開(kāi)的時(shí)間越長(zhǎng),時(shí)間越復(fù)雜。所以 MongoDB選擇的策略是如果集群中只有自己一個(gè)節(jié)點(diǎn),那么不選取自己為Primary。解決方法 所以正確的做法應(yīng)該是添加兩個(gè)以上的節(jié)點(diǎn),或者添加arbiter,當(dāng)然最好也最方便的做法是添加arbiter,aribiter節(jié)點(diǎn)只參與選舉,幾 乎不會(huì)有壓力,所以你可以在各種閑置機(jī)器上啟動(dòng)arbiter節(jié)點(diǎn),這不僅會(huì)避免上面說(shuō)到的無(wú)法選舉Primary的情況,更會(huì)讓選取更快速的進(jìn)行。(因 為如果是三臺(tái)數(shù)據(jù)節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)宕機(jī),另外兩個(gè)節(jié)點(diǎn)很
11、可能會(huì)各自選舉自己為Primary,從而導(dǎo)致很長(zhǎng)時(shí)間才能得出選舉結(jié)果)測(cè)試環(huán)境192.168.1.43 3個(gè)mongod實(shí)例 1個(gè)primary 2個(gè)secondry 作為sets1192.168.1.44 3個(gè)mongod實(shí)例 1個(gè)primary 2個(gè)secondry 作為sets2192.168.1.190 config server192.168.1.79 route server43上的啟動(dòng)腳本root 12837 1 0 Sep19 ? 00:00:09 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mongodb.log -
12、dbpath /opt/mongodb/db/10001 -port 10001 -replSet set1root 12862 1 0 Sep19 ? 00:00:06 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mongodb.log -dbpath /opt/mongodb/db/10002 -port 10002 -replSet set1root 12875 1 0 Sep19 ? 00:00:03 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mongodb.log
13、 -dbpath /opt/mongodb/db/10003 -port 10003 -replSet set144上的啟動(dòng)腳本root 3861 1 0 Sep19 ? 00:00:05 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mongodb.log -dbpath /opt/mongodb/db/10001/ -port 10001 -replSet set2root 3874 1 0 Sep19 ? 00:00:13 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mo
14、ngodb.log -dbpath /opt/mongodb/db/10002/ -port 10002 -replSet set2root 3887 1 0 Sep19 ? 00:00:01 ./mongod -shardsvr -fork -logpath /opt/mongodb/logs/mongodb.log -dbpath /opt/mongodb/db/10003/ -port 10003 -replSet set2190的啟動(dòng)腳本root 5040 1 0 Sep19 ? 00:00:22 ./mongod -configsvr -fork -logpath /opt/mong
15、odb/logs/mongodb.log -dbpath /opt/mongodb/db/config1/ -port 20000root 5053 1 0 Sep19 ? 00:00:14 ./mongod -configsvr -fork -logpath /opt/mongodb/logs/mongodb.log -dbpath /opt/mongodb/db/config2/ -port 20001root 5290 1 0 Sep19 ? 00:00:13 ./mongod -configsvr -fork -logpath /opt/mongodb/logs/mongodb.log
16、 -dbpath /opt/mongodb/db/config3/ -port 2000279的啟動(dòng)腳本00:00:10 ./mongos -fork -logpath /opt/mongodb/logs/mongodb.log -configdb 192.168.1.190:20000,192.168.1.190:20001,192.168.1.190:20002簡(jiǎn)單的分析一下這個(gè)shard key,當(dāng)不是寫(xiě)密集操作時(shí),而僅僅是因?yàn)榇鎯?chǔ)空間不夠了,這個(gè)shard key我們可以選用一些無(wú)上限范圍的key,如創(chuàng)建時(shí)間等,這樣新創(chuàng)建的記錄都會(huì)寫(xiě)入新的分片服務(wù)器上。當(dāng)需要使每個(gè)分片均勻分布數(shù)據(jù)時(shí),或者寫(xiě)入密集時(shí),最好選用有一定范圍值的key ,當(dāng)然這個(gè)范圍不能太小,像性別,真假等,這會(huì)導(dǎo)致只自動(dòng)產(chǎn)生兩個(gè)分片,所以一定要選擇合適的shard key才能達(dá)到理想的效果。關(guān)于MongoDB數(shù)據(jù)庫(kù)的自動(dòng)分片技術(shù)就介紹到這里,希望通過(guò)本次的介紹能夠帶給您一些收獲。一期使用強(qiáng)磁盤(pán)型應(yīng)用:192.168.1.135 作為config+route和sets的一部分192.168.1.133 作為sets 的另一部
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全全面防護(hù)措施策略
- DB6528T 140-2024庫(kù)爾勒香梨密植高效栽培技術(shù)規(guī)程
- 五年期產(chǎn)品供應(yīng)合同書(shū)
- 個(gè)人住房融資合同協(xié)議書(shū)
- 人事保管檔案合同實(shí)施細(xì)則
- 個(gè)人養(yǎng)殖場(chǎng)合作協(xié)議合同
- 個(gè)人合伙合作協(xié)議書(shū)合同范本
- 個(gè)人借款合同延期至協(xié)議
- 產(chǎn)品銷(xiāo)售補(bǔ)償合同范本
- 買(mǎi)賣(mài)合同糾紛起訴書(shū)范本
- 2024-2025學(xué)年湖北省武漢市部分重點(diǎn)中學(xué)高一上學(xué)期期末聯(lián)考數(shù)學(xué)試卷(含答案)
- 排球正面上手傳球 說(shuō)課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊(cè)
- 2025年浙江省交通投資集團(tuán)財(cái)務(wù)共享服務(wù)中心招聘2名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 做投標(biāo)文件培訓(xùn)
- 9.4+跨學(xué)科實(shí)踐:制作簡(jiǎn)易活塞式抽水機(jī)課件+-2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 建筑工程工作計(jì)劃
- 2025年中國(guó)國(guó)際投資促進(jìn)中心限責(zé)任公司招聘管理單位筆試遴選500模擬題附帶答案詳解
- 瓶裝液化氣送氣工培訓(xùn)
- 外科護(hù)理課程思政課程標(biāo)準(zhǔn)
- 船舶航行安全
- 道德經(jīng)全文完整版本
評(píng)論
0/150
提交評(píng)論