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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

分布式存储(姚文辉)

發(fā)布時(shí)間:2025/5/22 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式存储(姚文辉) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.大數(shù)據(jù)對(duì)分布式存儲(chǔ)的需求

  • 存儲(chǔ)容量(>100PB)
  • 高吞吐量(1PB sort < 2小時(shí) 350GB/每秒的吞吐量)
  • 高可靠性(8個(gè)9)
  • 服務(wù)高可靠性(99.95%時(shí)間可用)
  • 運(yùn)維簡(jiǎn)單
  • 成本低,廉價(jià)pc服務(wù)器,數(shù)據(jù)壓縮,混合存儲(chǔ)。

2.大規(guī)模分布式存儲(chǔ)系統(tǒng)的挑戰(zhàn)

 大規(guī)模分布式存儲(chǔ)中小概率事件變?yōu)槌B(tài),如何高效的處理這些小概率事件是分布式系統(tǒng)工程中的巨大挑戰(zhàn)。

  • 磁盤機(jī)器損壞:磁盤損壞率大概為4%,機(jī)器宕機(jī)率為1%%,5000臺(tái)機(jī)器的集群,磁盤機(jī)器損壞就會(huì)很常見。一旦出現(xiàn)宕機(jī),IO流量需要自動(dòng)導(dǎo)向到其他機(jī)器上的存儲(chǔ)節(jié)點(diǎn)上。
  • 網(wǎng)絡(luò)故障:連接meta管理節(jié)點(diǎn)的網(wǎng)絡(luò)發(fā)生異常,會(huì)導(dǎo)致“腦裂”現(xiàn)象,由于腦裂導(dǎo)致導(dǎo)致心跳異常,Meta服務(wù)自動(dòng)切換的另外的機(jī)器,切換期間多個(gè)節(jié)點(diǎn)并行對(duì)外提供meta服務(wù),會(huì)導(dǎo)致新寫入的數(shù)據(jù)在老的meta管理節(jié)點(diǎn)不可見而作為垃圾數(shù)據(jù)刪除,這種異常需要利用完善可靠的分布式協(xié)議來(lái)避免。
  • 電源故障:數(shù)據(jù)副本跨機(jī)架,在架構(gòu)設(shè)計(jì)上和物理部署上要求分布式存儲(chǔ)系統(tǒng)需要有跨數(shù)據(jù)中心和地域的能力。
  • 系統(tǒng)異常:時(shí)鐘不一致等,NTP漂移等情況要求系統(tǒng)邏輯不能強(qiáng)依賴于時(shí)間精度和時(shí)鐘同步,需要重新設(shè)置虛擬時(shí)鐘來(lái)保證時(shí)序,達(dá)到數(shù)據(jù)一致性。
  • 熱點(diǎn):通常會(huì)采用資源隔離和限制的方法來(lái)避免一個(gè)業(yè)務(wù)的計(jì)算過度消耗資源,同時(shí)分布式系統(tǒng)的客戶端需要有主動(dòng)繞過熱點(diǎn)機(jī)器的功能來(lái)避免熱點(diǎn)給整個(gè)系統(tǒng)帶來(lái)的影響。

3.典型的分布式存儲(chǔ)系統(tǒng)

  HDFS:http://www.cnblogs.com/wxquare/p/4846438.html

? ? ? ? ceph:http://docs.ceph.com/docs/v0.80.5/

4.分布式系統(tǒng)重要功能設(shè)計(jì)要點(diǎn)剖析

  • 讀寫流程:鏈?zhǔn)綄懞椭鲝膶?/strong>
  •    

       ?第一步client進(jìn)程在Master上打開文件寫,在請(qǐng)求中傳輸文件名作為參數(shù),在返回結(jié)果中會(huì)包含數(shù)據(jù)寫入位置信息;第?步,client端以鏈?zhǔn)絺鬏數(shù)姆绞綄?shù)據(jù)寫入到多個(gè)CS中,顧名思義,數(shù)據(jù)會(huì)在一個(gè)傳輸鏈條上被傳遞。首先client將數(shù)據(jù)傳輸給CS1,CS1將數(shù)據(jù)傳輸給CS2,以此類推,直到最后一個(gè)CS收到數(shù)據(jù),并返回給前一個(gè)鏈條節(jié)點(diǎn)CS,最終數(shù)據(jù)寫入成功的返回傳遞給client端,表明數(shù)據(jù)已經(jīng)寫入成功,這樣就完成了一次數(shù)據(jù)寫入操作。從寫入流程上來(lái)看,這寫入過程中,每個(gè)數(shù)據(jù)經(jīng)過的結(jié)點(diǎn)都只消耗了一份網(wǎng)絡(luò)帶寬,可以充分利用網(wǎng)絡(luò)資源;對(duì)于有大量數(shù)據(jù)寫入的應(yīng)用,例如數(shù)據(jù)導(dǎo)入作業(yè)可以達(dá)到更高的流量。但從數(shù)據(jù)寫入的返回消息上來(lái)看,返回鏈路相對(duì)較長(zhǎng),會(huì)給數(shù)據(jù)寫入的latency有較大影響。

    ? ? ? ? ?

    ?

      鏈?zhǔn)綄懭肽J奖容^適合于數(shù)據(jù)流量大,但是不注重latency的業(yè)務(wù);上圖所示的主從模式,比較適合于數(shù)據(jù)寫入頻繁要求低延遲的業(yè)務(wù)。 在此圖中省略了文件打開流程的描述,并且數(shù)據(jù)接收的對(duì)應(yīng)的CS會(huì)分成兩種,一種為Primary,作為寫操作的協(xié)調(diào)者和接收者,另一種Replica只作為數(shù)據(jù)的接收者。client數(shù)據(jù)會(huì)首先發(fā)送給Primary,Primary將數(shù)據(jù)接收并轉(zhuǎn)發(fā)給另外兩臺(tái)Replica,并等待所有的拷貝都已經(jīng)合并入內(nèi)存cache后,由Primary 返回client一個(gè)確認(rèn)消息,此時(shí)數(shù)據(jù)并沒有確認(rèn)寫入成功;等所有數(shù)據(jù)從內(nèi)存中刷入到物理磁盤后,Replica將刷入磁盤成功的消息發(fā)送給Primary,并且Primary也寫入成功后將最終數(shù)據(jù)寫入成功的確認(rèn)消息返回給client。 從上面的寫入過程分析,Primary的網(wǎng)絡(luò)流量是兩份數(shù)據(jù)流量,在極限情況下也只能利用網(wǎng)絡(luò)流量的一半,所以若果是數(shù)據(jù)導(dǎo)入的大流量業(yè)務(wù)不適合。單從數(shù)據(jù)寫入成功的確認(rèn)過程來(lái)看,寫入3個(gè)副本的情況下只需要兩跳即可到達(dá)Client,這樣網(wǎng)絡(luò)延遲相對(duì)減小,對(duì)應(yīng)寫入的latency降低。

    ?

    ? ? ?2. IO QOS (服務(wù)質(zhì)量)

       ?問題:當(dāng)多個(gè)用戶訪問存儲(chǔ)系統(tǒng)時(shí)如何保證優(yōu)先級(jí)和公平性

    ? ? ? ? ? 阿里盤古文件系統(tǒng)中采用的方案:

    • 將IO請(qǐng)求按優(yōu)先級(jí)分成多個(gè)類別,每個(gè)類有相應(yīng)的權(quán)重表示該類請(qǐng)求占用IO帶寬的比例
    • IO請(qǐng)求根據(jù)分類放入相應(yīng)的隊(duì)列,隊(duì)列內(nèi)根據(jù)隊(duì)列限制和任務(wù)做調(diào)度和丟棄
    • 調(diào)度器根據(jù)相應(yīng)權(quán)重從隊(duì)列取出請(qǐng)求進(jìn)行調(diào)度

    ? ? ? ?3.數(shù)據(jù)正確性:checkSum

    ? ? ? ?在集群中網(wǎng)絡(luò)、內(nèi)存、磁盤和軟件都有可能導(dǎo)致數(shù)據(jù)錯(cuò)誤,那么在分布式存儲(chǔ)系統(tǒng)中如何保證海量數(shù)據(jù)中沒有任何數(shù)據(jù)錯(cuò)誤呢? 數(shù)據(jù)應(yīng)該給全程保護(hù),否則任何一個(gè)環(huán)節(jié)出現(xiàn)問題導(dǎo)致數(shù)據(jù)錯(cuò)誤未被檢查到,都可能會(huì)導(dǎo)致數(shù)據(jù)出錯(cuò)。被保護(hù)的數(shù)據(jù)至少應(yīng)該具有數(shù)據(jù)、數(shù)據(jù)長(zhǎng)度和CRC校驗(yàn)值這樣的三元組,而且在任何后續(xù)的處理中,都應(yīng)該先對(duì)數(shù)據(jù)進(jìn)行處理后,再校驗(yàn)這個(gè)3元組的一致性,來(lái)保證剛被處理過的數(shù)據(jù)是正確的。

      4.數(shù)據(jù)可靠性(Replication)

      當(dāng)機(jī)器/磁盤出現(xiàn)異常,應(yīng)通過其它副本快速恢復(fù),充分利用多臺(tái)機(jī)器的復(fù)制帶寬,但是實(shí)際中,應(yīng)考慮復(fù)制的優(yōu)先級(jí)以及復(fù)制的流量控制。

      5.節(jié)點(diǎn)的負(fù)載均衡(Rebalance)

      當(dāng)有新的機(jī)器/磁盤上線時(shí),遷移數(shù)據(jù)保證負(fù)載均衡。充分利用多臺(tái)機(jī)器的復(fù)制帶寬,同上,實(shí)際中,也需要考慮控制因?yàn)樨?fù)載均衡而導(dǎo)致復(fù)制優(yōu)先級(jí)和流量控制。

    ? ? ? ? 6.垃圾回收(Garbage collection)

      垃圾回收在分布式系統(tǒng)中就好像我們平時(shí)對(duì)屋子的整理過程,將無(wú)用的扔掉給有用物品留下足夠的空間.

    ? ? ? ??7.糾刪碼 (Erasure coding)

       ?糾刪碼能降低系統(tǒng)的存儲(chǔ)代價(jià),但是增加了計(jì)算和恢復(fù)的代價(jià)。

      8.元數(shù)據(jù)的高可用性和可擴(kuò)展性

       ?通常分布式存儲(chǔ)中meta管理節(jié)點(diǎn)不多,但是數(shù)據(jù)讀取過程都依賴meta節(jié)點(diǎn),因此元數(shù)據(jù)管理需要做到高可用性非常重要。

       ?通常的做法是可以將這些節(jié)點(diǎn)做成多個(gè)備份,保證在一個(gè)備份出現(xiàn)問題的時(shí)候,仍然可以提供服務(wù)。但是多個(gè)備份間需要維護(hù)數(shù)據(jù)一致性,防止服務(wù)切換造成的數(shù)據(jù)不一致或者丟失。

       ?高可用性方案:

    • ?方案一:HDFS中元數(shù)據(jù)的高可用性方案是引入了分布式鎖服務(wù)ZooKeeper,每個(gè)NameNode的FailoverController來(lái)維護(hù)分布式鎖狀態(tài),在出現(xiàn)鎖丟失的情況下,觸發(fā)主備切換。主NameNode將操作日志寫入到共享數(shù)據(jù)存儲(chǔ)的設(shè)備上,這樣的設(shè)備可以是有DRBD功能的磁盤或者NFS系統(tǒng)。 這個(gè)實(shí)現(xiàn)方案相對(duì)簡(jiǎn)單,因?yàn)榻粡?fù)雜的功能都放到了鎖服務(wù)和共享存儲(chǔ)系統(tǒng)中。這樣的做法也是非常經(jīng)濟(jì)實(shí)惠的,復(fù)雜性均由分布式系統(tǒng)的單個(gè)模塊來(lái)維護(hù),其他服務(wù)進(jìn)行依賴的做法降低了軟件的實(shí)現(xiàn)難度和維護(hù)工作量。
    • 方案二:阿里的盤古分布式文件系統(tǒng)Meta server之間采用了Paxos的特化Raft實(shí)現(xiàn)數(shù)據(jù)選舉和同步,可以在任意多個(gè)master的備份。
    • 方案三:在Ceph系統(tǒng)的元數(shù)據(jù)管理模塊MDS從原理上來(lái)說(shuō)使用了共享存儲(chǔ),每個(gè)MDS有一個(gè)Standby進(jìn)程作為熱備。但是其獨(dú)特之處在于是利用了OSD同Ceph monitor組成的RADOS最為共享存儲(chǔ),這樣的實(shí)現(xiàn)方法即保證了元數(shù)據(jù)管理的高可用,又提供了無(wú)限可擴(kuò)展的能力,同時(shí)可以不依賴于其他系統(tǒng)做到了獨(dú)立自包含。

    ? ? ?? 可擴(kuò)展性方案:

    • ?方案一:HDFS的可擴(kuò)展性,Namespace切分的Fedeation。在HDFS Federation中NameNode的擴(kuò)展性依賴于目錄樹的靜態(tài)切分,每個(gè)目錄子樹被稱為一個(gè)Volume,并將切分后的Volume分配到不同的NameNode上。DataNode則作為數(shù)據(jù)存儲(chǔ)池,被所有的NameNode共享使用。為了讓客戶端可以找到某棵樹中的節(jié)點(diǎn),在client端需要加載ClientSideMountTable,這里記錄了目錄樹同NameNode的對(duì)應(yīng)關(guān)系,用戶使用文件名訪問元數(shù)據(jù)時(shí),客戶端首先用文件名從MountTable中獲取NameNode的服務(wù)端口后,再發(fā)送元數(shù)據(jù)請(qǐng)求。 Federation的這種做法簡(jiǎn)單高效,靜態(tài)劃分的方法需要提前對(duì)各個(gè)NameNode未來(lái)元數(shù)據(jù)量有比較準(zhǔn)確的估計(jì),否則很容易造成各個(gè)NameNode間元數(shù)據(jù)的不平衡,給整個(gè)存儲(chǔ)系統(tǒng)帶來(lái)瓶頸。 盤古系統(tǒng)采用了同HDFS一樣的解決方案,在實(shí)現(xiàn)過程中對(duì)應(yīng)每個(gè)HDFS中的NameNode會(huì)部署一組盤古多master。盤古Federation除了用MountTable讓用戶透明訪問系統(tǒng)外,還提供了新的訪問方式。用戶可以在文件名前指定Volume名稱,這樣可以繞過mount table的訪問直接請(qǐng)求到某組盤古master上,這個(gè)功能可以有效防止集群中大量進(jìn)程短時(shí)間啟動(dòng)時(shí)集中獲取mount table帶來(lái)的流量沖擊。為了應(yīng)對(duì)元數(shù)據(jù)不均衡的問題,盤古提供了在兩個(gè)Volume間的元數(shù)據(jù)遷移工具。
    • 方案二:Ceph系統(tǒng)的MDS的擴(kuò)展性用動(dòng)態(tài)分裂功能實(shí)現(xiàn),分裂依據(jù)是目錄或者文件的請(qǐng)求頻率。當(dāng)用戶請(qǐng)求某個(gè)路徑的時(shí)候,將路徑中的每個(gè)目錄以及最終末端的節(jié)點(diǎn)或者目錄上的請(qǐng)求統(tǒng)計(jì)值增加,然后通過定期來(lái)計(jì)算每個(gè)MDS中目錄的請(qǐng)求頻率來(lái)決定是否已經(jīng)超過了MDS的負(fù)載而需要?jiǎng)討B(tài)分裂。分裂過程中源MDS會(huì)元信息發(fā)送給目標(biāo)MDS,并分別記錄遷移日志。這種動(dòng)態(tài)分裂的方式可以有效解決局部訪問熱點(diǎn)帶來(lái)的性能瓶頸,在元數(shù)據(jù)規(guī)模和處理能力方面都做了擴(kuò)展,是比靜態(tài)劃分方法更好的設(shè)計(jì)和實(shí)現(xiàn)方式。

      9.混合存儲(chǔ)

       ?混合存儲(chǔ)原因是要根據(jù)不同存儲(chǔ)介質(zhì)合理使用,提高存儲(chǔ)系統(tǒng)性能的同時(shí)又不會(huì)太大的增大成本。例如HDFS中可以將一個(gè)副本放在SSD中,其他副本放在此盤上,Heterogeneous Storages in HDFS,http://hortonworks.com/blog/heterogeneous-storages-hdfs/;阿里的盤古文件系統(tǒng)中,后臺(tái)程序定期將SSD上記錄的多次隨機(jī)寫合并成一次批量寫,將數(shù)據(jù)寫入到HDD的chunk replica文件中,這樣能在一定程度上降低寫的延遲;

    RAMCloud內(nèi)存存RAMCloud,https://ramcloud.atlassian.net/wiki/display/RAM/RAMCloud

    RAMCloud內(nèi)存存儲(chǔ)方案同盤古的混合存儲(chǔ)方案比較接近,最明顯的不同點(diǎn)是將SSD換成了內(nèi)存存儲(chǔ)。 當(dāng)數(shù)據(jù)寫入是,所以數(shù)據(jù)均寫入到內(nèi)存,為了高效利用內(nèi)存,采用了連續(xù)記錄日志的方式將數(shù)據(jù)存放在內(nèi)存中。同時(shí)將數(shù)據(jù)按照數(shù)據(jù)所屬應(yīng)用進(jìn)行劃分,分別建立索引,方便對(duì)數(shù)據(jù)進(jìn)行隨機(jī)訪問。由于內(nèi)存存儲(chǔ)的易失性,所以需要將內(nèi)存中的數(shù)據(jù)以異步方式保存到磁盤中。 這種實(shí)現(xiàn)策略非常適用于分布式的cache服務(wù),可以充分利用內(nèi)存的高帶寬和低延遲,但是在分布式環(huán)境中需要同時(shí)配備高速網(wǎng)絡(luò),否則其威力得不到發(fā)揮。

    從上面的例子可以看到,混合存儲(chǔ)技術(shù)基本是利用高性能小容量高成本的介質(zhì)來(lái)作為低性能大容量低成本的cache來(lái)滿足業(yè)務(wù)需求。

    ?

    磁盤

    SSD

    內(nèi)存

    容量

    1–4?TB

    400–800?GB

    24–128?GB

    延時(shí)

    ?10?ms

    50–75?us

    100?ns

    吞吐

    100–200?MB/s

    400?MB/s

    20?GB/s

    成本

    0.06?$/GB

    1?$/GB

    10?$/GB

    ? ? ? ? 老師上課的課件:http://www.xuetangx.com/c4x/TsinghuaX/60240202X/asset/%E7%AC%AC%E4%BA%8C%E8%AE%B2_%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8_%E5%A7%9A%E6%96%87%E8%BE%89_.pptx

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/wxquare/p/4850167.html

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的分布式存储(姚文辉)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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