時(shí)間:2024-03-04 00:33作者:下載吧人氣:20
為何要分片
1.減少單機(jī)請(qǐng)求數(shù),降低單機(jī)負(fù)載,提高總負(fù)載
2.減少單機(jī)的存儲(chǔ)空間,提高總存空間。
常見(jiàn)的mongodb sharding 服務(wù)器架構(gòu)
要構(gòu)建一個(gè) MongoDB Sharding Cluster,需要三種角色:
1.Shard Server
即存儲(chǔ)實(shí)際數(shù)據(jù)的分片,每個(gè)Shard可以是一個(gè)mongod實(shí)例,也可以是一組mongod實(shí)例構(gòu)成的Replication Set。為了實(shí)現(xiàn)每個(gè)Shard內(nèi)部的auto-failover(自動(dòng)故障切換),MongoDB官方建議每個(gè)Shard為一組Replica Set。
2.Config Server
為了將一個(gè)特定的collection存儲(chǔ)在多個(gè)shard中,需要為該collection指定一個(gè)shard key(片鍵),例如{age: 1} ,shard key可以決定該條記錄屬于哪個(gè)chunk(分片是以chunk為單位,后續(xù)會(huì)介紹)。Config Servers就是用來(lái)存儲(chǔ):所有shard節(jié)點(diǎn)的配置信息、每個(gè)chunk的shard key范圍、chunk在各shard的分布情況、該集群中所有DB和collection的sharding配置信息。
3.Route Process
這是一個(gè)前端路由,客戶(hù)端由此接入,然后詢(xún)問(wèn)Config Servers需要到哪個(gè)Shard上查詢(xún)或保存記錄,再連接相應(yīng)的Shard進(jìn)行操作,最后將結(jié)果返回給客戶(hù)端。客戶(hù)端只需要將原本發(fā)給mongod的查詢(xún)或更新請(qǐng)求原封不動(dòng)地發(fā)給Routing Process,而不必關(guān)心所操作的記錄存儲(chǔ)在哪個(gè)Shard上。(所有操作在mongos上操作即可)
配置分片服務(wù)器
下面我們?cè)谕慌_(tái)物理機(jī)器上構(gòu)建一個(gè)簡(jiǎn)單的 Sharding Cluster:
Shard Server 1:27017
Shard Server 2:27018
Config Server :27027
Route Process:40000
網(wǎng)友評(píng)論