Windows Azure Storage設(shè)計(jì)原理,微軟azure存儲架構(gòu)-ESG跨境

Windows Azure Storage設(shè)計(jì)原理,微軟azure存儲架構(gòu)

來源網(wǎng)絡(luò)
來源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 896

Windows Azure Storage設(shè)計(jì)原理,微軟azure存儲架構(gòu)Windows Azure Storage設(shè)計(jì)原理Windows Azure Storage(WAS)是微軟提供的云存儲服務(wù)。WAS設(shè)計(jì)的主要目標(biāo)強(qiáng)一致性,號稱CAP都能滿足提供全球統(tǒng)一的存儲服務(wù)提供完善的異地容災(zāi)支持WAS的名字空間WAS提供三......

Windows Azure Storage設(shè)計(jì)原理,微軟azure存儲架構(gòu)




Windows Azure Storage設(shè)計(jì)原理

Windows Azure Storage(WAS)是微軟提供的云存儲服務(wù)。

WAS設(shè)計(jì)的主要目標(biāo)

強(qiáng)一致性,號稱CAP都能滿足

提供全球統(tǒng)一的存儲服務(wù)

提供完善的異地容災(zāi)支持

WAS的名字空間

WAS提供三種存儲抽象,分別是表格(Table)、消息隊(duì)列(Queue)、文件(Blob),WAS存儲的每個(gè)對象(表格里的一行、隊(duì)列里的一條消息、一個(gè)文件)都對應(yīng)一個(gè)全局唯一的資源URI,其中AccountName為用戶賬戶,service為存儲服務(wù)類型(table、queue、blob中的一種)。

http(s)://https://AccountName.1.core.windows.net/PartitionName/ObjectName

對于Table,PartitionName為表名,ObjectName為表內(nèi)行的primary key

對于Queue,PartitioinName為隊(duì)列名字,ObjectName為隊(duì)列里消息的id

對于Blob,ObjectName為文件名,PartitionName與ObjectName相同

WAS總體架構(gòu)

WAS借助DNS服務(wù)來實(shí)現(xiàn)全局存儲服務(wù),Location Service負(fù)責(zé)管理用戶的賬戶信息,當(dāng)用戶注冊了一個(gè)WAS賬戶后,Location Service會為用戶分配一或多個(gè)stamp來提供存儲服務(wù),同時(shí)更新DNS里的記錄,將https://AccountName.1.core.windows.net解析到stamp對應(yīng)的訪問入口。

WAS里stamp類似于集群的概念,請看下圖,MS在全球有多個(gè)機(jī)房,每個(gè)機(jī)房會部署多個(gè)WAS存儲集群(stamp),stamp內(nèi)部通過副本機(jī)制來保證數(shù)據(jù)安全性,stamp間會有數(shù)據(jù)備份機(jī)制,用于異地容災(zāi),比如stamp001在美國、歐洲、亞洲的機(jī)房各有一份數(shù)據(jù),任意一個(gè)機(jī)房故障,都能從其他機(jī)房的對等stamp里讀到用戶數(shù)據(jù)。

一個(gè)stamp典型的規(guī)模,1020個(gè)機(jī)架,每個(gè)機(jī)架18個(gè)存儲節(jié)點(diǎn),約提供2PB的存儲空間;下一代WAS,每個(gè)stamp將提供30PB的存儲空間(猜想主要是單塊盤存儲空間增加)。

Stamp內(nèi)部架構(gòu)

單個(gè)stamp內(nèi)部,主要分為三個(gè)層次

Stream Layer:提供可靠的文件存儲(類比GFS)

Partion Layer:提供Table、Queue、Blob存儲的邏輯抽象,實(shí)際數(shù)據(jù)存儲依賴Stream Layer(類比bigtable)

Front End:存儲資源訪問代理,接受用戶的請求,通過Partition Layer獲取到數(shù)據(jù),返回給用戶

Stream Layer設(shè)計(jì)

Stream Layer可以理解為提供可靠存儲的分布式文件系統(tǒng),提供層次性的命名空間,如下圖,Stream Layer存儲的Foo文件。

Foo文件由多個(gè)extent組成(類似GFS里的block的概念,但非定長,每個(gè)extent存儲時(shí)對應(yīng)一個(gè)NTFS文件),extent由多個(gè)block組成。extent創(chuàng)建時(shí),會對應(yīng)多個(gè)副本,客戶端可以不斷以block為單位(1或多個(gè)block)向extent追加數(shù)據(jù),每個(gè)block會計(jì)算一份校驗(yàn)信息用于檢查數(shù)據(jù)完整性,每次從extent讀取數(shù)據(jù)時(shí),都需要讀取整個(gè)block的數(shù)據(jù)來校驗(yàn)數(shù)據(jù)完整性;每個(gè)extent還對應(yīng)一個(gè)index文件,用于映射[extent,offset]到block。(partition layer來說,它會維護(hù)每個(gè)對象存儲在stream layer的[文件,extent,offset]作為對象的位置索引信息。)

Stream Layer主要包含Stream Manager(SM,相當(dāng)于元數(shù)據(jù)服務(wù)器)和Extent Node(EN,相當(dāng)于存儲節(jié)點(diǎn))。

SM的主要職責(zé):

維護(hù)名字空間以及所有文件及extent的狀態(tài)

管理所有EN的運(yùn)行狀態(tài)

為EN創(chuàng)建和分配extent

當(dāng)有EN宕機(jī)時(shí),復(fù)制缺少副本的extent

對只讀的extent進(jìn)行earsure code編碼

extent一旦創(chuàng)建,便不可更改,只能追加數(shù)據(jù),當(dāng)extent到達(dá)一定長度時(shí),客戶端(Partition Layer)可以將extent封裝(seal)起來,封裝后的extent不能再被更新,如果文件要繼續(xù)追加數(shù)據(jù),客戶端可以向SM請求創(chuàng)建新的extent,然后往新的extent里追加數(shù)據(jù),在SM看來,文件就是由多個(gè)extent順序連接而成。

extent的多個(gè)副本中,有一個(gè)是master,其它的副本是slave,每次針對extent的追加操作,客戶端都會將請求發(fā)快遞至master,由master完成整個(gè)追加過程,master負(fù)責(zé)對所有的追加操作進(jìn)行排序,然后決定追加操作在extent上的偏移(offset信息),同時(shí)請求多個(gè)slave在同樣的offset上往extent追加數(shù)據(jù),當(dāng)所有副本都追加成功時(shí),才認(rèn)為追加操作成功。

如果在追加的過程種出現(xiàn)錯誤(只有部分副本追加成功),Stream Layer與客戶端(Partition Layer)的約定是,客戶端進(jìn)行重試或是封裝當(dāng)前extent(以多個(gè)副本中extent的commit length最小的為準(zhǔn),commit length表示當(dāng)前extent追加了多少數(shù)據(jù)),創(chuàng)建新的extent來追加數(shù)據(jù)。這個(gè)約定也意味著,同一個(gè)條記錄可能在extent上追加多次,這就要求上層業(yè)務(wù)能夠處理這種重復(fù)的記錄。

Stream Layer的一些優(yōu)化:

對封裝后的extent(只讀)進(jìn)行earsure code編碼,用于節(jié)省存儲空間。

接收到讀請求時(shí),如果當(dāng)前EN有很多請求在排隊(duì),或是有請求排隊(duì)超過一定時(shí)間,則直接拒絕服務(wù),讓客戶端重試其它副本

每個(gè)EN使用一塊單獨(dú)的盤(通常是ssd)做日志盤(cache),當(dāng)EN執(zhí)行追加操作時(shí),會將請求的數(shù)據(jù)先追加到日志盤,同時(shí)寫到EN上的數(shù)據(jù)盤(不刷盤,等待OS后臺刷盤)。

Partition Layer設(shè)計(jì)

Partition Layer在Stream Layter的基礎(chǔ)上抽象出Table、Queue存儲邏輯,主要由Partition Manager(PM)和Partition Server(PS)組成,PM是管理節(jié)點(diǎn),負(fù)責(zé)維護(hù)一個(gè)全局的試圖,而實(shí)際的讀寫操作都由PS完成。

為了方便描述,這里以存儲Table為例說明。為了向用戶提供表格的語義,在Partition layer會有一個(gè)有序的大表,存儲所有用戶的所有數(shù)據(jù),每一行對應(yīng)用戶存儲的一條表記錄,考慮這張表非常大,單個(gè)server不可能服務(wù)過來,這張表被劃分成很多個(gè)Range,然后均分到多個(gè)PS上,而PM維護(hù)一張Range==gt;PS的映射表,F(xiàn)ront End接受到用戶請求時(shí),會先從PM拿到映射表,然后將請求定向至負(fù)責(zé)對應(yīng)range的PS上,F(xiàn)ront End拿到映射表后會緩存在本地,并在映射表變化時(shí)更新。

每個(gè)PS會負(fù)責(zé)多個(gè)Range的數(shù)據(jù),PS實(shí)際不存儲數(shù)據(jù),數(shù)據(jù)存儲是由底層的Stream Layer完成,每個(gè)Range包含一個(gè)用于存儲操作日志的Commit Log文件和一個(gè)存儲行數(shù)據(jù)的Row Data文件;同時(shí)Range被加載后,還會產(chǎn)生一些內(nèi)存的數(shù)據(jù)結(jié)構(gòu)。

Memory Table:內(nèi)存表,記錄對于該range的每一次更新。

Index Cache:表索引的緩存,索引每行數(shù)據(jù)在Row Data文件里的偏移位置。

Row Data Cache:行緩存,緩存行數(shù)據(jù),與Index Cache分離的原因主要是盡量讓所有Index的數(shù)據(jù)都能加載到內(nèi)存。

當(dāng)有新的行要寫到某個(gè)Range時(shí),首先會將行數(shù)據(jù)追加到Commit Log里,然后將行數(shù)據(jù)寫到Memory Table,這時(shí)就可以向客戶端(Front End)返回寫成功。當(dāng)Memory Table使用的內(nèi)存超出閾值時(shí),會做一次checkpoint操作,將Memory Table里的數(shù)據(jù)寫至Row Data文件。

當(dāng)Range里的數(shù)據(jù)太多時(shí),會導(dǎo)致負(fù)責(zé)該Range的PS負(fù)載很高,這時(shí)PM可以將一些大的Range進(jìn)行分裂,就部分Range交由負(fù)載較低的PS負(fù)責(zé)(PS本身不持久化數(shù)據(jù),PS只需要加載Range對應(yīng)的元數(shù)據(jù)即可服務(wù)針對該Range的請求);相反,當(dāng)某些Range由于數(shù)據(jù)刪除導(dǎo)致數(shù)據(jù)很少時(shí),PM可以將相鄰的Range進(jìn)行合并;最終使得各個(gè)PS的負(fù)載盡量均衡。


文章推薦
Wish選品及標(biāo)簽關(guān)鍵詞查詢工具大全,wish店鋪沒訂單6招讓流量暴增
Wish上什么產(chǎn)品會被視作偽造品或仿品,wish店鋪沒訂單6招讓流量暴增
YouTube才是視頻營銷的王道,youtube營銷
Vimeo借助即時(shí)應(yīng)用程序?qū)挸掷m(xù)時(shí)間增加了130%,vimeo的日歷


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進(jìn)群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進(jìn)群
美國賣家交流群
加入
美國賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營干貨合集》
《TikTok綜合運(yùn)營手冊》
《TikTok短視頻運(yùn)營手冊》
《TikTok直播運(yùn)營手冊》
《TikTok全球趨勢報(bào)告》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《開店大全-主流平臺篇》
《開店大全-東南亞篇》
《CD平臺自注冊指南》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯(lián)系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉