(草稿)
目錄
第四章 MongoDB數(shù)據(jù)中心的Awareness
MongoDB提供了豐富的功能幫助部署高可用性和擴(kuò)展性系統(tǒng)。在設(shè)計(jì)高可用性時(shí),管理員必須在不同故障場(chǎng)景的上下文中評(píng)估讀寫操作。系統(tǒng)的性能和可用性SLAs(服務(wù)級(jí)別協(xié)議)在判定中發(fā)揮重要的作用:
1.數(shù)據(jù)庫(kù)如何分片(分片策略在后面討論)
2.數(shù)據(jù)的復(fù)制數(shù)(副本數(shù))
3.在內(nèi)部和多個(gè)數(shù)據(jù)中心之間的shards和復(fù)制集的物理位置
管理員能夠配置MongoDB的shards和復(fù)制集的行為來使用數(shù)據(jù)中心awareness。配置可以基于不同的維度,包括跨區(qū)域的多數(shù)據(jù)中心部署的awareness,又或者是單個(gè)數(shù)據(jù)中心的機(jī)架,網(wǎng)絡(luò)和電源電路。 。
使用MongoDB,管理員能:
1.確保寫操作傳至一個(gè)復(fù)制集的特定成員,在本地和遠(yuǎn)端數(shù)據(jù)中心部署。在數(shù)據(jù)中心完全宕機(jī)的情況下能夠降低數(shù)據(jù)丟失的風(fēng)險(xiǎn)?;蛘吲渲脧?fù)制集確保數(shù)據(jù)僅復(fù)制到特定地域的節(jié)點(diǎn),以確保數(shù)據(jù)永遠(yuǎn)不會(huì)離開這個(gè)國(guó)家。
2.確保一個(gè)復(fù)制集的特定成員響應(yīng)查詢。例如,基于它的位置。這減少了地域時(shí)間的影響。
3.將特定數(shù)據(jù)放置于特定shards上,每個(gè)都可以部署在不同的數(shù)據(jù)中心。這能再一次用于減少地域延時(shí)和保持?jǐn)?shù)據(jù)獨(dú)立。
能對(duì)每個(gè)操作和每個(gè)集合的讀寫行為進(jìn)行配置?;诰唧w應(yīng)用需求它們一起使用戶精確控制和擴(kuò)展跨區(qū)域的數(shù)據(jù)庫(kù)操作。
跨數(shù)據(jù)中心配置寫操作
MongoDB允許用戶使用名為write con·cern的選項(xiàng)指定寫入可用性系統(tǒng),每個(gè)操作能夠指定合適的write concern,歸類于從未確認(rèn)到確認(rèn)這些寫操作致力于:
1.單復(fù)制(即主復(fù)制集成員)。這是一個(gè)默認(rèn)write concern;
2.多個(gè)復(fù)制集;
3.大部分的復(fù)制集;
4.所有復(fù)制集;
也可以配置write concern,在具體條件滿足后才確認(rèn)寫操作。諸如在一個(gè)數(shù)據(jù)中心至少寫入兩個(gè)復(fù)制集成員以及在第二個(gè)數(shù)據(jù)中心寫入至少一個(gè)副本。如果是shards MongoDB集群,此選項(xiàng)使用戶能并行寫入多個(gè)數(shù)據(jù)中心。
跨數(shù)據(jù)中心配置Location-Aware讀取
無論在何處為用戶提供低延遲體驗(yàn)都是分布式系統(tǒng)關(guān)鍵的設(shè)計(jì)點(diǎn)。使用MongoDB的本地復(fù)制集,可以將數(shù)據(jù)庫(kù)的備份(復(fù)制集)部署到更接近用戶的地方,從而減少網(wǎng)絡(luò)延遲的影響。
MongoDB讀性能配置MongoDB客戶端如何將讀操作路由到復(fù)制集成員。默認(rèn)是一個(gè)應(yīng)用程序通過將所有讀操作指向復(fù)制集中的主成員來確保強(qiáng)一致性,但可以在每個(gè)操作的基礎(chǔ)上在驅(qū)動(dòng)中控制操作行為。nearest讀操作允許客戶端從復(fù)制集最低延遲成員中讀取而不是宗師讀取主成員。這通常用于將查詢路由到本地?cái)?shù)據(jù)中心,以減少地域延遲的影響。也能夠使用標(biāo)簽來確保讀取總是路由到指定節(jié)點(diǎn)或節(jié)點(diǎn)的子集上。
跨數(shù)據(jù)中心配置Shards
如前所述,分片用于水平擴(kuò)展一個(gè)跨多個(gè)節(jié)點(diǎn)的MongoDB。為了最大靈活性,MongoDB支持三種可由用戶定義的分片策略,根據(jù)應(yīng)用程序查詢模式和部署需求進(jìn)行優(yōu)化伸縮:
基于范圍分片
通過Shard鍵值對(duì)文檔進(jìn)行分片。分片鍵值相近的文檔可能位于同一個(gè)分片上。這種方法非常適合需要優(yōu)化基于范圍的查詢的應(yīng)用程序,例如為給定用戶的客戶檢索所有數(shù)據(jù),或在諸如時(shí)間序列數(shù)據(jù)的范圍內(nèi)訪問的數(shù)據(jù)。
基于哈希分片
使用一個(gè)MD5哈希的shard鍵值統(tǒng)一分發(fā)文檔。具有“關(guān)閉”的分片鍵值的文檔不太可能位于同一個(gè)分片上。這種方法可保證在分片之間均勻分配寫入數(shù)據(jù),但對(duì)于查詢文檔組的應(yīng)用程序來說,這種方法不太適合。

區(qū)分片
為DBA和運(yùn)維團(tuán)隊(duì)定義在一個(gè)分片集群里管理數(shù)據(jù)放置的具體規(guī)則的能力。區(qū)適合一系列部署場(chǎng)景。例如通過地理位置定位數(shù)據(jù),通過分層存儲(chǔ)架構(gòu)的硬件配置,或通過應(yīng)用程序功能。管理員能夠通過修改分片鍵范圍持續(xù)改進(jìn)數(shù)據(jù)放置規(guī)則,MongoDB將自動(dòng)將數(shù)據(jù)遷移到新的區(qū)域。了解更多信息,請(qǐng)參閱區(qū)域文檔 戳。
本文譯者:吳錦晟 R&D Director@MFG
原文鏈接:http://www.itdecent.cn/p/bc010efd41cc
版權(quán)歸譯者所有,轉(zhuǎn)載請(qǐng)注明出處