帶你揭秘Azure Blob存儲(chǔ)(上)

來源: 企業(yè)上云直升機(jī)
作者:周博洋
時(shí)間:2021-06-19
17245
Azure Blob存儲(chǔ)是一個(gè)云對(duì)象存儲(chǔ)系統(tǒng),它為客戶提供了在任何時(shí)間段內(nèi)存儲(chǔ)無限量的數(shù)據(jù)的能力。客戶可以隨時(shí)從任何地方訪問他們的數(shù)據(jù),并且只為他們使用和存儲(chǔ)的數(shù)據(jù)付費(fèi)。在Azure Blob中,數(shù)據(jù)可以選擇本地和地理復(fù)制進(jìn)行持久存儲(chǔ),以便于災(zāi)難恢復(fù)。在本文中,我們描述了Azure Blob存儲(chǔ)的體系結(jié)構(gòu)、全局名稱空間和數(shù)據(jù)模型,以及它的資源調(diào)配、負(fù)載平衡和復(fù)制系統(tǒng)。

概述

Azure Blob存儲(chǔ)是一個(gè)云對(duì)象存儲(chǔ)系統(tǒng),它為客戶提供了在任何時(shí)間段內(nèi)存儲(chǔ)無限量的數(shù)據(jù)的能力??蛻艨梢噪S時(shí)從任何地方訪問他們的數(shù)據(jù),并且只為他們使用和存儲(chǔ)的數(shù)據(jù)付費(fèi)。在Azure Blob中,數(shù)據(jù)可以選擇本地和地理復(fù)制進(jìn)行持久存儲(chǔ),以便于災(zāi)難恢復(fù)。在本文中,我們描述了Azure Blob存儲(chǔ)的體系結(jié)構(gòu)、全局名稱空間和數(shù)據(jù)模型,以及它的資源調(diào)配、負(fù)載平衡和復(fù)制系統(tǒng)。

01、簡(jiǎn)介

Azure Blob 存儲(chǔ)是一個(gè)可擴(kuò)展的云存儲(chǔ)系統(tǒng),自2008年11月開始發(fā)布以來。它在Microsoft內(nèi)部用于社交網(wǎng)絡(luò)搜索、提供視頻、音樂和游戲內(nèi)容、管理醫(yī)療記錄等應(yīng)用程序。此外,有成千上萬的微軟以外的客戶在使用 Azure Blob 存儲(chǔ),任何人都可以通過互聯(lián)網(wǎng)注冊(cè)使用該系統(tǒng)。在 Azure Blob的構(gòu)建過程中,來自潛在內(nèi)部和外部客戶的反饋推動(dòng)了許多設(shè)計(jì)決策。這些反饋產(chǎn)生的一些關(guān)鍵設(shè)計(jì)特性包括:

強(qiáng)一致性

許多客戶需要強(qiáng)一致性:尤其是企業(yè)客戶將其業(yè)務(wù)線應(yīng)用程序移動(dòng)到云端。他們還希望能夠?qū)?qiáng)一致性數(shù)據(jù)執(zhí)行條件讀、寫和刪除,以實(shí)現(xiàn)樂觀并發(fā)控制。為此,Azure Blob 盡可能提供了CAP定理聲稱難以同時(shí)實(shí)現(xiàn)的三個(gè)屬性:強(qiáng)一致性、高可用性和分區(qū)容限。

全局和可擴(kuò)展的命名空間

為便于使用,Azure Blob存儲(chǔ)實(shí)現(xiàn)了一個(gè)全局命名空間,允許從世界上任何位置以一致的方式存儲(chǔ)和訪問數(shù)據(jù)。由于Blob的一個(gè)主要目標(biāo)是支持存儲(chǔ)大量數(shù)據(jù),因此這個(gè)全局名稱空間必須能夠處理超過EB的數(shù)據(jù)。

容災(zāi)

Blob跨相距數(shù)百英里的多個(gè)數(shù)據(jù)中心存儲(chǔ)客戶數(shù)據(jù)。這種冗余為災(zāi)難(如地震、野火、龍卷風(fēng)等)提供了必要的數(shù)據(jù)恢復(fù)保護(hù)。

多租戶和存儲(chǔ)成本

為降低存儲(chǔ)成本,許多客戶都使用相同的共享存儲(chǔ)基礎(chǔ)架構(gòu)。Blob將具有不同資源需求的許多不同客戶的工作負(fù)載組合在一起,因此在任何一個(gè)時(shí)間點(diǎn)所需的存儲(chǔ)量都比在其專用硬件上運(yùn)行的服務(wù)要少得多。

02、全局分區(qū)名稱空間

我們存儲(chǔ)系統(tǒng)的一個(gè)關(guān)鍵目標(biāo)是提供一個(gè)單一的全局名稱空間,允許客戶端尋址云中的所有存儲(chǔ),并隨時(shí)間擴(kuò)展到所需的任意數(shù)量的存儲(chǔ)。為了提供這一功能,我們利用DNS作為存儲(chǔ)名稱空間的一部分,并將存儲(chǔ)名稱空間分為三個(gè)部分:帳戶名、分區(qū)名和對(duì)象名。因此,所有數(shù)據(jù)都可以通過入以下URI進(jìn)行訪問:http(s): //AccountName. blob.core.chinacloudapi.cn/PartitionName/ObjectName (國(guó)外的Azure Blob的domian name 略有區(qū)別)。

AccountName

是客戶選擇的用于訪問存儲(chǔ)的帳戶名,是DNS主機(jī)名的一部分。AccountName DNS轉(zhuǎn)換用于定位存儲(chǔ)數(shù)據(jù)的主存儲(chǔ)群集和數(shù)據(jù)中心。此主要位置是所有請(qǐng)求到達(dá)該帳戶數(shù)據(jù)的位置。應(yīng)用程序可以使用多個(gè)帳戶名跨不同位置存儲(chǔ)其數(shù)據(jù)。當(dāng)請(qǐng)求到達(dá)存儲(chǔ)集群時(shí),

PartitionName(對(duì)于Blob存儲(chǔ)來講就是Container name)

與AccountName一起定位數(shù)據(jù)。PartitionName用于當(dāng)數(shù)據(jù)需要跨存儲(chǔ)節(jié)點(diǎn)擴(kuò)展對(duì)數(shù)據(jù)的訪問。

ObjectName

標(biāo)識(shí)該分區(qū)中的各個(gè)對(duì)象。系統(tǒng)支持跨具有相同PartitionName值的對(duì)象的原子事務(wù)。

03、高層體系結(jié)構(gòu)

Azure云平臺(tái)

Azure云該平臺(tái)跨不同的數(shù)據(jù)中心和不同的地理區(qū)域運(yùn)行許多云服務(wù)。Azure Fabric 控制器是一個(gè)資源調(diào)配和管理層,它為Azure平臺(tái)上的云服務(wù)提供資源分配、部署/升級(jí)和管理。Azure存儲(chǔ)服務(wù)就是這樣一個(gè)在Fabric控制器上運(yùn)行的服務(wù)。Fabric控制器為Azure 存儲(chǔ)系統(tǒng)提供節(jié)點(diǎn)管理、網(wǎng)絡(luò)配置、運(yùn)行狀況監(jiān)視、服務(wù)實(shí)例的啟動(dòng)/停止以及服務(wù)部署。此外,Azure 存儲(chǔ)從Fabric控制器檢索網(wǎng)絡(luò)拓?fù)湫畔ⅰ⑷杭奈锢聿季忠约按鎯?chǔ)節(jié)點(diǎn)的硬件配置。Azure存儲(chǔ)服務(wù)負(fù)責(zé)管理跨磁盤的復(fù)制和數(shù)據(jù)放置,并在存儲(chǔ)群集中對(duì)數(shù)據(jù)和應(yīng)用程序通信進(jìn)行負(fù)載平衡。

Azure Blob 存儲(chǔ)體系結(jié)構(gòu)及其組件

Azure Blob存儲(chǔ)的一個(gè)重要特性是能夠存儲(chǔ)和提供對(duì)大量存儲(chǔ)(EB及以上)的訪問。Azure Blob存儲(chǔ)生產(chǎn)系統(tǒng)由存儲(chǔ)stamp和位置服務(wù)組成(如下圖所示)。

640 (2).png

存儲(chǔ)stamp

存儲(chǔ)stamp是由N個(gè)存儲(chǔ)節(jié)點(diǎn)機(jī)架組成的群集,其中每個(gè)機(jī)架構(gòu)建為具有冗余網(wǎng)絡(luò)和電源的獨(dú)立容錯(cuò)域。集群通常在20以上個(gè)機(jī)架之間,每個(gè)機(jī)架有N個(gè)磁盤密集型存儲(chǔ)節(jié)點(diǎn)。為了提供低成本的云存儲(chǔ),我們需要使生產(chǎn)中配置的存儲(chǔ)盡可能高利用率。我們的目標(biāo)是使存儲(chǔ)stamp在容量、事務(wù)和帶寬方面的利用率保持在70%左右。我們盡量避免超過80%,因?yàn)槲覀兿MA?0%的備用空間,以便支持(1)磁盤短行程,通過利用磁盤的外部磁道通過利用磁盤的外部磁道獲得更好的尋道時(shí)間和更高的吞吐量,以及(2)在內(nèi)存中出現(xiàn)機(jī)架故障時(shí)繼續(xù)提供存儲(chǔ)容量和可用性。當(dāng)存儲(chǔ)戳記的利用率達(dá)到70%時(shí),位置服務(wù)使用戳記間復(fù)制將帳戶遷移到不同的stamp。

位置服務(wù)(LS)

位置服務(wù)管理所有存儲(chǔ)stamp。它還負(fù)責(zé)跨所有stamp管理帳戶命名空間。LS將帳戶分配給存儲(chǔ)stamp,并跨存儲(chǔ)stamp對(duì)其進(jìn)行管理,以實(shí)現(xiàn)災(zāi)難恢復(fù)和負(fù)載平衡。一般來講位置服務(wù)本身分布在兩個(gè)地理位置上,用于自己的災(zāi)難恢復(fù)。Azure存儲(chǔ)從多個(gè)地理區(qū)域(如中國(guó)的北一,北二,東一,東二,北美、歐洲和其他亞洲非洲國(guó)家)的多個(gè)位置提供存儲(chǔ)。每個(gè)位置都是多個(gè)數(shù)據(jù)中心,在其中任意一個(gè)DC位置有一個(gè)或多個(gè)建筑物,每個(gè)位置都有多個(gè)存儲(chǔ)stamp。為了提供額外的容量,LS能夠輕松地向區(qū)域添加新區(qū)域、新位置或向位置添加新標(biāo)記。因此,為了增加存儲(chǔ)量,我們?cè)谒栉恢玫臄?shù)據(jù)中心部署一個(gè)或多個(gè)存儲(chǔ)stamp,并將它們添加到LS中。然后,LS可以為客戶將新的存儲(chǔ)帳戶分配給這些新的stamp,并將現(xiàn)有存儲(chǔ)帳戶從舊的stamp負(fù)載平衡(遷移)到新的stamp。對(duì)于具有兩個(gè)存儲(chǔ)stmap的位置服務(wù)和存儲(chǔ)stamp中的邏輯層,LS跨所有位置跟蹤生產(chǎn)中每個(gè)存儲(chǔ)stamp使用的資源。當(dāng)應(yīng)用程序請(qǐng)求一個(gè)新帳戶來存儲(chǔ)數(shù)據(jù)時(shí),它會(huì)指定存儲(chǔ)的位置相關(guān)性(例如,中國(guó)北二)。然后,LS使用基于所有stamp的負(fù)載信息的啟發(fā)式算法(該算法考慮戳的完整性和其他度量,例如網(wǎng)絡(luò),事務(wù)利用率)選擇該位置內(nèi)的存儲(chǔ)stamp作為帳戶的主stamp。LS然后將帳戶元數(shù)據(jù)信息存儲(chǔ)在所選的存儲(chǔ)stamp中,更新DNS以允許請(qǐng)求從https://. blob.core.chinacloudapi.cn /到該存儲(chǔ)stamp的虛擬IP(VIP,存儲(chǔ)stamp為外部通信公開的IP地址)。

存儲(chǔ)stamp中的三層結(jié)構(gòu)

自下而上,這些分別是:

1、stream層

這一層對(duì)于Blob存儲(chǔ)的操作主要位在磁盤上,也相當(dāng)于存儲(chǔ)的最底層,并負(fù)責(zé)分布和復(fù)制跨許多服務(wù)器的數(shù)據(jù),以保持?jǐn)?shù)據(jù)持久性。stream層可以被認(rèn)為是stamp中的分布式文件系統(tǒng)層。它是被稱為“流”(即稱為“擴(kuò)展數(shù)據(jù)塊”的大型存儲(chǔ)塊的有序列表)的文件、如何存儲(chǔ)它們、如何復(fù)制它們等等,這一層他都理解,但它不理解更高級(jí)別的對(duì)象構(gòu)造或它們的語(yǔ)義。數(shù)據(jù)存儲(chǔ)在stream層,但可以從Partition層訪問。事實(shí)上,Partition服務(wù)器(分區(qū)層中的守護(hù)進(jìn)程)和stream服務(wù)器在一個(gè)stamp中共同位于每個(gè)存儲(chǔ)節(jié)點(diǎn)上。

2、Partition層

Partition層用于(1)管理和理解更高級(jí)別的數(shù)據(jù)抽象,如Blob對(duì)象,(2)提供可伸縮的對(duì)象名稱空間,(3)為對(duì)象提供事務(wù)排序和強(qiáng)一致性,(4)在stream層上存儲(chǔ)對(duì)象數(shù)據(jù),以及(5)緩存對(duì)象數(shù)據(jù)以減少磁盤I/O。該層的另一個(gè)職責(zé)是通過在一個(gè)stamp中劃分所有數(shù)據(jù)對(duì)象來實(shí)現(xiàn)可伸縮性。

如前所述,所有對(duì)象都有一個(gè)PartitionName;基于PartitionName值,它們被分解為不相交的范圍,并由不同的分區(qū)服務(wù)器提供服務(wù)。該層管理哪個(gè)分區(qū)服務(wù)器為blob的 PartitionName范圍提供服務(wù)。此外,它還提供跨分區(qū)服務(wù)器的分區(qū)名稱的自動(dòng)負(fù)載平衡,以滿足對(duì)象的流量需求。

3、前端(Front-End)層

前端(FE)層由一組接收傳入請(qǐng)求的無狀態(tài)服務(wù)器組成。在接收到請(qǐng)求后,F(xiàn)E查找AccountName,對(duì)請(qǐng)求進(jìn)行身份驗(yàn)證和授權(quán),然后將請(qǐng)求路由到分區(qū)層中的分區(qū)服務(wù)器(基于PartitionName)。系統(tǒng)維護(hù)一個(gè)分區(qū)映射,該映射跟蹤分區(qū)名稱范圍以及哪個(gè)分區(qū)服務(wù)器為哪個(gè)分區(qū)名稱提供服務(wù)。FE服務(wù)器緩存分區(qū)映射,并使用它來確定將每個(gè)請(qǐng)求轉(zhuǎn)發(fā)到哪個(gè)分區(qū)服務(wù)器。FE服務(wù)器還直接從stream層stream化大型對(duì)象,并緩存頻繁訪問的數(shù)據(jù)以提高效率。

兩個(gè)復(fù)制引擎

在詳細(xì)描述Stream流和Partition層之前,我們首先簡(jiǎn)要概述系統(tǒng)中的兩個(gè)復(fù)制引擎及其各自的職責(zé)。

1、內(nèi)部stamp復(fù)制(stream層)

此系統(tǒng)提供同步復(fù)制,并側(cè)重于確保寫入stamp的所有數(shù)據(jù)在該stamp中保持持久性。它在不同故障域中的不同節(jié)點(diǎn)之間保留足夠的數(shù)據(jù)副本,以便在磁盤、節(jié)點(diǎn)和機(jī)架出現(xiàn)故障時(shí)保持?jǐn)?shù)據(jù)在stamp的持久性。stamp內(nèi)復(fù)制完全由stream層完成,位于客戶寫請(qǐng)求的關(guān)鍵路徑上。一旦通過內(nèi)部stamp復(fù)制成功復(fù)制了事務(wù),就可以將成功返回給客戶。

2、Stamp間復(fù)制(Partition層)

此系統(tǒng)提供異步復(fù)制,重點(diǎn)是跨stamp復(fù)制數(shù)據(jù)。stamp間復(fù)制是在后臺(tái)完成的,不在客戶請(qǐng)求的關(guān)鍵路徑上。此復(fù)制是在對(duì)象級(jí)別進(jìn)行的,在該級(jí)別上,可以復(fù)制整個(gè)對(duì)象,也可以復(fù)制給定帳戶的最近增量更改。stamp間復(fù)制用于(1)在兩個(gè)位置保留帳戶數(shù)據(jù)的副本以進(jìn)行災(zāi)難恢復(fù),以及(2)在stamp之間遷移帳戶數(shù)據(jù)。stamp間復(fù)制由位置服務(wù)為帳戶配置,并由Partition層執(zhí)行。stamp間復(fù)制的重點(diǎn)是復(fù)制對(duì)象和應(yīng)用于這些對(duì)象的事務(wù),而stamp內(nèi)復(fù)制的重點(diǎn)是復(fù)制用于組成對(duì)象的磁盤存儲(chǔ)塊。


stamp內(nèi)復(fù)制提供了對(duì)硬件故障的持久性,這種故障在大規(guī)模系統(tǒng)中經(jīng)常發(fā)生,而stamp間復(fù)制提供了對(duì)地理災(zāi)害的地理冗余,這種情況很少見。提供低延遲的stamp內(nèi)復(fù)制是至關(guān)重要的,因?yàn)檫@是在用戶請(qǐng)求的關(guān)鍵路徑上;而stamp間復(fù)制的重點(diǎn)是在達(dá)到可接受的復(fù)制延遲水平的同時(shí),優(yōu)化利用stamp間的網(wǎng)絡(luò)帶寬。這兩種復(fù)制方案解決的問題不同。創(chuàng)建這兩個(gè)獨(dú)立復(fù)制層的另一個(gè)原因是這兩個(gè)層中的每個(gè)層都必須維護(hù)的名稱空間。在stream層執(zhí)行stamp內(nèi)復(fù)制允許將需要維護(hù)的信息量限定為單個(gè)存儲(chǔ)stamp的大小。


這一重點(diǎn)允許將所有stamp內(nèi)復(fù)制的元狀態(tài)緩存在內(nèi)存中以提高性能, 從而使Azure Blob存儲(chǔ)系統(tǒng)能夠通過在單個(gè)stamp內(nèi)快速提交事務(wù)以滿足客戶請(qǐng)求,從而提供具有強(qiáng)一致性的快速?gòu)?fù)制。與此相反,Partition層與位置服務(wù)相結(jié)合,控制并理解跨stamp的全局對(duì)象名稱空間,從而允許它跨數(shù)據(jù)中心高效地復(fù)制和維護(hù)對(duì)象狀態(tài)。

(未完待續(xù))

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于企業(yè)上云直升機(jī),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁(yè),突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家