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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

存储--盘古_阿里云飞天分布式存储系统设计深度解析

發(fā)布時間:2024/6/21 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 存储--盘古_阿里云飞天分布式存储系统设计深度解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要:本文依據(jù)盤古團(tuán)隊的吳洋分享了《盤古:飛天分布式存儲系統(tǒng)實踐》視頻整理而成。 他主要從以下三個方面進(jìn)行了分享:盤古是什么?盤古是用來解決什么問題的?盤古是怎么解決問題的?他主要介紹了盤古的分布式系統(tǒng)架構(gòu)和設(shè)計理念。

本文依據(jù)盤古團(tuán)隊的吳洋分享了《盤古:飛天分布式存儲系統(tǒng)實踐》視頻整理而成。

他主要從以下三個方面進(jìn)行了分享:盤古是什么?盤古是用來解決什么問題的?盤古是怎么解決問題的?他主要介紹了盤古的分布式系統(tǒng)架構(gòu)和設(shè)計理念。

上圖列舉了目前主流的云計算廠商,我們發(fā)現(xiàn)一個很有趣的事情:所有云計算廠商都是“富二代”,它們的分布式存儲技術(shù)全部采用自研技術(shù),而沒有用大家耳熟能詳?shù)拈_源分布式系統(tǒng)。

飛天夢

第一代飛天人的夢想是在大量廉價的PC服務(wù)器上,對外提供各種計算和存儲服務(wù)。具體到以下幾個組件:夸父,主要負(fù)責(zé)網(wǎng)絡(luò);女媧,主要負(fù)責(zé)協(xié)同;伏羲,主要負(fù)責(zé)調(diào)度;盤古,主要負(fù)責(zé)存儲;神農(nóng),主要負(fù)責(zé)監(jiān)控。


上圖介紹了盤古的底層存儲平臺,其承擔(dān)承上啟下的作用。盤古作為分布式存儲系統(tǒng),主要提供兩種類型的接口:Append Only接口,Random Access接口。

盤古是用來解決什么問題的?

單機(jī)的硬件或者系統(tǒng)總是不完美的,總是會小概率的出錯,但是它又需要具有大規(guī)模下水平擴(kuò)展的能力,因為它要管理大量的機(jī)器。這兩個層面放在一起意味著出錯是常態(tài)。

大規(guī)模下,小概率事件是常態(tài)

4%磁盤年損壞率,1%%機(jī)器日宕機(jī)率
Raid卡崩潰、電容充放電導(dǎo)致write back模式變成write through
網(wǎng)絡(luò)分割、交換機(jī)丟包、升級重啟、光纖損壞帶寬降低90%、兩地機(jī)房路由錯誤
機(jī)架斷電、整個機(jī)房掉電
網(wǎng)卡TCP校驗出錯,磁盤訪問數(shù)據(jù)校驗出錯
NTP時間漂移、內(nèi)核IO線程D狀態(tài)、dirty page cache無法寫回
系統(tǒng)熱點無時不在,瞬時轉(zhuǎn)移
程序缺陷導(dǎo)致資源泄露、創(chuàng)建大量文件、訪問臟數(shù)據(jù)
誤操作:誤刪數(shù)據(jù)、拔錯磁盤、沒有清理測試機(jī)器環(huán)境上線……

盤古面臨的問題和挑戰(zhàn)




從上圖可以看到,作為統(tǒng)一存儲,要支持虛擬機(jī)中的塊存儲,對象存儲,表格存儲,文件存儲,離線大數(shù)據(jù)處理,大數(shù)據(jù)分析等諸多業(yè)務(wù),其面臨的挑戰(zhàn)是很大的,甚至有些挑戰(zhàn)是自相矛盾的。

盤古是怎么解決問題的?




盤古在系統(tǒng)設(shè)計的時候進(jìn)行了一些取舍。首先盤古使能了更多的云產(chǎn)品,讓云產(chǎn)品去對接用戶,這樣就可以集中精力打造一個穩(wěn)定可靠的分布式存儲平臺。高可靠、高可用是不能妥協(xié)的部分,在任何情況下要保證數(shù)據(jù)的強一致性、正確性、可靠性、可用性。有的時候追求低成本會威脅到高可用,所以要做到高性能、合理成本,提供高性價比的在線存儲。易用、服務(wù)化,方便用戶輕量接入、無感知運維完善好用的監(jiān)控、工具、文檔。


盤古總體架構(gòu)


分為三個部分:Client,Master,ChunkServer。需要發(fā)起一次寫入的時候,Client向Master創(chuàng)建一個文件,并且打開這個文件,此時Master會選好三個副本的位置反饋給Client。Client根據(jù)三個副本的位置找到ChunkServer,把數(shù)據(jù)寫進(jìn)去。也就是說,Client做整體的控制,Master提供源數(shù)據(jù)的存儲,ChunkServer提供數(shù)據(jù)的存儲。系統(tǒng)中的單點是非常脆弱的,如何保證其高可用?盤古的第一步是加入一個Paxos,也就是說用很多臺Master組成一個group來實現(xiàn)高可用。即使用很多臺服務(wù)器來實現(xiàn)高可用,最終對外服務(wù)的只能是一臺服務(wù)器,當(dāng)內(nèi)存數(shù)據(jù)足夠多的時候,就需要水平擴(kuò)展。MountTable可以把目錄樹劃分成volume,通過不同的volume就可以實現(xiàn)Master的水平擴(kuò)展。

數(shù)據(jù)高可靠



盤古三副本強一致,三副本位于不同的故障域,故障時自動數(shù)據(jù)復(fù)制。如上圖所示,一個數(shù)據(jù)中心有3份數(shù)據(jù)存放在4個RACK中,如果RACK-1突然斷電或者網(wǎng)絡(luò)有問題。此時,比如菱形的數(shù)據(jù)原來在RACK-3、RACK-4上,當(dāng)RACK-1的菱形數(shù)據(jù)丟失時,盤古會通過高效的算法從RACK-3上復(fù)制一份出來放入RACK-2,保證了數(shù)據(jù)的安全可靠。


數(shù)據(jù)保證完整性

盤古主要做了兩件事:端到端的數(shù)據(jù)校驗,靜默錯誤檢查。在小概率下,內(nèi)存存儲的數(shù)據(jù)是可能發(fā)生變化的,磁盤上存儲的數(shù)據(jù)也會發(fā)生變化。每段數(shù)據(jù)后面都有CRC,這樣,一旦寫入磁盤,數(shù)據(jù)和CRC是能夠匹配上的,后臺周期性掃描,發(fā)現(xiàn)數(shù)據(jù)和CRC不匹配時就判定這段數(shù)據(jù)發(fā)生了位反轉(zhuǎn),那么用其他好的副本將其覆蓋。

合理成本

盤古進(jìn)行了合理成本的優(yōu)化。比如,線下運行的單集群有上萬臺,數(shù)百PB的數(shù)據(jù)。單組Master也進(jìn)行了優(yōu)化,讀能達(dá)到15W QPS,寫能達(dá)到5W QPS。單數(shù)據(jù)節(jié)點進(jìn)行了軟件棧極限優(yōu)化,使得軟件的消耗非常低,并且分層存儲。最后,為了實現(xiàn)低成本,使用了普通PC服務(wù)器、Erasure Code。

自主服務(wù)



運維是非常重要的,盤古實現(xiàn)了熱升級應(yīng)用無感知,運維操作根據(jù)配置自動化執(zhí)行,不需要人工干預(yù),通過環(huán)境標(biāo)準(zhǔn)化及時糾正,通過問題診斷自我解決問題。結(jié)構(gòu)如上圖所示,有一個集中管理的配置管理庫,盤古管控中心會把配置管理庫推送到盤古的各個組件,自動執(zhí)行配置變更,發(fā)現(xiàn)配置不對時能夠?qū)崿F(xiàn)自動對齊,運行環(huán)境標(biāo)準(zhǔn)化檢查對于大規(guī)模的分布式系統(tǒng)是非常重要的。

面向容錯的設(shè)計

分布式系統(tǒng)的核心是面向容錯的設(shè)計:

數(shù)據(jù)安全是一種信仰:E2E Checksum;后臺靜默掃描;系統(tǒng)bug,硬件故障,運維操作的容錯。大規(guī)模的系統(tǒng)中,總會遇到各種各樣的問題,當(dāng)這些問題攪在一起時就會變得非常棘手。
環(huán)境檢查排除隱患:磁盤分區(qū);機(jī)架分布;配置錯誤;軟件錯誤;硬件錯誤。
單機(jī)失效無感知:數(shù)據(jù)復(fù)制保證安全;換機(jī)器重試保證讀寫成功;記憶并規(guī)避故障機(jī)器。
監(jiān)控+自愈:Master自我健康檢查進(jìn)行切換;Chunkserver發(fā)現(xiàn)故障磁盤或機(jī)器進(jìn)行隔離;Client檢測服務(wù)狀況進(jìn)行Master切換;Client自我健康檢測并匯報狀態(tài)。

以上的設(shè)計大大減小了運維的壓力。

Master



Master需要解決的主要是三類問題:大容量、高效、穩(wěn)定。大容量是指:Federation水平擴(kuò)展,內(nèi)存緊致排列單組支持8億文件,讀寫OPS 100K/s。高效意味著最優(yōu)的算法,硬件錯誤觸發(fā)快速復(fù)制保證數(shù)據(jù)安全,數(shù)據(jù)流量動態(tài)規(guī)劃實現(xiàn)最大吞吐,安全域動態(tài)調(diào)整保證數(shù)據(jù)高可用。穩(wěn)定即Paxos數(shù)據(jù)一致、防止單點,多角度監(jiān)控自動觸發(fā)切換,多用戶隔離防打死。由于盤古是多租戶的系統(tǒng),比如一萬臺的集群上面會跑著各種各樣的應(yīng)用,其相互之間是不知道的,但是它們在共用一個Master機(jī)器。如果一個用戶大量訪問Master,這時整個集群都不能提供對外服務(wù),怎么杜絕這種情況?盤古做了多重隔離解決了上述問題。

Chunkserver



Chunkserver面臨的問題是:閃存的價格高,IOPS高;機(jī)械硬盤價格低,IOPS低;只寫入內(nèi)存的方案掉電會丟失數(shù)據(jù)。如果整個集群都掉電,那么內(nèi)存中還沒寫入數(shù)據(jù)就會丟掉,如果三份備份數(shù)據(jù)都丟掉,這對云計算是不能接受的事情。怎么結(jié)合閃存、機(jī)械式硬盤以最低的成本解決上述問題?有些解決方案使用UPS,但是UPS也存在不可靠問題,數(shù)據(jù)仍然會丟失。所以,最終的解決方案是使用少量的緩存搭配大量的機(jī)械硬盤,數(shù)據(jù)前臺先寫入緩存,后臺將其轉(zhuǎn)儲到機(jī)械式硬盤。

Client



Client面臨很多問題,很多現(xiàn)在的編程語言中,協(xié)程是非常普及的事情。傳統(tǒng)的多線程編程中,多核系統(tǒng)上線程較多時,切換代價非常高,高性能的程序無法容忍這一點。有些解決方案是異步的編程,這樣就使用少數(shù)的線程、不切線程。怎么樣既有同步編程的便利,又有異步編程的性能?協(xié)程就是解決方案,很多現(xiàn)在的編程語言本身已經(jīng)提供了協(xié)程,但是C++沒有提供協(xié)程,所以盤古自己通過實現(xiàn)協(xié)程獲得了高性能。Client面臨的問題是:有些用戶需要極致的性能,有些用戶需要編程的簡便,已有的海量程序要無縫支持。解決上述問題的方案是使用線程同步原語同時支持協(xié)程和非協(xié)程用戶。在協(xié)程中是不切線程的,所以意味著所有的Task都在一個線程中執(zhí)行,如果任何一個Task有阻塞操作,都會導(dǎo)致整個線程吞吐率的降低。

如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,歡迎發(fā)送郵件至:yqgroup@service.aliyun.com 進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。
原文鏈接

總結(jié)

以上是生活随笔為你收集整理的存储--盘古_阿里云飞天分布式存储系统设计深度解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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