日韩av手机在线免费观看_四虎免看黄_亚洲一区中文字幕_亚洲小视频网站_国产一区日韩在线_国产欧美精品一区二区

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > DB2 > 詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

時(shí)間:2024-02-08 11:17作者:下載吧人氣:41

  前文我們聊到了mongodb的副本集以及配置副本集,回顧請(qǐng)參考  今天我們來(lái)聊下mongodb的分片;

  1、什么是分片?為什么要分片?

  我們知道數(shù)據(jù)庫(kù)服務(wù)器一般出現(xiàn)瓶頸是在磁盤(pán)io上,或者高并發(fā)網(wǎng)絡(luò)io,又或者單臺(tái)server的cpu、內(nèi)存等等一系列原因;于是,為了解決這些瓶頸問(wèn)題,我們就必須擴(kuò)展服務(wù)器性能;通常擴(kuò)展服務(wù)器有向上擴(kuò)展和向外擴(kuò)展;所謂向上擴(kuò)展就是給服務(wù)器加更大的磁盤(pán),使用更大更好的內(nèi)存,更換更好的cpu;這種擴(kuò)展在一定程度上是可以解決性能瓶頸問(wèn)題,但隨著數(shù)據(jù)量大增大,瓶頸會(huì)再次出現(xiàn);所以通常這種向上擴(kuò)展的方式不推薦;向外擴(kuò)展是指一臺(tái)服務(wù)器不夠加兩臺(tái),兩臺(tái)不夠加三臺(tái),以這種方式擴(kuò)展,只要出現(xiàn)瓶頸我們就可以使用增加服務(wù)器來(lái)解決;這樣一來(lái)服務(wù)器性能解決了,但用戶的讀寫(xiě)怎么分散到多個(gè)服務(wù)器上去呢?所以我們還要想辦法把數(shù)據(jù)切分成多塊,讓每個(gè)服務(wù)器只保存整個(gè)數(shù)據(jù)集的部分?jǐn)?shù)據(jù),這樣一來(lái)使得原來(lái)一個(gè)很大的數(shù)據(jù)集就通過(guò)切片的方式,把它切分成多分,分散的存放在多個(gè)服務(wù)器上,這就是分片;分片是可以有效解決用戶寫(xiě)操作性能瓶頸;雖然解決了服務(wù)器性能問(wèn)題和用戶寫(xiě)性能問(wèn)題,同時(shí)也帶來(lái)了一個(gè)新問(wèn)題,就是用戶的查詢;我們把整個(gè)數(shù)據(jù)集分散到多個(gè)server上,那么用戶怎么查詢數(shù)據(jù)呢?比如用戶要查詢年齡大于30的用戶,該怎么查詢呢?而年齡大于30的用戶的數(shù)據(jù),可能server1上有一部分?jǐn)?shù)據(jù),server2上有部分?jǐn)?shù)據(jù),我們?cè)趺床拍軌虬阉袧M足條件的數(shù)據(jù)全部查詢到呢?這個(gè)場(chǎng)景有點(diǎn)類似我們之前說(shuō)的mogilefs的架構(gòu),用戶上傳圖片到mogilefs首先要把圖片的元數(shù)據(jù)寫(xiě)進(jìn)tracker,然后在把數(shù)據(jù)存放在對(duì)應(yīng)的data節(jié)點(diǎn),這樣一來(lái)用戶來(lái)查詢,首先找tracker節(jié)點(diǎn),tracker會(huì)把用戶的請(qǐng)求文件的元數(shù)據(jù)告訴客戶端,然后客戶端在到對(duì)應(yīng)的data節(jié)點(diǎn)取數(shù)據(jù),最后拼湊成一張圖片;而在mongodb上也是很類似,不同的的是在mogilefs上,客戶端需要自己去和后端的data節(jié)點(diǎn)交互,取出數(shù)據(jù);在mongdb上客戶端不需要直接和后端的data節(jié)點(diǎn)交互,而是通過(guò)mongodb專有的客戶端代理去代客戶端交互,最后把數(shù)據(jù)統(tǒng)一由代理返回給客戶端;這樣一來(lái)就可以解決用戶的查詢問(wèn)題;簡(jiǎn)單講所謂分片就是把一個(gè)大的數(shù)據(jù)集通過(guò)切分的方式切分成多分,分散的存放在多個(gè)服務(wù)器上;分片的目的是為了解決數(shù)據(jù)量過(guò)大而導(dǎo)致的性能問(wèn)題;

  2、數(shù)據(jù)集分片示意圖

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

  提示:我們通過(guò)分片,可以將原本1T的數(shù)據(jù)集,平均分成4分,每個(gè)節(jié)點(diǎn)存儲(chǔ)原有數(shù)據(jù)集的1/4,使得原來(lái)用一臺(tái)服務(wù)器處理1T的數(shù)據(jù),現(xiàn)在可以用4臺(tái)服務(wù)器來(lái)處理,這樣一來(lái)就有效的提高了數(shù)據(jù)處理過(guò)程;這也是分布式系統(tǒng)的意義;在mongodb中我們把這種共同處理一個(gè)數(shù)據(jù)集的部分?jǐn)?shù)據(jù)的節(jié)點(diǎn)叫shard,我們把使用這種分片機(jī)制的mongodb集群就叫做mongodb分片集群;

  3、mongodb分片集群架構(gòu)

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

  提示:在mongodb分片集群中,通常有三類角色,第一類是router角色,router角色主要用來(lái)接收客戶端的讀寫(xiě)請(qǐng)求,主要運(yùn)行mongos這個(gè)服務(wù);為了使得router角色的高可用,通常會(huì)用多個(gè)節(jié)點(diǎn)來(lái)組成router高可用集群;第二類是config server,這類角色主要用來(lái)保存mongodb分片集群中的數(shù)據(jù)和集群的元數(shù)據(jù)信息,有點(diǎn)類似mogilefs中的tracker的作用;為了保證config server的高可用性,通常config server也會(huì)將其運(yùn)行為一個(gè)副本集;第三類是shard角色,這類角色主要用來(lái)存放數(shù)據(jù),類似mogilefs的數(shù)據(jù)節(jié)點(diǎn),為了保證數(shù)據(jù)的高可用和完整性,通常每個(gè)shard是一個(gè)副本集;

  4、mongodb分片集群工作過(guò)程

  首先用戶將請(qǐng)求發(fā)送給router,router接收到用戶請(qǐng)求,然后去找config server拿對(duì)應(yīng)請(qǐng)求的元數(shù)據(jù)信息,router拿到元數(shù)據(jù)信息后,然后再向?qū)?yīng)的shard請(qǐng)求數(shù)據(jù),最后將數(shù)據(jù)整合后響應(yīng)給用戶;在這個(gè)過(guò)程中router 就相當(dāng)于mongodb的一個(gè)客戶端代理;而config server用來(lái)存放數(shù)據(jù)的元數(shù)據(jù)信息,這些信息主要包含了那些shard上存放了那些數(shù)據(jù),對(duì)應(yīng)的那些數(shù)據(jù)存放在那些shard上,和mogilefs上的tracker非常類似,主要存放了兩張表,一個(gè)是以數(shù)據(jù)為中心的一張表,一個(gè)是以shard節(jié)點(diǎn)為中心的一張表;

  5、mongodb是怎么分片的?

  在mongodb的分片集群中,分片是按照collection字段來(lái)分的,我們把指定的字段叫shard key;根據(jù)shard key的取值不同和應(yīng)用場(chǎng)景,我們可以基于shard key取值范圍來(lái)分片,也可以基于shard key做hash分片;分好片以后將結(jié)果保存在config server上;在configserver 上保存了每一個(gè)分片對(duì)應(yīng)的數(shù)據(jù)集;比如我們基于shardkey的范圍來(lái)分片,在configserver上就記錄了一個(gè)連續(xù)范圍的shardkey的值都保存在一個(gè)分片上;如下圖

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

  上圖主要描述了基于范圍的分片,從shardkey最小值到最大值進(jìn)行分片,把最小值到-75這個(gè)范圍值的數(shù)據(jù)塊保存在第一個(gè)分片上,把-75到25這個(gè)范圍值的數(shù)據(jù)塊保存在第二個(gè)分片上,依次類推;這種基于范圍的分片,很容易導(dǎo)致某個(gè)分片上的數(shù)據(jù)過(guò)大,而有的分片上的數(shù)據(jù)又很小,造成分片數(shù)據(jù)不均勻;所以除了基與shard key的值的范圍分片,也可以基于shard key的值做hash分片,如下圖

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

  基于hash分片,主要是對(duì)shardkey做hash計(jì)算后,然后根據(jù)最后的結(jié)果落在哪個(gè)分片上就把對(duì)應(yīng)的數(shù)據(jù)塊保存在對(duì)應(yīng)的分片上;比如我們把shandkey做hash計(jì)算,然后對(duì)分片數(shù)量進(jìn)行取模計(jì)算,如果得到的結(jié)果是0,那么就把對(duì)應(yīng)的數(shù)據(jù)塊保存在第一個(gè)分片上,如果取得到結(jié)果是1就保存在第二個(gè)分片上依次類推;這種基于hash分片,就有效的降低分片數(shù)據(jù)不均衡的情況,因?yàn)閔ash計(jì)算的值是散列的;

  除了上述兩種切片的方式以外,我們還可以根據(jù)區(qū)域切片,也叫基于列表切片,如下圖

詳解分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù) MongoDB分片集群的問(wèn)題

  上圖主要描述了基于區(qū)域分片,這種分片一般是針對(duì)shardkey的取值范圍不是一個(gè)順序的集合,而是一個(gè)離散的集合,比如我們可用這種方式對(duì)全國(guó)省份這個(gè)字段做切片,把流量特別大的省份單獨(dú)切一個(gè)片,把流量小的幾個(gè)省份組合切分一片,把國(guó)外的訪問(wèn)或不是國(guó)內(nèi)省份的切分為一片;這種切片有點(diǎn)類似給shardkey做分類;不管用什么方式去做分片,我們盡可能的遵循寫(xiě)操作要越分散越好,讀操作要越集中越好;

  6、mongodb分片集群搭建

  環(huán)境說(shuō)明

主機(jī)名 角色 ip地址
node01 router 192.168.0.41
node02/node03/node04 config server replication set

192.168.0.42

192.168.0.43

192.168.0.44

node05/node06/node07 shard1 replication set

192.168.0.45

192.168.0.46

192.168.0.47

node08/node09/node10 shard2 replication set

192.168.0.48

192.168.0.49

192.168.0.50

  基礎(chǔ)環(huán)境,各server做時(shí)間同步,關(guān)閉防火墻,關(guān)閉selinux,ssh互信,主機(jī)名解析

  主機(jī)名解析

[root@node01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.99 time.test.org time-node
192.168.0.41 node01.test.org node01
192.168.0.42 node02.test.org node02
192.168.0.43 node03.test.org node03
192.168.0.44 node04.test.org node04
192.168.0.45 node05.test.org node05
192.168.0.46 node06.test.org node06
192.168.0.47 node07.test.org node07
192.168.0.48 node08.test.org node08
192.168.0.49 node09.test.org node09
192.168.0.50 node10.test.org node10
192.168.0.51 node11.test.org node11
192.168.0.52 node12.test.org node12
[root@node01 ~]#

標(biāo)簽MongoDB,技術(shù)文檔,數(shù)據(jù)庫(kù),MongoDB

相關(guān)下載

查看所有評(píng)論+

網(wǎng)友評(píng)論

網(wǎng)友
您的評(píng)論需要經(jīng)過(guò)審核才能顯示

熱門(mén)閱覽

最新排行

公眾號(hào)

主站蜘蛛池模板: 天天综合网天天综合 | 国产精品日韩一区二区 | 91观看| 日韩在线视频网址 | 久久剧场 | 天天天操操操 | 精品久久精品 | 美女在线观看av | 免费黄色片在线观看 | 久久久久久久久久一区 | 天天草天天| 亚洲视频观看 | 欧洲一级黄 | 97超级碰碰| 黄色综合| 欧美日韩久久久 | 免费成人午夜 | 免费黄网站在线观看 | 免费毛片网站在线观看 | 中文字幕一区二区三区乱码图片 | 日韩欧美在线观看 | 新av在线| 秋霞在线一区 | 嫩草网 | 两性午夜视频 | 国产精品久久久久久中文字 | 精品国产一区二区三区久久影院 | 中文字幕亚洲视频 | 国产欧美一级 | 日本久久精 | 久久久久久久久国产 | 久久久久国产精品一区二区 | 日韩高清一区 | 成人精品一区 | 成人精品一区二区三区四区 | 国产精品免费一区二区三区 | 国产精品久久久久久久免费观看 | 精品久久久久久久久久久久 | 久草网免费| 成人毛片网站 | 毛片黄 |