分佈式存儲最全詳解(圖文全面總結)

2024年2月6日 20点热度 0人点赞

大傢好,我是mikechen。

分佈式存儲是分佈式系統架構的重要組成部分,特別是互聯網大廠的圖片視頻都廣泛使用到了,下面我就重點來詳解分佈式存儲@mikechen

本篇已經收納於mikechen創作的《阿裡架構師進階專題合集》裡面。

分佈式存儲

分佈式存儲技術是一種新型的數據處理技術,主要是將數據分佈存儲,同時在分佈存儲的數據之間構建聯系,從而構建出一個虛擬的存儲設備。

隨著互聯網技術的發展,分佈式存儲技術的應用越來越廣泛,分佈式存儲技術充分的利用了網絡的優勢,把網絡上相對比較零散的存儲空間虛擬為一個整體。

分佈式存儲的特點

分佈式存儲主要有如下5大特點:

1.可靠性高

通過冗餘副本和數據分佈保證數據的完整性和可用性。

2.擴展性強

可以根據存儲需求動態添加或刪除節點。

3.性能優良

通過分佈式計算和數據分佈,可以提高讀寫性能。

4.數據冗餘

通過多份副本技術防止數據丟失。

5.成本效益

比單一存儲系統更具成本效益,因為可以使用較低成本的服務器組成分佈式存儲系統集群。

分佈式存儲架構技術

常見的分佈式存儲實現技術,有HDFS、Ceph、GFS、Switf等。

1.中間控制節點架構(HDFS)

HDFS主要用於大數據的存儲場景,是 Hadoop 大數據架構中的存儲組件。

HDFS 是 Hadoop 中存儲數據的基石,存儲著所有的數據,能夠部署在大規模廉價的集群上,極大地降低了部署成本。

在該系統的整個架構中將服務器分為兩種類型,一種名為namenode,這種類型的節點負責管理管理數據(元數據),另外一種名為datanode,這種類型的服務器負責實際數據的管理。

如下圖所示:

1)客戶端向NameNode發起請求,獲取元數據信息,這些元數據信息包括命名空間、及 DataNode 的位置信息等;

2)NameNode 將元數據信息返回給客戶端;

3)客戶端獲取到元數據信息後,到相應的 DataNode 上讀/寫數據;

4)相關聯的 DataNode 之間會相互復制數據,以達到 DataNode 副本數的要求;

5)DataNode 會定期向 NameNode 發送心跳信息,將自身節點的狀態信息報告給 NameNode;

2.完全無中心架構---計算模式(Ceph)

Ceph是當前非常流行的開源分佈式存儲系統,具有高擴展性、高性能、高可靠性等優點。

在該架構中與HDFS不同的地方在於該架構中沒有中心節點,客戶端是通過一個設備映射關系計算出來其寫入數據的位置。

Ceph核心組件

OSD:OSD是負責物理存儲的進程,一塊磁盤啟動一個OSD進程,主要功能是存儲數據、復制數據、平衡數據、恢復數據等。

PG:是Ceph中引入了PG(placement group)的概念,PG是一個虛擬的概念而已。

Pool:Pool是存儲對象的邏輯分區,它規定了數據冗餘的類型和對應的副本分佈策略,支持兩種類型:副本(replicated)和 糾刪碼( Erasure Code)。

三者之間的關系:

  1. 一個Pool裡有很多PG;
  2. 一個PG裡包含一堆對象,一個對象隻能屬於一個PG;
  3. PG有主從之分,一個PG分佈在不同的OSD上(針對三副本類型);

Ceph包含以下幾種存儲類型:

  • 塊存儲(rbd);
  • 對象存儲(RADOS Gateway);
  • 文件系統(cephfs);

3.完全無中心架構---一致性哈希(Swift)

Swift是OpenStack開源雲計算項目的子項目之一,被稱為對象存儲,支持大量數據存儲。

與Ceph的通過計算方式獲得數據位置的方式不同,Swift是通過一致性哈希的方式獲得數據位置。

分佈式存儲應用場景

分佈式存儲主要包含如下應用場景:

1.大數據處理

分佈式存儲可以方便地存儲和處理大量數據。

2.雲存儲

分佈式存儲用於構建公有雲存儲服務,例如 Amazon S3 和 Microsoft Azure Blob 存儲。

3.數據庫

分佈式數據庫系統,如 Cassandra 和 MongoDB,可以用於存儲高性能和高可用性的數據。

4.分佈式文件系統

分佈式文件系統,如 Hadoop HDFS,用於存儲大量文件和數據。

5.網絡存儲

分佈式存儲用於實現網絡存儲,多用於提供文件和對象存儲。

以上

本篇已經收納於mikechen創作的《阿裡架構師進階專題合集》裡面。