1. 程式人生 > >幹貨 | 公有雲存儲技術分享

幹貨 | 公有雲存儲技術分享

ash 數據存儲 閱讀 項目架構 lec 遷移 信息管理 可擴展性 重復

技術分享圖片

公有雲是PP視頻核心的文件存儲服務,目前正在為蘇寧雲、蘇寧體育等部門提供後臺支撐。本文就 “swift分布式存儲”、“項目架構”、 “文件上傳流程”、“上傳功能”四個方面進行介紹。


一、swift分布式存儲


什麽是swift?


Swift 最初是由 Rackspace 公司開發的高可用分布式對象存儲服務,並於 2010 年貢獻給 OpenStack 開源社區作為其最初的核心子項目之一,為其 Nova 子項目提供虛機鏡像存儲服務。Swift 構築在比較便宜的標準硬件存儲基礎設施之上,無需采用 RAID(磁盤冗余陣列),通過在軟件層面引入一致性散列技術和數據冗余性,犧牲一定程度的數據一致性來達到高可用性和可伸縮性,支持多租戶模式、容器和對象讀寫操作,適合解決互聯網的應用場景下非結構化數據存儲問題。


-官網地址: http://docs.openstack.org/developer/swift/

-Github代碼地址: https://github.com/openstack/swift

下圖是swfit系統架構,細節可參考相關文檔:

技術分享圖片

swift存儲特點:


  1. 分布式對象存儲: 理論上可以存任意大小,任意類型的文件。

  2. 極高的數據持久性。Swift具備10個9以上的數據持久性。

  3. 完全對稱的系統架構。Swift中各節點可以完全對等,能極大地降低系統維護成本。

  4. 可擴展性。因為Swift是完全對稱的架構,擴容只需簡單地新增機器,系統會自動完成數據遷移等工作,使各存儲節點重新達到平衡狀態。

  5. 無單點故障。整個Swift集群中,也沒有一個角色是單點的,並且在架構和設計上保證無單點業務是有效的。

  6. 簡單、可依賴。SWift架構優美、代碼整潔、實現易懂,不管出現任何問題,都能通過日誌、閱讀代碼迅速解決。

  7. RESTful API: 資源訪問路徑規範, 統一http協議訪問。

  8. 功能拓展和二次開發方便: 可以用插件的方式給swift服務添加附屬組件, 方便開發人員對服務進行功能擴展以及二次開發。

  9. 技術棧完備:針對用戶管理和鑒權, 有Keystone;針對存儲服務器監控, 有Swift Recon插件;針對客戶端請求監控, 有Swift Informant插件;另外,作為OpenStack項目的旗艦產品之一, Swift和Openstack技術棧的其他產品進行整合和擴展非常容易。


公有雲Swift系統設計


  1. 使用lvs做proxy負載均衡和故障轉移

  2. 使用udp發送到本機rsyslog收集日誌

  3. 依照機櫃劃分zone

  4. 使用keystone認證

  5. 使用rsync同步ring文件


二、項目架構


公有雲項目主要由 “filecenter, filecenter-tool, filecenter-hash”三個模塊組成:


技術分享圖片

filecenter


公有雲項目核心模塊。主要功能包括: 文件的創建、上傳、特征值校驗,文件擴展信息管理等。同時它負責管理和調度系統內其它他模塊(filecenter-hash、filecenter-tool)。


filecenter-tool


該模塊主要包含一些定時任務,執行一些邊緣化的任務。例如:


  • 由於文件是分塊上傳,如果文件沒有上傳完成,則刪除一個月之前的分塊記錄。

  • 將文件的審核信息載入redis緩存, 供之後查詢管理。


filecenter-hash


通過MQ接受filecenter派發的任務: 從swift下載文件流計算特征值,並將結果用MQ發送回filecenter。

技術分享圖片

三、文件上傳流程


1. 獲取上傳令牌: 用於後去上傳操作中校驗請求合法性

2. 獲取文件ID: 用戶提交文件信息, 公有雲生成並返回文件的ID

3. 用戶獲取分段上傳地址

4. 用戶按分段地址上傳分段到swift,swift在接收分段文件的同時驗證每個分段的MD5值, 確保接收到的分段的有效性

5. 每個分段上傳完成, 匯報公有雲

6.公有雲filecenter判斷文件上傳完畢,異步提交文件清單及通知特征值計算


四、上傳功能


基於上述核心上傳流程,公有雲還實現了“秒傳”,“斷點續傳”,“並發上傳”等功能。


秒傳


公有雲利用獨創的ppfeature作為上傳文件的唯一標識, 其特點為客戶端可以快速計算獲取; 當上傳的文件ppfeature和庫文件重疊時, 判定為已存在文件, 走秒傳流程.


斷點續傳


公有雲利用分段緩存的機制實現斷點續傳; 當上傳未完成文件時, 系統返回剩余分段地址給客戶端。


並發上傳

公有雲利用分段緩存的機制實現並發上傳:不同客戶端可以同時上傳同一文件, 並且各自獲取不同的分段地址, 從而實現無重復接力上傳。


幹貨 | 公有雲存儲技術分享