av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

大規(guī)模分布式存儲系統(tǒng)-分布式文件系統(tǒng)

大規(guī)模分布式存儲系統(tǒng)-分布式文件系統(tǒng)

作者:佚名 2017-10-17 08:33:31

存儲

存儲軟件

分布式

分布式 分布式文件系統(tǒng)是分布式存儲系統(tǒng)(鍵值系統(tǒng)、表格系統(tǒng)、數(shù)據(jù)庫系統(tǒng))的底層基礎(chǔ)部件,其所起的主要功能有兩個:一個是存儲文檔、圖像、視頻之類的Blob類型數(shù)據(jù);另外一個是作為分布式表格系統(tǒng)的持久化層。

成都創(chuàng)新互聯(lián)主營永勝網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),永勝h5微信平臺小程序開發(fā)搭建,永勝網(wǎng)站營銷推廣歡迎永勝等地區(qū)企業(yè)咨詢

分布式文件系統(tǒng)是分布式存儲系統(tǒng)(鍵值系統(tǒng)、表格系統(tǒng)、數(shù)據(jù)庫系統(tǒng))的底層基礎(chǔ)部件,其所起的主要功能有兩個:一個是存儲文檔、圖像、視頻之類的Blob類型數(shù)據(jù);另外一個是作為分布式表格系統(tǒng)的持久化層。

我們來看看業(yè)界是如何構(gòu)建各家基礎(chǔ)的分布式文件系統(tǒng)。

[[206500]]

Google文件系統(tǒng)(GFS)

GFS系統(tǒng)的節(jié)點可分為三種角色:GFS Master(主控服務(wù)器)、GFS ChunkServer(CS,數(shù)據(jù)塊服務(wù)器)以及GFS客戶端。GFS文件被劃分為固定大小的數(shù)據(jù)塊(chunk),由主服務(wù)器在創(chuàng)建時分配一個64位全局唯一的chunk句柄。CS以普通的Linux文件的形式將chunk存儲在磁盤中。為了保證可靠性,chunk在不同的機器中復(fù)制多份,默認為三份。客戶端訪問GFS時,首先訪問主控服務(wù)器節(jié)點,獲取與之進行交互的CS信息,然后直接訪問這些CS,完成數(shù)據(jù)存取工作。需要注意的是,GFS中的客戶端不緩存文件數(shù)據(jù),只緩存主控服務(wù)器中獲取的元數(shù)據(jù),整體架構(gòu)如圖1所示。

1、租約機制

GFS系統(tǒng)中通過租約( lease)機制將chunk寫操作授權(quán)給ChunkServer。擁有租約授權(quán)的ChunkServe稱為主ChunkServer,其他副本所在的ChunkServer稱為備ChunkServer。租約授權(quán)針對單個chunk,在租約有效期內(nèi),對該chunk的寫操作都由主ChunkServer負責(zé),從而減輕Master的負載。一般來說,租約的有效期比較長,比如60秒,只要沒有出現(xiàn)異常,主ChunkServer可以不斷向Master請求延長租約的有效期直到整個chunk寫滿。GFS為每個chunk維護一個版本號,每次給chunk進行租約授權(quán)或者主ChunkServer重新延長租約有效期時,Master會將chunk的版本號加1。

主ChunkServer向Master重新申請租約并增加對應(yīng)副本的版本號,如果有備副本下線的話,重新上線后如果版本號太低,會被Master發(fā)現(xiàn),從而將其標記為可刪除的chunk,Master的垃圾回收任務(wù)會定時檢查,并通知ChunkServer將此副本回收掉,從以上機制可見,版本號在整個機制中起到了至關(guān)重要的作用。

2、一致性模型

GFS主要是為了追加(append)而不是改寫(overwrite)而設(shè)計的。一方面是因為改寫的需求比較少,或者可以通過追加(加上版本號)來實現(xiàn),比如可以只使用GFS的追加功能構(gòu)建分布式表格系統(tǒng)Bigtable;另一方面是因為追加的一致性模型相比改寫要更加簡單有效。這種模式下,可能出現(xiàn)記錄在某些副本中被追加了多次,即重復(fù)記錄;也可能出現(xiàn)一些可識別的填充記錄,應(yīng)用層需要能夠處理這些問題(冪等)。GFS的這種一致性模型是追求性能導(dǎo)致的,這增加了應(yīng)用程序開發(fā)的難度。

3、追加流程

圖2中,分離數(shù)據(jù)流與控制流主要是為了優(yōu)化數(shù)據(jù)傳輸,每一臺機器都是把數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)拓撲圖上“最近”的尚未收到數(shù)據(jù)的節(jié)點。

4、容錯機制

  • Master容錯

操作日志+checkpoint+實時熱備。GFS Master的修改操作總是先記錄操作日志,然后修改內(nèi)存。當Master發(fā)生故障重啟時,可以通過磁盤中的操作日志恢復(fù)內(nèi)存數(shù)據(jù)結(jié)構(gòu)。另外,為了減少Master宕機恢復(fù)時間,Master會定期將內(nèi)存中的數(shù)據(jù)以checkpoint文件的形式轉(zhuǎn)儲到磁盤中,從而減少回放的日志量。所有的元數(shù)據(jù)修改操作都必須保證發(fā)送到實時熱備才算成功。

  • ChunkServer容錯

GFS采用復(fù)制多個副本的方式實現(xiàn)ChunkServer的容錯,另外,ChunkServer會對存儲的數(shù)據(jù)維持校驗和。GFS以64MB為chunk大小來劃分文件,每個chunk又以Block為單位進行劃分,Block大小為64KB,每個Block對應(yīng)一個32位的校驗和。當讀取一個chunk副本時,ChunkServer會將讀取的數(shù)據(jù)和校驗和進行比較,如果不匹配,就會返回錯誤,客戶端將選擇其他ChunkServer上的副本。

5、Master設(shè)計

由于GFS中的文件一般都是大文件,因此,文件命名空間占用內(nèi)存不多。這也就說明了Master內(nèi)存容量不會成為GFS酌系統(tǒng)瓶頸;另外,從負載均衡的角度考慮,可以限制每個Chunk-Server“最近”創(chuàng)建的數(shù)量;每個chunk復(fù)制任務(wù)都有一個優(yōu)先級,按照優(yōu)先級從高到低在Master排隊等待執(zhí)行;Master會定期掃描當前副本的分布情況,如果發(fā)現(xiàn)磁盤使用量或者機器負載不均衡,將執(zhí)行重新負載均衡操作;在進行副本重均衡時,要注意限制拷貝速度,否則會影響性能。

  • 垃圾回收

GFS采用延遲刪除的機制,Master定時檢查,如果發(fā)現(xiàn)文件刪除超過一段時間(默認為3天,可配置),那么它會把文件從內(nèi)存元數(shù)據(jù)中刪除,為了減輕系統(tǒng)的負載,垃圾回收一般在服務(wù)低峰期執(zhí)行,比如每天晚上凌晨1:00開始。系統(tǒng)對每個chunk都維護了版本號,過期的chunk可以通過版本號檢測出來。Master仍然通過正常的垃圾回收機制來刪除過期的副本。

  • 快照

快照( Snapshot)操作是對源文件/目錄進行一個“快照”操作,生成該時刻源文件/目錄的一個瞬間狀態(tài)存放于目標文件/目錄中o GFS中使用標準的寫時復(fù)制機制生成快照,也就是說,“快照”只是增加GFS中chunk的引用計數(shù),表示這個chunk被快照文件引用了,等到客戶端修改這個chunk時,才需要在ChunkServer中拷貝chunk的數(shù)據(jù)生成新的chunk,后續(xù)的修改操作落到新生成的chunk上。(不改就不拷貝,只引用)

6、 ChunkServer設(shè)計

Linux文件系統(tǒng)刪除64MB大文件消耗的時間太長且沒有必要,因為ChunkServer是一個磁盤和網(wǎng)絡(luò)IO密集型應(yīng)用,因此,刪除chunk時可以只將對應(yīng)的chunk文件移動到每個磁盤的回收站,以后新建chunk的時候可以重用。

自動化對系統(tǒng)的容錯能力提出了很高的要求,Google在軟件層面的努力獲得了巨大的回報,由于軟件層面能夠做到自動化容錯,底層的硬件可以采用廉價的錯誤率較高的硬件,比如廉價的SATA盤,這大大降低了云服務(wù)的人力及硬件成本。

Google的成功經(jīng)驗也表明了一點:單Master的設(shè)計是可行的。單Master的設(shè)計不僅簡化了系統(tǒng),而且還能夠較好的實現(xiàn)一致性。另外,Master維護的元數(shù)據(jù)很多,需要設(shè)計高效的數(shù)據(jù)結(jié)構(gòu),占用內(nèi)存小,并且能夠支持快照操作。支持寫時復(fù)制的B樹能夠滿足Master的元數(shù)據(jù)管理需求,然而,它的實現(xiàn)是相當復(fù)雜的。

Taobao File System

TFS設(shè)計時采用的思路是:多個邏輯圖片文件共享一個物理文件。通過<塊ID,文件編號>來唯一確定一個文件。

1、系統(tǒng)架構(gòu)

  • TFS整體架構(gòu)

NameServer通過心跳對DataServer的狀態(tài)進行監(jiān)測;每個DataServer上會運行多個dsp進程,一個dsp對應(yīng)一個掛載點,這個掛載點一般對應(yīng)一個獨立磁盤,從而管理多塊磁盤,TFS中Block的實際數(shù)據(jù)都存儲在DataServer中,大小一般為64MB,默認存儲三份。

TFS是寫少讀多的應(yīng)用,即使每次寫操作都需要經(jīng)過NameNode也不會出現(xiàn)問題,這大大簡化了系統(tǒng)的設(shè)計,同一時刻每個Block只能有一個寫操作,多個客戶端的寫操作會被串行化??蛻舳耸紫认騈ameServer發(fā)起寫請求,NameServer需要根據(jù)DataServer上的可寫塊、容量和負載加權(quán)平均來選擇一個可寫的Block,并且在該Block所在的多個DataServer中選擇一個作為寫入的主副本(Primary),如果所有的副本都修改成功,主副本會首先通知NameServer更新Block的版本號,成功以后才會返回客戶端操作結(jié)果,整個流程如圖3所示。

2、討論

相比GFS,TFS的寫流程不夠優(yōu)化,***,每個寫請求都需要多次訪問NameServer;第二,數(shù)據(jù)推送也沒有采用流水線方式減小延遲。這也是由特定歷史時期的特定業(yè)務(wù)需求所決定的,淘寶的系統(tǒng)是需求驅(qū)動,用***的成本、最簡單的方式解決用戶面臨的問題,TFS NameServer不需要保存文件目錄樹信息,也不需要維護文件與Block之間的映射關(guān)系。

由于用戶可能上傳大量相同的圖片,因此,圖片上傳到TFS前,需要去重。一般在外部維護一套文件級別的去重系統(tǒng)( Dedup),采用MD5或者SHA1等Hash算法為圖片文件計算指紋( FingerPrint)。圖片寫入TFS之前首先到去重系統(tǒng)中查找是否存在指紋,如果已經(jīng)存在,基本可以認為是重復(fù)圖片;圖片寫入TFS以后也需要將圖片的指紋以及在TFS中的位置信息保存到去重系統(tǒng)中。去重是一個鍵值存儲系統(tǒng),淘寶內(nèi)部使用Tair來進行圖片去重。圖片的更新操作是在TFS中寫入新圖片,并在應(yīng)用系統(tǒng)的數(shù)據(jù)庫中保存新圖片的位置,圖片的刪除操作僅僅在應(yīng)用系統(tǒng)中將圖片刪除。

隨著系統(tǒng)的規(guī)模越來越大,商用軟件往往很難滿足需求,通過采用開源軟件與自主開發(fā)相結(jié)合的方式,可以有更好的可控性,系統(tǒng)也有更高的可擴展性。互聯(lián)網(wǎng)技術(shù)的優(yōu)勢在于規(guī)模效應(yīng),隨著規(guī)模越來越大,單位成本也會越來越低。

3、內(nèi)容分發(fā)網(wǎng)絡(luò)

淘寶CDN采用分級存儲。由于緩存數(shù)據(jù)有較高的局部性,在Squid服務(wù)器上使用SSD+SAS+SATA混合存儲,圖片隨著熱點變化而遷移,最熱門的存儲到SSD,中等熱度的存儲到SAS,輕熱度的存儲到SATA。通過這樣的方式,能夠很好地結(jié)合SSD的性能和SAS、SATA磁盤的成本優(yōu)勢。


文章標題:大規(guī)模分布式存儲系統(tǒng)-分布式文件系統(tǒng)
文章位置:http://uogjgqi.cn/article/coccopo.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流