聊聊當前主流分布式存儲系統的特點


前言


筆者最近在學習,了解當前流行的若干分布式存儲系統。為什么這么做呢?因為筆者比較了解HDFS,但是對其它同等類型的存儲系統知道的不多,想借此學習比較一番,希望能夠做到觸類旁通吧。本文可能不會闡述的很具體,想到哪就說到哪吧。

按照元數據存儲結構划分


數據存儲必然涉及到其元數據的存儲管理,以什么樣的方式來管理這些元數據就成為了划分的區別。按照這個划分,能夠划分出以下3類:

  • 集中式元數據管理。比如說典型的,HDFS。NameNode完全中心管理式的。優勢是易於管理,路徑查找什么的也很方便。弊端也很明顯,擴展性問題,單點瓶頸問題。
  • 分布式元數據管理。分布式元數據與集中式的相比,由單點變為多點,擴展性會變好,但是會帶來一個問題,元數據管理節點間的數據同步問題。當然為了簡單化這其中的數據同步,我們可以讓每個節點管理部分數據。
  • 無原數據管理。有人可能會好奇,還有這種方式?是的,GlusterFS用的就是這種模式。它的元數據和實際數據是存在一起的。它用的是hash算法來定位文件的位置的,輸入的參數就是文件路徑信息。那這種方式看起來很棒啊,擴展性相當好呢。但是目錄樹的查詢就顯得不太方便了,比如說列出掃描某個目錄什么的,還有或者是深目錄的查詢,里面會涉及到多次的文件定位。

所以其實沒用絕對的好壞,只有適不適合我們使用的存儲系統。

數據定位方式


這里提到的數據定位方式其實是一個比較大的概念,它主要包含兩層含義:

  • 新寫的文件,應該創建在哪里,哪個機架,哪個節點?
  • 給定文件信息,如何定位到文件數據?

其實從根本上來說,存儲系統的拓撲邏輯結構的設計決定了文件數據的定位問題。筆者以HDFS為例.。稍微了解過HDFS的人,基本都知道它有經典的“三副本”策略嘛,這3個副本橫跨了不同的節點,機架,以此保證數據的高可用。所以我們看,HDFS在這里定義出了3個邏輯層的概念:

  • NODE_LOCAL:同節點
  • RACK_LOCAL:同機架
  • OFF_SWITCH:不同機架

然后根據管理區傳入的集群拓撲結構,進行數據的位置選擇。之后,數據的定位也是按照這種方式。當然了,還可以加上更多別的權重因素,比如Ceph的crush算法規則。

還有一個問題,無元數據管理的存儲系統用的哈希方式是如何進行定位的呢?簡單來說,這是一個哈希值的區間范圍管理問題。感興趣的同學可以學習GlusterFS的彈性哈希算法。

數據的存儲形式


這里的存儲形式指的主要有3方面:

  • 分布式(單副本)
  • 多副本
  • Striping(條帶式)

前面2個很好理解,第3個條帶式是什么意思呢?它指的是數據被橫切到多個節點上,而不是連續的存儲在一個節點上。條帶式的好處是可以提高文件讀寫效率,因為我們能夠在多個節點上並行讀寫文件的目的。

數據的對外服務形式


存儲對外的服務形式,依據不同的使用場景,用戶可自行選擇。主要有以下3類:

  • 文件系統的形式。典型的比如說HDFS,不過它與本地文件系統最大的區別,它是分布式的。Ceph也提供了文件系統的使用方式。
  • 對象存儲服務。這種服務方式與文件系統相比,更加簡單化了用戶的使用,使用者直接將自己需要存儲的對象(圖片,文本或其它),進行上傳即可。目前HDFS也在做類似的服務叫做Ozone。而Ceph是已經有這樣的服務。
  • 塊服務。塊服務的大致意思通過網絡互連的方式把各個節點上獨立的塊設備進行組織,對外提供服務。

以上是筆者最近一周所看所想,當然了,在分布式存儲系統中,還有其它很多值得探討的點,比如說數據恢復。筆者會在后續的文章中繼續進行分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM