![](https://news.xinpengboligang.com/upload/keji/e9a67563863bddda53aeae8c4403f2ec.jpeg)
大傢好,我是mikechen。
分佈式存儲是分佈式系統架構的重要組成部分,特別是互聯網大廠的圖片視頻都廣泛使用到了,下面我就重點來詳解分佈式存儲@mikechen
本篇已經收納於mikechen創作的《阿裡架構師進階專題合集》裡面。
![](https://news.xinpengboligang.com/upload/keji/717e94f5c01130973d29b3f7dab716eb.jpeg)
分佈式存儲
分佈式存儲技術是一種新型的數據處理技術,主要是將數據分佈存儲,同時在分佈存儲的數據之間構建聯系,從而構建出一個虛擬的存儲設備。
隨著互聯網技術的發展,分佈式存儲技術的應用越來越廣泛,分佈式存儲技術充分的利用了網絡的優勢,把網絡上相對比較零散的存儲空間虛擬為一個整體。
分佈式存儲的特點
分佈式存儲主要有如下5大特點:
1.可靠性高
通過冗餘副本和數據分佈保證數據的完整性和可用性。
2.擴展性強
可以根據存儲需求動態添加或刪除節點。
3.性能優良
通過分佈式計算和數據分佈,可以提高讀寫性能。
4.數據冗餘
通過多份副本技術防止數據丟失。
5.成本效益
比單一存儲系統更具成本效益,因為可以使用較低成本的服務器組成分佈式存儲系統集群。
分佈式存儲架構技術
常見的分佈式存儲實現技術,有HDFS、Ceph、GFS、Switf等。
1.中間控制節點架構(HDFS)
HDFS主要用於大數據的存儲場景,是 Hadoop 大數據架構中的存儲組件。
HDFS 是 Hadoop 中存儲數據的基石,存儲著所有的數據,能夠部署在大規模廉價的集群上,極大地降低了部署成本。
在該系統的整個架構中將服務器分為兩種類型,一種名為namenode,這種類型的節點負責管理管理數據(元數據),另外一種名為datanode,這種類型的服務器負責實際數據的管理。
如下圖所示:
![](https://news.xinpengboligang.com/upload/keji/35d811377308305e5d73f05beecd2dac.jpeg)
1)客戶端向NameNode發起請求,獲取元數據信息,這些元數據信息包括命名空間、及 DataNode 的位置信息等;
2)NameNode 將元數據信息返回給客戶端;
3)客戶端獲取到元數據信息後,到相應的 DataNode 上讀/寫數據;
4)相關聯的 DataNode 之間會相互復制數據,以達到 DataNode 副本數的要求;
5)DataNode 會定期向 NameNode 發送心跳信息,將自身節點的狀態信息報告給 NameNode;
2.完全無中心架構---計算模式(Ceph)
Ceph是當前非常流行的開源分佈式存儲系統,具有高擴展性、高性能、高可靠性等優點。
在該架構中與HDFS不同的地方在於該架構中沒有中心節點,客戶端是通過一個設備映射關系計算出來其寫入數據的位置。
Ceph核心組件
![](https://news.xinpengboligang.com/upload/keji/c5b888ae798ae94cd9f3aede45abcb19.jpeg)
OSD:OSD是負責物理存儲的進程,一塊磁盤啟動一個OSD進程,主要功能是存儲數據、復制數據、平衡數據、恢復數據等。
PG:是Ceph中引入了PG(placement group)的概念,PG是一個虛擬的概念而已。
Pool:Pool是存儲對象的邏輯分區,它規定了數據冗餘的類型和對應的副本分佈策略,支持兩種類型:副本(replicated)和 糾刪碼( Erasure Code)。
三者之間的關系:
- 一個Pool裡有很多PG;
- 一個PG裡包含一堆對象,一個對象隻能屬於一個PG;
- 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創作的《阿裡架構師進階專題合集》裡面。
![](https://news.xinpengboligang.com/upload/keji/6674c2a27bb711737c9d86dffdcca5ea.jpeg)