a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

MongoDB分片集群是啥?一文帶你搞明白原理及搭建

2024-09-07 00:22:35
字體:
來源:轉載
供稿:網(wǎng)友
  我們知道m(xù)ongodb是分布式文檔存儲數(shù)據(jù)庫,而mongodb部署架構分為單機,可復制集和分片群集。其中,分片群集是比較復雜,而且運維難度比較高的。很多人對于mongodb分片集群都不是很理解,這篇文章就給大家介紹一下MongoDB分片集群的問題。
 
  1、什么是分片?為什么要分片?
 
  我們知道數(shù)據(jù)庫服務器一般出現(xiàn)瓶頸是在磁盤io上,或者高并發(fā)網(wǎng)絡io,又或者單臺server的cpu、內存等等一系列原因。于是,為了解決這些瓶頸問題,我們就必須擴展服務器性能;通常擴展服務器有向上擴展和向外擴展,所謂向上擴展就是給服務器加更大的磁盤,使用更大更好的內存,更換更好的cpu。這種擴展在一定程度上是可以解決性能瓶頸問題,但隨著數(shù)據(jù)量大增大,瓶頸會再次出現(xiàn);所以通常這種向上擴展的方式不推薦。
 
  向外擴展是指一臺服務器不夠加兩臺,兩臺不夠加三臺,以這種方式擴展,只要出現(xiàn)瓶頸我們就可以使用增加服務器來解決;這樣一來服務器性能解決了,但用戶的讀寫怎么分散到多個服務器上去呢?所以我們還要想辦法把數(shù)據(jù)切分成多塊,讓每個服務器只保存整個數(shù)據(jù)集的部分數(shù)據(jù),這樣一來使得原來一個很大的數(shù)據(jù)集就通過切片的方式,把它切分成多分,分散的存放在多個服務器上,這就是分片。
 
  2、數(shù)據(jù)集分片示意圖
 
 
 
  提示:我們通過分片,可以將原本1T的數(shù)據(jù)集,平均分成4分,每個節(jié)點存儲原有數(shù)據(jù)集的1/4,使得原來用一臺服務器處理1T的數(shù)據(jù),現(xiàn)在可以用4臺服務器來處理,這樣一來就有效的提高了數(shù)據(jù)處理過程;這也是分布式系統(tǒng)的意義;在mongodb中我們把這種共同處理一個數(shù)據(jù)集的部分數(shù)據(jù)的節(jié)點叫shard,我們把使用這種分片機制的mongodb集群就叫做mongodb分片集群;
 
  3、mongodb分片集群架構
 
 
 
  提示:在mongodb分片集群中,通常有三類角色,第一類是router角色,router角色主要用來接收客戶端的讀寫請求,主要運行mongos這個服務;為了使得router角色的高可用,通常會用多個節(jié)點來組成router高可用集群;第二類是config server,這類角色主要用來保存mongodb分片集群中的數(shù)據(jù)和集群的元數(shù)據(jù)信息,有點類似mogilefs中的tracker的作用;為了保證config server的高可用性,通常config server也會將其運行為一個副本集;第三類是shard角色,這類角色主要用來存放數(shù)據(jù),類似mogilefs的數(shù)據(jù)節(jié)點,為了保證數(shù)據(jù)的高可用和完整性,通常每個shard是一個副本集;
 
  4、mongodb分片集群工作過程
 
  首先用戶將請求發(fā)送給router,router接收到用戶請求,然后去找config server拿對應請求的元數(shù)據(jù)信息,router拿到元數(shù)據(jù)信息后,然后再向對應的shard請求數(shù)據(jù),最后將數(shù)據(jù)整合后響應給用戶;在這個過程中router 就相當于mongodb的一個客戶端代理;而config server用來存放數(shù)據(jù)的元數(shù)據(jù)信息,這些信息主要包含了那些shard上存放了那些數(shù)據(jù),對應的那些數(shù)據(jù)存放在那些shard上,和mogilefs上的tracker非常類似,主要存放了兩張表,一個是以數(shù)據(jù)為中心的一張表,一個是以shard節(jié)點為中心的一張表;
 
  5、mongodb是怎么分片的?
 
  在mongodb的分片集群中,分片是按照collection字段來分的,我們把指定的字段叫shard key;根據(jù)shard key的取值不同和應用場景,我們可以基于shard key取值范圍來分片,也可以基于shard key做hash分片;分好片以后將結果保存在config server上;在configserver 上保存了每一個分片對應的數(shù)據(jù)集;比如我們基于shardkey的范圍來分片,在configserver上就記錄了一個連續(xù)范圍的shardkey的值都保存在一個分片上;
 
  除了上述兩種切片的方式以外,我們還可以根據(jù)區(qū)域切片,也叫基于列表切片,
 
  上圖主要描述了基于區(qū)域分片,這種分片一般是針對shardkey的取值范圍不是一個順序的集合,而是一個離散的集合,比如我們可用這種方式對全國省份這個字段做切片,把流量特別大的省份單獨切一個片,把流量小的幾個省份組合切分一片,把國外的訪問或不是國內省份的切分為一片;這種切片有點類似給shardkey做分類;不管用什么方式去做分片,我們盡可能的遵循寫操作要越分散越好,讀操作要越集中越好;
 
  6、mongodb分片集群搭建
 
 
  基礎環(huán)境,各server做時間同步,關閉防火墻,關閉selinux,ssh互信,主機名解析
 
  主機名解析
 
[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 ~]#
  準備好基礎環(huán)境以后,配置mongodb yum源
 
[root@node01 ~]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org]
name = MongoDB Repository
baseurl = https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck = 1
enabled = 1
gpgkey = https://www.mongodb.org/static/pgp/server-4.4.asc
[root@node01 ~]#
  將mongodb yum源復制給其他節(jié)點
 
[root@node01 ~]# for i in {02..10} ; do scp /etc/yum.repos.d/mongodb.repo node$i:/etc/yum.repos.d/; done
mongodb.repo                 100% 206 247.2KB/s 00:00
mongodb.repo                 100% 206 222.3KB/s 00:00
mongodb.repo                 100% 206 118.7KB/s 00:00
mongodb.repo                 100% 206 164.0KB/s 00:00
mongodb.repo                 100% 206 145.2KB/s 00:00
mongodb.repo                 100% 206 119.9KB/s 00:00
mongodb.repo                 100% 206 219.2KB/s 00:00
mongodb.repo                 100% 206 302.1KB/s 00:00
mongodb.repo                 100% 206 289.3KB/s 00:00
[root@node01 ~]#

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃av人人夜夜澡人人爽 | 午夜在线小视频 | 久久国产视频一区二区 | 亚洲黄色免费观看 | 国产成人精品网站 | 日韩电影三级 | 日韩在线视频网站 | 国产黄色大片 | 蜜桃视频麻豆女神沈芯语免费观看 | 国产性在线 | 中文字幕亚洲一区二区三区 | 亚洲精品乱码 | 精品视频在线免费 | 久久亚洲精品国产一区最新章节 | 91精品一区二区 | 久久国 | 91在线高清观看 | 国产探花在线观看 | 色免费视频 | 天天操天天干天天 | 在线第一页 | 欧美视频在线播放 | 最近免费中文字幕大全免费版视频 | 欧美日韩国语 | 久久久久久艹 | 午夜视频网址 | 色欧美片视频在线观看 | 龙珠z在线观看 | 国产精品成人3p一区二区三区 | 这里精品 | 91久久久久久 | 午夜免费视频福利 | 亚洲欧美日韩在线一区 | 日本精品999| 国厂黄色片 | 久久精品国产99 | 欧美精品一区二区三区一线天视频 | 亚洲女人天堂成人av在线 | 亚洲欧美精品 | 国产一区二区三区免费 | 亚洲国产精品久久久久久 |