1. 程式人生 > >分散式儲存系統(一)

分散式儲存系統(一)

分散式儲存系統是大量普通PC伺服器通過Internet互聯,對外作為一個整體提供儲存服務。

最近在研讀《大規模分散式儲存系統》一書,順便摘錄整理,深入瞭解原理和架構,方便學習,歡迎交流。

一、概念

分散式儲存系統具備如下幾個特性:

1、可擴充套件

分散式系統可以擴充套件到幾百臺到幾千臺的叢集規模,而且,隨著叢集規模的增長,系統整體效能表現為線性增長。

2、低成本

分散式儲存系統的自動容錯、自動負載均衡機制使其可以構建在普通PC機之上。另外,線性擴充套件能力也使得增加、減少機器非常方便,可以使用較低的成本實現自動運維。

3、高效能

無論是整個叢集還是單機服務,都要求分散式系統具備高效能。

4、易用

分散式儲存系統需要提供醫用的對外介面,另外也要求具備完善的監控、運維工具,並能夠方便地與其它系統整合。如 Hadoop雲端計算系統匯入資料。

分散式儲存系統的挑戰主要在於資料、狀態資訊的持久化,要求在自動遷移、自動容錯、併發讀寫的過程中保證資料的一致性。

所涉及的技術主要為:1、分散式系統;2、資料庫;

二、分類

由於分散式儲存系統所面臨的資料需求相對複雜,大致可以將其分為三類:

1、非結構化資料。如辦公文件、圖片、音視訊等;

2、結構化資料。一般儲存在關係型資料庫中,可以用二維關係表結構表示;

3、半結構化資料。介於非結構化和結構化資料之間,如HTML,一般是自描述的;

按照處理不同型別的資料,可分為:

1、分散式檔案系統

在網際網路應用當中需要儲存大量的圖片、照片、視訊等非結構化資料物件,這類資料以物件的形式組織,物件之間沒有關聯,通常稱之為Blob(Binary Large Object)資料。典型的系統有Facebook Haystack、TFS等。在分散式檔案系統內部按照資料塊(chunk)來組織資料,每個資料塊的大小大致相同,每個資料塊可以包含多個Blob物件或者定長塊,一個大檔案也可以拆分為多個數據塊,這是其底層的實現原理。

2、分散式鍵值系統

分散式鍵值系統用於儲存關係簡單的半結構化資料。只提供主鍵的CRUD功能,典型的系統有Amazon Dynarno。從資料結構的角度看,分散式鍵值系統和傳統的Hash表類似,不同的是,分散式鍵值系統支援將資料分佈到叢集中的多個儲存節點。一般用作快取,如大家熟知的Memcache。

3、分散式表格系統

分散式表格系統用於儲存關係較為複雜的半結構化資料,除了具有CRUD的功能外,還支援掃描某個主鍵範圍。並且借鑑了很多關係資料庫的技術,例如支援某種程度上的事務。典型的系統包括Google Bigtable、Mega store等。但不支援較為複雜的操作,如多表關聯、多表聯接、巢狀子查詢等。

4、分散式資料庫

分散式資料庫一般由單機關係資料庫擴充套件而來,用於儲存結構化資料,提供SQL關係查詢語言,支援多表關聯,巢狀查詢,併發控制和資料庫事務等複雜操作。典型的系統包含Mysql Sharding 、Amazon RDS、OceanBase。 

-------------------------------------------

有任何建議或問題,歡迎加微信一起學習交流,歡迎從事IT,熱愛IT,喜歡深挖原始碼的行業大牛加入,一起探討。

個人微訊號:bboyHan

熱衷:Golang、Java、Python、區塊鏈、架構設計、資料分析等。