(一)分佈式存儲綜述

這篇博客主要來總結一下分佈式存儲系統的歷史,發展以及特性,從而對分佈式存儲系統有一個大概的瞭解,主要從一下幾個部分來介紹分佈式存儲:

  1. 分佈式存儲概念
  2. 分佈式文件系統的發展
  3. 分佈式存儲系統的分類
  4. 分佈式存儲系統的特性

分佈式存儲概念

分佈式存儲系統顧名思義就是將大量的普通服務器,通過網絡互聯,對外作爲一個整體提供存儲服務。具有可擴展性、可用性、可靠性、 高性能、易維護、低成本等特性。


分佈式文件系統的發展

分佈式文件系統發展

  • 80年代
    · 代表:AFS、NFS、Coda
    · AFS:1983年 Carnegine Mellon大學和IBM共同合作開發Andrew文件系統(Andrew File System, AFS),AFS設計目標是將至少7000個工作站連接起來,爲每個用戶提供一個共享的文件系統,將高擴展性、網絡安全性放在首位,客戶端高速緩存,即使網絡斷開,可以對部分數據緩存。
    · NFS:1985年Sun公司基於UDP開發了網絡共享文件系統(Network File System, NFS),NFS由一系列NFS命令和進程組成的客戶機/服務器(C/S)模式。NFS第三版,加入了基於TCP傳輸,第三版發佈六年後,NFS成爲Linux中的穩定版本。
    · Coda:1987年 Carnegine Mellon大學在基於AFS的基礎上開發了Coda文件系統,它爲Linux工作站組成的大規模分佈式計算環境設計的文件系統,通過兩種互補機制爲服務器和網絡故障提供了容錯機制,服務器複製機制,一個文件拷貝到多個服務器上,無連接操作機制,將緩存端暫時作爲服務端的執行模式,Coda注重可靠性和性能優化,它提供了高度的一致性。

  • 90年代
    · 代表:xFS、Tiger Shark 、SFS…
    · 背景:進入九十年代,隨着Windows的問世,極大促進了微處理器的發展和PC的廣泛普及,互聯網和多媒體技術也猶如雨後春筍般發展起來,一方面:對多媒體數據的實時傳輸需和應用越來越流行,另一方面:大規模並行計算技術的發展和數據挖掘技術應用,迫切需要能支持大容量和高速的分佈式存儲系統。
    · xFS:UC Berkeley參照當時高性能多處理器領域的設計思想開發了xFS文件系統,xFS克服了以往分佈式文件系統只適用局域網,而不適用於廣域網和大數據存儲問題,提出廣域網進行緩存較少網絡流量設計思想,採用層次命名結構,減少Cache一致性狀態和無效寫回Cache一致性協議,從而減少了網絡負載。

  • 20世紀末
    · 代表:SAN、NAS、GFS、HDFS、GPFS…
    · 背景:到了二十世紀末,計算機技術和網絡技術得到了飛速發展,磁盤存儲成本不斷降低,磁盤容量和數據總線帶寬的增長速度無法滿足應用需求,海量數據的存儲逐漸成爲互聯網技術發展急需解決的問題,對於分佈式存儲系統技術的研究越來越成熟,基於光纖通道的存儲區域網絡(Storage Area Network)技術和網絡附連存儲(Network Attached Storage)技術得到了廣泛應用。
    · SAN:設計目標是通過將磁盤存儲系統或者磁帶機和服務器直接相連的方式提供一個易擴展、高可靠的存儲環境,高可靠的光纖通道交換機和光纖通道網絡協議保證各個設備間鏈接的可靠性和高效性,設備間的連接接口主要是採用FC或者SCSI,光纖通道交換機主要是爲服務器和存儲設備的鏈接提供一個稱爲“SAN fabric”的網狀拓撲結構。

    SAN

    · NAS:通過基於TCP/IP協議的各種上層應用(NFS等)在各工作站和服務器之間進行文件訪問,直接在工作站客戶端和NAS文件共享設備之間建立連接,NAS隱藏了文件系統的底層實現,注重上層的文件服務實現,具有良好擴展性,網絡阻塞,NAS性能受影響。

    NAS

    · GFS:Google爲大規模分佈式數據密集型應用設計的可擴展的分佈式文件系統,Google將一萬多臺廉價PC機連接成一個大規模的Linux集羣,它具有高性能,高可靠性,易擴展性,超大存儲容量等優點。Google文件系統採用單Master多Chunk Server來實現系統間的交互,Master中主要保存命名空間到文件映射、文件到文件塊的映射、文件塊到Chunk Server的映射,每個文件塊對應到3個Chunk Server。

    GFS

  • 現在
    · 代表:HBase、Cassadra、MongoDB、DynamoDB…
    · HBase:列存儲數據庫,擅長以列爲單位讀取數據,面向列存儲的數據庫具有高擴展性,即使數據大量增加也不會降低相應的處理速度,特別是寫入速度。
    · MongoDB:文檔型數據庫它同鍵值(Key-Value)型的數據庫類似,鍵值型數據庫的升級版,允許嵌套鍵值,Value值是結構化數據,數據庫可以理解Value的內容,提供複雜的查詢,類似於RDBMS的查詢條件。
    · DynamoDB:Amazon 公司的一個分佈式存儲引擎,是一個經典的分佈式Key-Value 存儲系統,具備去中心化,高可用性,高擴展性的特點,達到這個目標在很多場景中犧牲了一致性,Dynamo在Amazon中得到了成功的應用,能夠跨數據中心部署於上萬個結點上提供服務,它的設計思想也被後續的許多分佈式系統借鑑。


分佈式存儲系統的分類

  • 數據類型三大類
    1. 非結構化數據:指其字段長度不等,並且每個字段的記錄又可以由可重複或不可重複的子字段構成,沒有規律,比如文本、圖像、聲音、影視等等。
    2. 半結構化數據:介於完全結構化數據(如關係型數據庫、面向對象數據庫中的數據)和完全無結構的數據(如聲音、圖像文件等)之間的數據,HTML文檔就屬於半結構化數據。它一般是自描述的,數據的結構和內容混在一起,沒有明顯的區分。
    3. 結構化數據:結構化數據即行數據,存儲在數據庫裏,可以用二維表結構來邏輯表達實現的數據,數據模式和內容是分開的,數據的模式需要預先定義。
  • 分佈式存儲類型
    1. 分佈式文件系統:存儲大量的文件、圖片、音頻、視頻等非結構化數據,這些數據以對象的形式組織,對象之間沒有關係,這數據都是二進制數據,例如GFS、HDFS等。
    2. 分佈式Key-Value系統:用於存儲關係簡單的半結構化數據,提供基於Key的增刪改查操作,緩存、固化存儲,例如Memached、Redis、DynamoDB等。
    3. 分佈式數據庫系統: 存儲結構化數據,提供SQL關係查詢語言,支持多表關聯,嵌套子查詢等,例如MySQL Sharding集羣、MongoDB等等。

分佈式存儲系統的特性

  • 高可用性:指分佈式存儲系統在面對各種異常時可以提供正常服務的能力,系統的可用性可以用系統停服務的時間和正常服務時間的比例來衡量,例如4個99的可用性(99.99%)要求一年停機的時間不能超過365*24*60/10000 = 53分鐘。

  • 高可靠性:重點指分佈式系統數據安全方面的指標,數據可靠不丟失,主要用多機冗餘、單機磁盤RAID等措施。

  • 高擴展性:指分佈式存儲系統通過擴展集羣服務器規模從而提高系統存儲容量、計算和性能的能力,業務量增大,對底層分佈式存儲系統的性能要求越來越高,自動增加服務器來提升服務能力,分爲Scale Up與Scale Out,前者指通過增加和升級服務器硬件,或者指通過增加服務器數量。衡量可擴展性的要求集羣具有線性的可擴展性,系統整體性能與服務器數量呈線性關係。

  • 數據一致性:分佈式存儲系統多個副本之間的數據一致性,有強一致性,弱一致性,最終一致性,因果一致性,順序一致性。

  • 高安全性:指分佈式存儲系統不受惡意訪問和攻擊,保護存儲數據不被竊取,互聯網是開放的,任何人在任何時間任何地點通過任何方式都可以訪問網站,針對現存的和潛在的各種攻擊與竊取手段,要有相應的應對方案。

  • 高性能:衡量分佈式存儲系統性能常見的指標是系統的吞吐量和系統的響應延遲,系統的吞吐量是在一段時間內可以處理的請求總數,可以用QPS(Query Per Second)和TPS(Transaction Per second)衡量。系統的響應延遲是指某個請求發出到接收到返回結果所消耗的時間,通常用平均延遲來衡量。這兩個指標往往是矛盾的,追求高吞吐量,比較難做到低延遲,追求低延遲,吞吐量會受影響。

  • 高穩定性:這是一個綜合指標,考覈分佈式 存儲系統的整體健壯性,任何異常,系統都能坦然面對,系統穩定性越高越好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章