分散式儲存中的後設資料管理(從零開始學區塊鏈 )

買賣虛擬貨幣
在使用和設計分散式儲存系統時,非常重要的一個環節是資料定址,即定位一個key的資料副本存放在哪個機器(甚至哪塊磁碟),其中關於後設資料的管理類似分片技術,很值得借鑑後設資料被定義為:描述資料的資料,對資料及資訊資源的描述性資訊。後設資料(Metadata)是描述其它資料的資料(data about other data),或者說是用於提供某種資源的有關資訊的結構資料(structured data)。後設資料是描述資訊資源或資料等物件的資料,其使用目的在於:識別資源;評價資源;追蹤資源在使用過程中的變化;實現簡單高效地管理大量網路化資料;實現資訊資源的有效發現、查詢、一體化組織和對使用資源的有效管理。對於後設資料的管理目前有幾種常用的解決方案:中心節點管理後設資料,分散式管理後設資料,無後設資料設計;本文談談三種方案的特點1中心節點管理後設資料
在設計分散式(儲存)系統時,使用中心節點是非常簡潔、清晰地一種方案,中心節點通常兼具後設資料儲存與查詢、叢集節點狀態管理、決策制定與任務下發等功能;優點:A.由於其後設資料集中式管理的特點,可以方便的處理叢集運維管理的統計分析類需求;B. 中心節點記錄了使用者資料的狀態資訊(即後設資料),在擴容時,可以選擇不做rebalance操作(rebalance引起的資料遷移可能帶來巨大的效能開銷),且仍能正常定址;缺點及解決方案:a.單點故障是設計分散式系統最忌諱的問題之一,中心節點簡潔的設計也帶來了此問題,如何實現HA呢?;解決方案:(1)使用主備模型,主備之間使用同步或非同步的方式進行增量或全量的資料同步(如TFS,mfs,HDFS2.0等),或者主備之間使用遠端共享儲存(如HDFS2.0,遠端儲存需要高可用);
b.存在效能和容量擴充套件上限,集中式中心節點自身硬體設施存在擴充套件(scale up)上限及查詢式定址方式,導致此問題;即使client快取後設資料或使用快取叢集,也不能在根本上消除上限,在某些場景下(如海量小檔案),此問題仍然存在;解決方案:(1)最佳化升級硬體,如使用SSD,大記憶體等機器;(2)當面臨此問題時,考慮使用分散式管理後設資料方案。2分散式管理後設資料和中心節點的方案相似,只是將後設資料分片並使用分散式節點管理儲存,在保有中心節點方案優點的同時,解決了效能和容量擴充套件上限的問題,同時,多個節點同時提供後設資料查詢服務,系統效能得到提升;缺點此類系統較為少見,系統本身結構複雜,實現也有一定難度;
a.系統包含兩種相對獨立的分散式節點:後設資料節點,資料節點,它們均是帶狀態節點,每種節點組成的分散式模組都要面臨分散式CAP原則的取捨,都要做到可擴充套件,尤其是後設資料對一致性有著更高要求;b.後設資料節點需要共同維護資料節點的狀態,並在狀態變化時作出一致性的決策;這些都對系統的設計和實現構成了很大挑戰;c.另外,大量後設資料所需的儲存裝置也是一筆不可忽略的成本開銷;上面兩種方案有著共同思想:記錄並維護資料的狀態(即後設資料),資料定址時先向後設資料伺服器查詢,再存取實際資料;3無後設資料設計
主要以ceph為例,有別於上述二者的思想,此類系統的主要思想:使用演算法計算定址,定址演算法的輸入引數之一為叢集狀態(如資料節點分佈拓撲,權重,程序狀態等)的某種形式描述,此類常見演算法有consistent hashing,Ceph RADOS系統的CRUSH演算法,這類演算法通常不直接管理使用者資料,而是引入中間一層邏輯分片結構(如consistent hashing的環片段,ceph的placement group),其粒度更大,其數量有限且相對固定,使用者存取的資料隸屬於其中唯一一個分片中,系統透過管理維護這些分片進而管理維護使用者資料;此類系統有的也有中心配置管理節點(如ceph rados的monitor),只提供叢集和分片等重要狀態的管理維護,不提供後設資料的儲存查詢;優點:A.如前所述,系統只需管理維護邏輯分片與叢集狀態等資訊,不儲存管理使用者資料的後設資料,系統的可擴充套件性大大增強,這在大量後設資料場景時尤為明顯;B.定址演算法所需的引數資料量小且相對固定,client可以透過快取的方式,達到若干client並行定址的目的,避免了定址效能瓶頸;缺點分析:a.叢集擴容時(甚至權重改變時),需要做rebalance,尤其是資料規模很大(PB級以上)的叢集,由此帶來的大量資料遷移使叢集一直處於高負載的狀態,進而使得正常業務請求的延時、iops等效能指標下降;但有些場景做叢集擴容時,並不希望做rebalance(如叢集容量不足);對此,常見策略是每個叢集預先做好效能、容量評估,需要擴容時,直接新建叢集;如果單個叢集必須做rebalance,透過人工干預限流降低叢集負載;至於需要做rebalance的根本原因,本人認為擴容導致叢集狀態改變,進而導致定址演算法結果改變,最終資料分佈也需隨之改變;
b.資料的副本分佈位置透過定址演算法計算得出,位置相對固定,幾乎不可人為調整;但通常可以透過改變權重的方式改變資料總體分佈情況;c.中心配置管理節點只管理分片資訊,不知道單個使用者資料的資訊,統計分析類的需求需要透過定期地收集資料節點資訊等方式實現,並儲存維護。

總結:透過以上比較分析,三類系統的定址策略,使系統本身均有自己相應的優缺點,它們都不是完美的,但都有其適宜的場景和業務,在系統設計與選型時,需要做全面的考量。


來源:區塊鏈大師  微訊號 DACMaster

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;