網易學習計划啊,都不帶添加文字的么!限制我字數,還不告訴我是哪段超過了!!
進入正題...
每個流行的雲存儲系統都有自己的側重點
可選的架構很多,關鍵是要針對特定的應用場景
- 系統規模大小
- 業務類型與壓力
- 實時 / 非實時
- 大文件 / 中等文件 / 小文件
- 連續讀寫 / 隨機讀寫
- 吞吐率 / 低延遲
- 強一致性 / 弱一致性
- 性能 & 可靠性
- 擴展性 & 單節點問題
- 是否要求目錄結構
- 可配置 & 快速部署
- 大數據離線/在線分析
- 電子商務
- 社交網絡
- 網絡硬盤
- 郵件服務
- 圖片服務
- 語音視頻服務
- 虛擬機調度與鏡像存儲
- 開放雲存儲平台
離線型數據分析系統
- 數據總量大,單個文件大,更注重系統吞吐率,而非低延遲。
- 為適應流行的MapReduce模型,需要文件分塊,並配合上層邏輯,采用大塊順序讀寫的方式提升性能。
線上服務系統
- 根據服務類型而采用差異化的存儲方式。
- 針對語音視頻等大文件,可能會采用與離線系統相同的方式,文件分塊順序讀寫,從而達到更高的傳輸速度。由於文件數量相對較少,有可能完全實現傳統文件系統的目錄結構與權限等功能。
- 電子商務、社交網絡等應用場景,多為小文件(小圖片與小視頻、記錄與評價信息等),文件數量龐大,增長快速,用戶基數大,實時性要求高,讀寫隨機性強,對性能與擴展性的要求很高。
應用場景 |
可行系統 |
大數據離線/在線分析 |
HDFS、Swift、GlusterFS |
電子商務 |
TFS、FastDFS、Dynamo、Swift、Tair |
社交網絡 |
TFS、FastDFS、Dynamo、Swift、Tair |
網絡硬盤 |
HDFS、FastDFS、Swift、GlusterFS |
郵件服務 |
TFS、FastDFS、Dynamo、Swift、Tair |
圖片服務 |
TFS、FastDFS、Dynamo、Swift、Tair |
語音視頻服務 |
HDFS、FastDFS、Swift、GlusterFS |
虛擬機調度和鏡像存儲 |
HDFS、Swift、GlusterFS |
不同的應用場景,不同的性能考量,不同的存儲架構,似乎沒有一種通用的方法解決所有問題,一切都應取決於支撐的業務需求是怎么樣的。相對於專用系統,通用系統難以達到預期的效果,同時增加了開發和調優方面的復雜性。
中心化架構與對稱架構並不是完全對立的,兩者都可能存儲大文件和小文件,區別只是相對而言的。在大數據存儲、分析領域,中心化架構較多,HDFS仍然被廣泛使用或模仿。而在互聯網應用中(電子商務、社交網絡、APP),以中小文件的存儲為主,對稱架構較多,Dynamo和BigTable的設計理念被廣泛地參考。
大多數系統都拋棄了目錄結構。因為目錄樹的開銷非常大,去掉之后,集群的性能和擴展性被極大地提高。
雲存儲系統的架構大同小異,成功的關鍵在於細節:操作系統級優化、文件系統級優化、優秀的代碼實現、穩定性……
關注個性化:
- 策略、代碼和性能的優化。
- 數據分布方案 & 副本分布方案,文件去重。
- 模塊化 & 插件化,可熱拔插 & 動態替換。
- 抽象的存儲引擎層,靈活地切換持久化存儲或緩存。
- 融合SSD與機械硬盤,權衡性能與成本。
- 底層文件系統的選擇與優化。
- 文件分塊/聚合,增量同步,標准化接口(RESTfull、POSIX)。
- 系統部署與擴展的便捷性,自動化程度。
分布式環境下特別需要關注一致性問題,權衡性能與一致性等級。並發操作、各種版本沖突、機器故障、機器恢復、數據遷移與用戶訪問並存……集群狀態不斷變化,如何確保一致性約束。
PS:以上內容為師兄宅神所寫,我就是個POSTER