日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Azure Cosmos DB技术性解读

發(fā)布時(shí)間:2023/12/4 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Azure Cosmos DB技术性解读 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Azure Cosmos DB是微軟公司打造的一項(xiàng)全球分布式、橫向分區(qū)、多模型數(shù)據(jù)庫服務(wù)。該服務(wù)允許客戶彈性(及獨(dú)立形式)跨越任意數(shù)量地理服務(wù)區(qū)對吞吐量與存儲進(jìn)行擴(kuò)展。Azure Cosmos DB可立足第99百分位比例提升99.99%高可用性水平,提供可預(yù)測吞吐量以及多套經(jīng)過明確定義的一致性模型,從而保證實(shí)現(xiàn)低延遲表現(xiàn)。Azure Cosmos DB亦當(dāng)前行業(yè)中第一項(xiàng),同時(shí)也是惟一一項(xiàng)全球分布式數(shù)據(jù)庫服務(wù)。其可提供全面的服務(wù)水平協(xié)議(簡稱SLA),其中涵蓋客戶最為關(guān)心的四大維度:吞吐量、第99百分位比例延遲表現(xiàn)、可用性以及一致性。

作為一項(xiàng)云服務(wù),我們對Azure Cosmos DB進(jìn)行了精心設(shè)計(jì)與工程開發(fā),同時(shí)充分考慮到多租戶及全球分布等實(shí)際因素。在今天的博文當(dāng)中,我們將對Azure Cosmos DB當(dāng)中的關(guān)鍵性功能以及架構(gòu)選擇作出解讀。

Azure Cosmos DB基本信息


圖靈獎(jiǎng)獲得者兼全球知名計(jì)算機(jī)科學(xué)家Leslie Lamport博士的工作成果深刻影響到眾多大規(guī)模分布式系統(tǒng)。Azure Cosmos DB自然也不例外。在Azure Cosmos DB長達(dá)七年的構(gòu)建過程當(dāng)中,Leslie的成果一直是我們最重要的靈感源泉。

在此前接受采訪時(shí),Leslie亦分享了他對于Azure Cosmos DB基礎(chǔ)架構(gòu)的看法及其在Azure Cosmos DB設(shè)計(jì)工作當(dāng)中發(fā)揮的巨大作用。

Azure Cosmos DB的設(shè)計(jì)目標(biāo)

Azure Cosmos DB自2010年起既已立項(xiàng),當(dāng)時(shí)的代號為“Florence項(xiàng)目”。其目標(biāo)在于解決開發(fā)者在微軟環(huán)境下構(gòu)建互聯(lián)網(wǎng)規(guī)模應(yīng)用程序時(shí)面臨的幾大根本性痛點(diǎn)。我們?yōu)锳zure Cosmos DB制定出以下發(fā)展目標(biāo)。

  • 保證客戶能夠在全球規(guī)模下根據(jù)需求以彈性方式擴(kuò)展吞吐量與存儲量。?從收到請求到完成擴(kuò)展,這套系統(tǒng)應(yīng)能夠在99%比例的場景下于5秒之內(nèi)交付經(jīng)過配置的吞吐能力。

  • 幫助客戶構(gòu)建起具備高度響應(yīng)性的關(guān)鍵性任務(wù)應(yīng)用程序。?這套系統(tǒng)必須能夠在99%比例的場景下交付可預(yù)測且擁有可靠性保障的端到端低讀取與寫入延遲。

  • 確保這套系統(tǒng)“始終開啟”。這套系統(tǒng)必須實(shí)現(xiàn)99.99%的可用性,且不因與數(shù)據(jù)庫相關(guān)的具體服務(wù)區(qū)數(shù)量而受到影響。為了保證客戶能夠?qū)?yīng)用程序的端到端可用性屬性進(jìn)行測試,該服務(wù)必須能夠在穩(wěn)定狀態(tài)下允許客戶模擬服務(wù)區(qū)故障或者標(biāo)記與其數(shù)據(jù)庫下線狀況相關(guān)的服務(wù)區(qū)。這將有助于難應(yīng)用程序的端到端可用性屬性。

  • 使得開發(fā)人員能夠編寫出正確的全球分布式應(yīng)用程序。這套系統(tǒng)必須圍繞數(shù)據(jù)一致性提供直觀且可預(yù)測的編程模型。盡管強(qiáng)大的一致性會帶來成本提升,但僅依托于“最終一致性”在數(shù)據(jù)庫當(dāng)中編寫大型全球分布式應(yīng)用程序?qū)⒁l(fā)難以回溯的應(yīng)用程序代碼問題、缺陷以及正確性bug。

  • 為之前4項(xiàng)目標(biāo)提供嚴(yán)格且符合財(cái)務(wù)要求的綜合性SLA

  • 減輕開發(fā)人員所面臨的數(shù)據(jù)庫模式/索引管理以及版本控制等負(fù)擔(dān)。對于全球分布式應(yīng)用程序而言,確保數(shù)據(jù)庫模式與索引同應(yīng)用程序模式保持同步往往尤為難以實(shí)現(xiàn)。

  • 以原生方式支持多種數(shù)據(jù)模型以及各類高人氣數(shù)據(jù)訪問API。外部公開API與內(nèi)部數(shù)據(jù)表達(dá)之間的翻譯流程必須高效可行。

  • 提供極低運(yùn)營成本以幫助客戶節(jié)約資金投入。

  • Azure Cosmos DB設(shè)計(jì)中值得強(qiáng)調(diào)的各個(gè)方面

    無論立足單一目標(biāo)抑或是全部要求,以上提到的各項(xiàng)前提都需要新穎的解決方案與復(fù)雜的工程權(quán)衡方有望實(shí)現(xiàn)。Azure Cosmos DB在設(shè)計(jì)當(dāng)中的獨(dú)特之處,在于我們采取獨(dú)特的方法以引導(dǎo)這些約束條件并在各工程技術(shù)任務(wù)之間選取最佳平衡點(diǎn)。

    以下為Azure Cosmos DB系統(tǒng)設(shè)計(jì)當(dāng)中值得強(qiáng)調(diào)的各個(gè)重要方面。我們將在后續(xù)博文當(dāng)中更為具體地為大家闡述其相關(guān)細(xì)節(jié)。

  • Azure Cosmos DB的設(shè)計(jì)旨在以動態(tài)形式配置數(shù)據(jù)庫引擎與底層存儲之間的接近度,從而支持匹配不同性能SLA的多個(gè)服務(wù)層。根據(jù)具體服務(wù)層,系統(tǒng)可通過配置用于支持計(jì)算及存儲資源,從而(a)立足同一進(jìn)程空間進(jìn)行同地協(xié)作; (b)立足同一集群內(nèi)的各設(shè)備進(jìn)行分解; 或者(c)跨越同一服務(wù)區(qū)內(nèi)多個(gè)不同集群/數(shù)據(jù)中心進(jìn)行分解。

  • Azure Cosmos DB面向吞吐能力、延遲、一致性以及可用性等角度建立起綜合性SLA體系。這些SLA負(fù)責(zé)明確定義一套全球分布式設(shè)置當(dāng)中對于延遲、一致性、可用性以及吞吐能力間的權(quán)衡結(jié)果。

  • Azure Cosmos DB在系統(tǒng)內(nèi)核層面采取獨(dú)特的資源治理設(shè)計(jì),其能夠提供一套一致性編程模型以跨越一組異構(gòu)性數(shù)據(jù)庫運(yùn)營集實(shí)現(xiàn)吞吐能力配置。

  • Azure Cosmos DB擁有一套高度模塊化且資源得到充分治理的方案,旨在解決各類常見協(xié)調(diào)問題,具體包括跨服務(wù)區(qū)復(fù)制以及透明分區(qū)管理等等。

  • Azure Cosmos DB在設(shè)計(jì)上能夠跨越多個(gè)地理服務(wù)區(qū)實(shí)現(xiàn)吞吐能力的彈性擴(kuò)展,同時(shí)保證不影響到SLA。該系統(tǒng)在設(shè)計(jì)上即考慮到跨服務(wù)區(qū)吞吐量擴(kuò)展需求,且可確保吞吐量變化以即時(shí)形式存在。

  • Azure Cosmos DB的設(shè)計(jì)與實(shí)現(xiàn)方案可精確指定一組簡單明確且符合TLA+要求的、經(jīng)過良好定義的一致性模型。這種能力使得各一致性模型能夠充分適應(yīng)各類現(xiàn)實(shí)場景,提供可證明的一致性保證,在多租戶與全球分布式設(shè)置當(dāng)中擁有商業(yè)可行性,同時(shí)提供一套直觀的編程模型以幫助開發(fā)人員編寫出正確的分布式應(yīng)用程序。據(jù)我們所知,Azure Cosmos DB亦是目前市場上惟一一套全球分布式數(shù)據(jù)庫系統(tǒng),其可實(shí)現(xiàn)有限過期、會話與一致性前綴等一致性模型的順利運(yùn)營,同時(shí)將其交付給開發(fā)者并配合明確的語義、性能/可用性權(quán)衡以及SLA支持能力。

  • Azure Cosmos DB擁有一套寫入優(yōu)化型資源治理與模式中立式數(shù)據(jù)庫引擎(備注:自相關(guān)論文發(fā)布以來,其又迎來了可觀的長足演進(jìn))。這套引擎能夠持續(xù)處理大規(guī)模更新,以自動化方式對全部輸入內(nèi)容進(jìn)行索引,并在保證確認(rèn)客戶更新前以同步方式實(shí)現(xiàn)索引持久性與高可用性的同時(shí),維持穩(wěn)定的低延遲表現(xiàn)。

  • Azure Cosmos DB在設(shè)計(jì)中充分考慮到其核心數(shù)據(jù)模型與類型系統(tǒng)的具體需求并配合極具可擴(kuò)展數(shù)據(jù)庫引擎設(shè)計(jì),旨在允許用戶高效向其核心數(shù)據(jù)模型當(dāng)中添加、翻譯以及投射多種數(shù)據(jù)模型以及API與編程語言類型系統(tǒng)。

  • 一項(xiàng)多模型、多API數(shù)據(jù)庫服務(wù)

    (點(diǎn)擊放大圖像)

    圖一:Azure Cosmos DB是一套多模型、多API全球分布式數(shù)據(jù)庫平臺

    如圖一所示,Azure Cosmos DB能夠原生支持多種數(shù)據(jù)模型。Azure Cosmos DB數(shù)據(jù)引擎的核心類型系統(tǒng)基于原子-記錄-序列(簡稱ARS)。各原子由一組小型原始類型組成,具體包括字符串、布爾類型以及數(shù)字等組成。其中各記錄為結(jié)構(gòu)體,序列則為包含有原子、記錄或序列的數(shù)組。Azure Cosmos DB的數(shù)據(jù)庫引擎能夠高效將各數(shù)據(jù)模型翻譯并投射至基于ARS的數(shù)據(jù)模型當(dāng)中。Azure Cosmos DB的核心數(shù)據(jù)模型可原生接受來自動態(tài)類型編程語言的訪問,并可直接表達(dá)為JSON或者其它類似的形式。這樣的設(shè)計(jì)亦使其能夠原生支持用于數(shù)據(jù)訪問及查詢的各類主流數(shù)據(jù)庫API。Azure Cosmos DB的數(shù)據(jù)庫引擎目前支持DocumentDB SQL、MongoDB、Azure Table Storage以及Gremlin圖形查詢API。我們還計(jì)劃對其進(jìn)行進(jìn)一步擴(kuò)展,借以支持其它高人氣數(shù)據(jù)庫API。而最重要的優(yōu)勢在于,開發(fā)人員可以利用流行的OSS API以構(gòu)建應(yīng)用程序,且同時(shí)享受經(jīng)過實(shí)戰(zhàn)驗(yàn)證且完全受控的全球分布式數(shù)據(jù)庫系統(tǒng)所能帶來的所有助益。

    資源模型與API投射

    開發(fā)人員能夠通過訂閱Azure的方式配置數(shù)據(jù)庫帳戶,從而輕松運(yùn)用Azure Cosmos DB。數(shù)據(jù)庫帳戶負(fù)責(zé)管理一套或者多套數(shù)據(jù)庫。Azure Cosmos DB數(shù)據(jù)庫能夠管理用戶、權(quán)限以及容器。Azure Cosmos DB容器屬于模型中立型容器,可用于容納用戶生成的任意實(shí)體、存儲規(guī)程、觸發(fā)器以及用戶定義函數(shù)(簡稱UDF)。客戶數(shù)據(jù)庫帳戶當(dāng)中的各類實(shí)例——包括數(shù)據(jù)庫、用戶、權(quán)限以及容器等等——皆被稱為資源,具體如圖二所示。

    (點(diǎn)擊放大圖像)

    圖二:資源模型與API投射

    每種資源皆由一條穩(wěn)定的邏輯URI作為惟一標(biāo)識,并被表達(dá)為一個(gè)JSON文檔。使用Azure Cosmos DB的應(yīng)用程序的整體資源模型屬于一套層級化資源疊加結(jié)構(gòu),根植于數(shù)據(jù)庫帳戶當(dāng)中并可利用超鏈接進(jìn)行導(dǎo)航。除了用于表達(dá)用戶所定義的任意內(nèi)容的條目資源內(nèi)容之外,所有其它資源皆遵循一套系統(tǒng)定義模式。條目資源的內(nèi)容模型基于此前提到的原子-記錄-序列(簡稱ARS)原則。如表一所示,容器與條目資源皆被進(jìn)一步投射為面向特定API接口類型的物化資源類型。舉例來說,在使用面向文檔API時(shí),容器與條目資源會被分別投射為集合(容器)與文檔(條目)資源; 同樣的,對于面向圖形的API訪問,底層容器與條目資源會被分別投射為圖形(容器)、節(jié)點(diǎn)(條目)以及邊緣(條目)資源; 而在使用鍵-值A(chǔ)PI進(jìn)行訪問時(shí),其將被投射為表(容器)與條目/行(條目)。

    ?

    API

    容器被投射為……

    條目被投射為……

    DocumentDB SQL

    集合

    文檔

    MongoDB

    集合

    文檔

    Azure Table Storage

    條目

    Gremlin

    圖形

    節(jié)點(diǎn)與邊緣

    表一:基于特定API數(shù)據(jù)模型的容器與條目投射方式。

    橫向分區(qū)

    (點(diǎn)擊放大圖像)

    圖三:利用橫向分區(qū)實(shí)現(xiàn)彈性可擴(kuò)展性。

    Azure Cosmos DB容器當(dāng)中的全部數(shù)據(jù)(例如集合、表以及圖形等)皆由資源分區(qū)進(jìn)行橫向分區(qū)與透明化管理,具體如圖三所示。一個(gè)資源分區(qū),是指一套根據(jù)客戶指定分區(qū)-鍵進(jìn)行分區(qū)的一致性、高可用性數(shù)據(jù)容器; 其負(fù)責(zé)為其管理下的資源組提供單一系統(tǒng)鏡像,且屬于可擴(kuò)展性與分布機(jī)制的基本單元。Azure Cosmos DB在設(shè)計(jì)當(dāng)中充分考慮到客戶根據(jù)不同地理服務(wù)區(qū)間應(yīng)用程序流量模式實(shí)現(xiàn)吞吐量彈性擴(kuò)展的需求,幫助其借此支持受地理位置與時(shí)間因素影響的波動性工作負(fù)載。該系統(tǒng)以透明化方式管理各分區(qū),且不會影響到Azure Cosmos DB容器的可用性、一致性、延遲或者吞吐能力。

    客戶可立足Azure Cosmos DB容器以分或秒等粒度水平通過編程方式配置吞吐量,從而實(shí)現(xiàn)容器的彈性吞吐能力擴(kuò)展。從內(nèi)部來看,該系統(tǒng)以透明方式管理各資源分區(qū),從而為特定容器提供其需要的吞吐能力。大家可以根據(jù)自身系統(tǒng)資源預(yù)算水平對整體吞吐量進(jìn)行劃分,借此交付不同資源分區(qū),并最終利用資源橫向分區(qū)實(shí)現(xiàn)吞吐量的彈性擴(kuò)展。由于Azure Cosmos DB容器擁有全球分布式特性,因此Azure Cosmos DB可確保某一容器的吞吐量可用于該容器分布涵蓋到的全部服務(wù)區(qū),而且整個(gè)各數(shù)值變更只需要數(shù)秒即可完成。客戶可通過分或秒等粒度級別對Azure Cosmos DB容器的吞吐量進(jìn)行配置(吞吐量的請求單位,簡稱RU,被稱為‘貨幣單位’)。以分鐘級別配置的吞吐量適用于管理工作負(fù)載當(dāng)中以秒為單位出現(xiàn)的意外資源需求峰值。舉例來說,客戶可能以一小時(shí)為周期在某一容器當(dāng)中配置10000 RU每秒與100000 RU每分鐘。如圖四所示,該工作負(fù)載在任意某分鐘內(nèi)出現(xiàn)的資源需求峰值會被該分鐘內(nèi)配置的RU每分鐘所抵消。在本示例當(dāng)中,客戶能夠?qū)⑼掏铝康恼w配置成本降低達(dá)73%。

    (點(diǎn)擊放大圖像)

    圖四:客戶在處理意外工作負(fù)載峰值時(shí),利用RU每秒與RU每分鐘方式降低實(shí)現(xiàn)成本。

    立足基礎(chǔ)層面建立全球分布體系

    如圖五所示,客戶資源通過兩大維度進(jìn)行分布:在特定服務(wù)區(qū)中,全部資源雙可利用資源分區(qū)進(jìn)行橫向分區(qū)(本地分布)。而各資源分區(qū)亦可跨地理服務(wù)區(qū)進(jìn)行復(fù)制(全球分布)。

    (點(diǎn)擊放大圖像)

    圖五:同一容器可同時(shí)進(jìn)行本地與全球分布。

    當(dāng)客戶對吞吐量或存儲量進(jìn)行彈性擴(kuò)展時(shí),Azure Cosmos DB能夠以透明方式在所有服務(wù)區(qū)內(nèi)執(zhí)行分區(qū)管理操作。無論具體規(guī)模、分布或者故障情況如何,Azure Cosmos DB都能夠持續(xù)提供單一全球分布式資源系統(tǒng)鏡像。Azure Cosmos DB當(dāng)中的資源全球分布系統(tǒng)屬于交鑰匙型方案:無論何時(shí),您僅需數(shù)次點(diǎn)擊(或者通過編程方式進(jìn)行一次API調(diào)用),即可將任意數(shù)量地理服務(wù)區(qū)與其數(shù)據(jù)庫帳戶進(jìn)行關(guān)聯(lián)。另外,無論數(shù)據(jù)規(guī)模或者服務(wù)區(qū)數(shù)量如何,Azure Cosmos DB皆保證在99%比例的場景下,能夠于接到客戶申請的1小時(shí)之內(nèi)完成服務(wù)區(qū)關(guān)聯(lián)。之所以能夠?qū)崿F(xiàn)這一效果,是因?yàn)槲覀円圆⑿蟹绞綄碜匀吭促Y源分區(qū)的數(shù)據(jù)饋送并復(fù)制至新的關(guān)聯(lián)服務(wù)區(qū)當(dāng)中。客戶亦可移除現(xiàn)有服務(wù)區(qū),或者對原本關(guān)聯(lián)至其數(shù)據(jù)庫帳戶的服務(wù)區(qū)進(jìn)行“離線”操作。

    透明多歸屬與99.99%高可用性

    客戶也可以將“優(yōu)先級”動態(tài)關(guān)聯(lián)至與其數(shù)據(jù)庫帳戶相關(guān)的服務(wù)區(qū)處。一旦發(fā)生服務(wù)區(qū)故障,此優(yōu)先級可用于將請求定向至特定服務(wù)區(qū)。而且盡管可能性極低,但如果出現(xiàn)服務(wù)區(qū)規(guī)模的災(zāi)難事件,Azure Cosmos DB亦會根據(jù)優(yōu)先級設(shè)定進(jìn)行自動故障轉(zhuǎn)移。為了測試應(yīng)用程序的端到端可用性,客戶可以手動方式觸發(fā)故障事件(要求每小時(shí)內(nèi)最多進(jìn)行兩次此類操作)。Azure Cosmos DB保證在客戶觸發(fā)服務(wù)區(qū)故障時(shí)提供零數(shù)據(jù)丟失保障,同時(shí)為服務(wù)區(qū)災(zāi)難期間因系統(tǒng)觸發(fā)之自動故障轉(zhuǎn)移帶來的數(shù)據(jù)丟失狀況設(shè)定上限。應(yīng)用程序本身并不需要在服務(wù)區(qū)故障狀況下進(jìn)行重新部署,而且可用性SLA仍然有效。為此,Azure Cosmos DB允許開發(fā)者利用邏輯(任意服務(wù)區(qū))或者物理(特定服務(wù)區(qū))端點(diǎn)與其資源進(jìn)行交互。前者能夠確保應(yīng)用程序在故障場景下以透明化方式實(shí)現(xiàn)多歸屬; 后者則提供細(xì)粒度控制,以確保將指向該應(yīng)用程序的讀取與寫入請求重新定向至特定服務(wù)區(qū)。Azure Cosmos DB為每個(gè)數(shù)據(jù)庫帳戶提供高達(dá)99.99%的可用性SLA。這一可用性保證不因具體規(guī)模(客戶數(shù)據(jù)庫中的實(shí)際吞吐量與存儲量)、服務(wù)區(qū)數(shù)量或者特定數(shù)據(jù)庫所關(guān)聯(lián)之各服務(wù)區(qū)間的地理距離而受到影響。

    在99%的場景下提供低延遲保證

    作為SLA中的組成部分,Azure Cosmos DB向客戶作出99%場景下的端到端低延遲保證。對于典型的1 KB條目,Azure Cosmos DB承諾在同一Azure服務(wù)區(qū)內(nèi),在99%的場景下實(shí)現(xiàn)端到端讀取延遲低于10毫秒、索引寫入延遲則低于15毫秒。其平均延遲通常比承諾低得多(低于5毫秒)。通過為各項(xiàng)數(shù)據(jù)庫事務(wù)設(shè)定的請求處理上限,Azure Cosmos DB允許客戶端明確區(qū)分各事務(wù)間的高延遲與不可用數(shù)據(jù)庫。

    SLA支持下的多種經(jīng)過良好定義的一致性模型

    目前可用的商業(yè)分布式數(shù)據(jù)庫可分為兩類:(1)不提供經(jīng)過良好定義且可證明的一致性選項(xiàng)的數(shù)據(jù)庫; (2)提供兩種極端一致性選項(xiàng)的數(shù)據(jù)庫——即強(qiáng)一致性與最終一致性。前一種系統(tǒng)要求應(yīng)用程序開發(fā)人員自行為其復(fù)制協(xié)議負(fù)責(zé),這意味著開發(fā)者必須獨(dú)力在一致性、可用性、延遲以及吞吐量之間作出艱難探索。后一種系統(tǒng)則以非黑即白的方式強(qiáng)迫開發(fā)者作出極端性選擇。盡管目前已經(jīng)出現(xiàn)眾多關(guān)于一致性模型的研究與建議,但商業(yè)分布式數(shù)據(jù)庫服務(wù)仍然沒能在強(qiáng)一致性與最終一致性之外真正構(gòu)建起可行的一致性實(shí)現(xiàn)途徑。相比之下,Azure Cosmos DB允許開發(fā)者根據(jù)一致性頻譜(如圖六所示)從五種經(jīng)過良好定義的一致性模型當(dāng)中作出選擇——具體包括強(qiáng)一致性、有限過期一致性、會話一致性、一致性前綴以及最終一致性。

    (點(diǎn)擊放大圖像)

    圖六:頻譜中列出多種經(jīng)過良好定義的一致性選項(xiàng)。

    開發(fā)者們能夠利用Azure Cosmos DB在其數(shù)據(jù)庫帳戶當(dāng)中對默認(rèn)一改級別進(jìn)行配置(隨后新配置將覆蓋特定讀取請求的一致性設(shè)定)。從內(nèi)部來看,默認(rèn)一致性級別往往適用于跨服務(wù)區(qū)分區(qū)組內(nèi)的數(shù)據(jù)。根據(jù)統(tǒng)計(jì),我們的客戶中有73%使用會話一致性,而20%傾向于選擇有限過期一致性。我們發(fā)現(xiàn),約有3%的客戶會首先實(shí)驗(yàn)我類一致性級別,而后才為應(yīng)用程序作出特定級別選擇。我們同時(shí)發(fā)現(xiàn),平均只有2%的客戶會立足單一請求采用不同的一致性級別。為了向客戶通報(bào)有違一致性SLA的狀況,我們采用一套線性檢查器并保證其在所遙測的服務(wù)當(dāng)中持續(xù)運(yùn)行。在有限過期選項(xiàng)當(dāng)中,我們會監(jiān)控并報(bào)告一切有違k與t界限的狀況。對于所有四種較為寬松的一致性選項(xiàng),我們還特別對概率性有限過期(簡稱PBS)指標(biāo)進(jìn)行了追蹤與報(bào)告。

    全資源治理堆棧

    Azure Cosmos DB旨在允許客戶以彈性方式根據(jù)應(yīng)用流量模式跨越不同服務(wù)區(qū)實(shí)現(xiàn)吞吐量擴(kuò)展,從而立足地理位置與時(shí)間因素支持波動性工作負(fù)載。要以具備成本效益的方式運(yùn)營成千上萬種不同類型的全球分布式工作負(fù)載,我們必須實(shí)現(xiàn)細(xì)粒度多租戶機(jī)制,即由數(shù)百家客戶共享同一設(shè)備,并由數(shù)千家客戶共享同一集群。為了在保證運(yùn)營成本效益的同時(shí)實(shí)現(xiàn)各客戶間的性能隔離,我們從根本層面充分考量了系統(tǒng)的資源治理方式。作為一套資源治理系統(tǒng),Azure Cosmos DB屬于一套包含眾多級聯(lián)組件的大規(guī)模分布式隊(duì)列系統(tǒng),且其中各組件皆通過精心調(diào)校以保證在系統(tǒng)資源預(yù)算配額范圍之內(nèi)提供可預(yù)測的吞吐能力。為了以最佳方式利用特定集群當(dāng)中的系統(tǒng)資源(包括CPU、內(nèi)存、磁盤以及網(wǎng)絡(luò)),集群中的每臺設(shè)備都可以動態(tài)方式托管十余家到百余家客戶。另外,從準(zhǔn)入控制到全部I/O路徑,整體堆棧內(nèi)皆部署有速率限制與背壓控制機(jī)制。我們的數(shù)據(jù)庫引擎可實(shí)現(xiàn)細(xì)粒度并發(fā)性,并在盡可能節(jié)約系統(tǒng)資源的同時(shí)最大程度提供高吞吐量。

    單位時(shí)間內(nèi)發(fā)生的數(shù)據(jù)庫操作數(shù)量(即吞吐量)屬于系統(tǒng)資源預(yù)留與消費(fèi)的基本單位。客戶可以針對具體數(shù)據(jù)執(zhí)行廣泛的數(shù)據(jù)庫操作。而根據(jù)實(shí)際操作類型與載荷(請求與響應(yīng)),操作所消費(fèi)的系統(tǒng)資源量亦有所區(qū)別。為了為計(jì)算請求所消耗的資源建立標(biāo)準(zhǔn)化模型,將系統(tǒng)資源預(yù)算同特定資源分區(qū)所需要交付的吞吐量相關(guān)聯(lián),同時(shí)為客戶提供無關(guān)硬件形式的一致性數(shù)據(jù)庫操作吞吐能力,我們?yōu)橥掏铝慷x出一種基于速率的抽象貨幣,并將其稱為請求單位或者RU(詳見圖七)。這一單位適用于兩種基于時(shí)間粒度的維度——請求單位每秒(RU/s)以及請求單位每分(RU/m)。客戶可以彈性方式通過編程配置容器上的RU/s(及/或RU/m),從而實(shí)現(xiàn)容器吞吐能力擴(kuò)展。從內(nèi)部來看,該系統(tǒng)管理各資源分區(qū)以為特定容器交付吞吐能力。要利用資源橫向分區(qū)機(jī)制實(shí)現(xiàn)吞吐量的彈性擴(kuò)展,要求各個(gè)資源分區(qū)能夠根據(jù)特定系統(tǒng)資源預(yù)算交付整體吞吐量中的一部分。

    (點(diǎn)擊放大圖像)

    圖七:RU/s(及RU/m)為各數(shù)據(jù)庫操作吞吐量的標(biāo)準(zhǔn)化貨幣單位。

    作為準(zhǔn)入控制機(jī)制的一部分,每個(gè)分區(qū)則采用自適應(yīng)速率限制規(guī)則。如果資源分區(qū)在一秒內(nèi)接收到的請求數(shù)量超出了其經(jīng)過校準(zhǔn)的響應(yīng)能力,則客戶端將收到“請求速率過大”提示,并需要等待特定時(shí)間間隔方可進(jìn)行重試。資源分區(qū)每秒對RU備用容量(如果有)執(zhí)行(限制)背景調(diào)查(例如對日志結(jié)構(gòu)化數(shù)據(jù)庫引擎進(jìn)行背景調(diào)查、定期提取快照備份以及刪除過期條目等)。一旦請求被核準(zhǔn),我們即會計(jì)算其中每項(xiàng)微操所消耗的RU資源(例如分析條目、讀取/寫入頁面或者執(zhí)行查詢運(yùn)算等)。

    結(jié)論

    Azure Cosmos DB將全球分布、彈性橫向可擴(kuò)展性以及多模型與模式中立式數(shù)據(jù)庫引擎作為設(shè)計(jì)目標(biāo)。作為一套云原生多租戶數(shù)據(jù)庫系統(tǒng),Azure Cosmos DB在設(shè)計(jì)上充分考慮到立足整體堆棧實(shí)現(xiàn)資源交叉治理。從初始設(shè)計(jì)開始,我們就要求Azure Cosmos DB必須具備全球數(shù)據(jù)分布、多種明確一致性水平選項(xiàng)、彈性跨地理服務(wù)區(qū)吞吐量擴(kuò)展等能力,同時(shí)必須在自身綜合性SLA當(dāng)中涵蓋全部客戶對于吞吐量、一致性、延遲以及可用性的實(shí)際要求。

    鳴謝

    Azure Cosmos DB于2010年以“Florence項(xiàng)目”的形式正式誕生,期間被納入Azure DocumentDB并最終逐步發(fā)展為現(xiàn)在Azure Cosmos DB的形式。我們對Dave Campbell、Mark Russinovich、Scott Guthrie以及Gopal Kakivaya提供的支持表示由衷感謝。我們也要感謝多年以來微軟各團(tuán)隊(duì)多年以來對Azure Cosmos DB的廣泛使用。我們站在了巨人的肩膀上——Azure Cosmos DB當(dāng)中眾多組件技術(shù)正是前輩大德們辛勤耕耘的結(jié)果; 另外還要感謝Service Fabric團(tuán)隊(duì)為我們提供了強(qiáng)大的分布式系統(tǒng)基礎(chǔ)設(shè)施以及支持與合作。我們感激Leslie Lamport博士帶來的深刻啟發(fā),這亦不斷影響著我們在分布式系統(tǒng)設(shè)計(jì)方法層面的理解方向。最后但同樣重要的是,我們要感謝Azure Cosmos DB工程師團(tuán)隊(duì)作出的發(fā)展承諾以及為此投入的不懈努力。

    原文地址:http://www.infoq.com/cn/articles/technical-interpretation-of-azure-cosmos-db


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

    總結(jié)

    以上是生活随笔為你收集整理的Azure Cosmos DB技术性解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。