2018 年 11 月, 源於阿里巴巴的雲原生鏡像分發系統—— Dragonfly 在 KubeCon 上海現場亮相,成爲 CNCF 沙箱級別項目(Sandbox Level Project)。前端
Dragonfly 主要解決以 Kubernetes 爲核心的分佈式應用編排系統的鏡像分發難題。2017 年開源即成爲阿里巴巴最爲核心的基礎設施技術之一。開源一年以來,Dragonfly 已在諸多行業落地。git
DCOS 是浙江移動容器雲平臺,目前在平臺式運行的應用系統已有 185 套,包括手機營業廳、CRM 應用等核心系統。</span>本文將主要介紹浙江移動容器雲(DCOS)平臺以 Dragonfly 爲改革「利器」,成功解決了運營商大規模集羣場景下分發效率低、成功率低以及網絡帶寬控制難等問題;並反哺社區,在 Dragonfly 界面功能、生產高可用部署層面對 Dragonfly 進行了升級。github
隨着浙江移動容器雲(DCOS)平臺的持續完善,承載應用不斷增長,在運行容器數量接近 10000 個。採用傳統 C/S(Client-Server)結構的分發服務體系已經愈來愈沒法適應大規模分佈式應用在代碼包發佈、文件傳輸時的場景:算法
P2P(Peer-To-Peer)是一種點對點網絡技術,經過各結點互聯,將網絡中的資源和服務分散在各個結點上。信息的傳輸和服務實現直接在結點之間進行,避免了傳統 C/S 結構可能的單點瓶頸。docker
CNCF 開源文件分發服務解決方案 Dragonfly,是一種基於 P2P 與 CDN 技術,構建了適用於容器鏡像和文件的分發系統,有效解決了企業大規模集羣場景下文件和鏡像分發效率、成功率低以及網絡帶寬控制的問題。數據庫
Dragonfly 的核心組件:服務器
Dragonfly 分發工做原理(以鏡像分發爲例):
容器鏡像不一樣於普通文件,由多層存儲構成,下載也是分層下載,非單一文件。每層的鏡像文件都會被分割爲 block 數據塊並做爲種子。下載結束後,經過每層鏡像惟一的 ID 和 sha256 算法,從新組合成完整的鏡像。確保下載過程的一致性。網絡
<span data-type="color" style="color:inherit">Dragonfly 鏡像下載模式的過程以下圖所示:</span>架構
根據 Dragonfly 的上述特性,浙江移動容器雲平臺結合生產實際決定引入 Dragonfly 技術對現行代碼包發佈模式進行改造,經過 P2P 網絡分攤發佈時產生的單一文件服務器傳輸帶寬瓶頸,並利用 Docker 自己的鏡像 pull 機制來保證整個發佈過程鏡像文件的一致性。併發
在 Dragonfly 技術的基礎上,結合浙江移動容器雲生產實踐,統一分發平臺的整體設計目標以下:
基於上述目標,統一分發平臺的整體架構設計以下:
根據上述平臺設計目標與整體架構分析,容器雲團隊在開源組件的基礎上進行了平臺功能的二次開發,具體包括:
平臺核心服務層(Docktrans)和 API 服務網關層(Edgetrans)都是是無狀態、面向集羣的、可動態橫向擴展的核心組:
以下圖所示,統一分發平臺的核心模塊在進行任務分發時的工做流程具體以下:
截至目前,生產共運行 200 餘個業務系統 1700 多個應用模塊,已所有優化爲鏡像發佈模式。發佈耗時和發佈成功率獲得明顯改善:
採用 P2P 鏡像發佈後,業務多應用一次上線的月均發佈成功率穩定在 98%。
4 月後容器雲平臺開始用 P2P 鏡像發佈方式代替傳統分發系統的代碼包發佈方式,多應用一次集中上線發佈耗時相較與改造以前大幅下降,平均降低 67%。
同時,容器雲平臺選取了多個應用集羣進行單應用的 P2P 鏡像發佈改造效果測試。能夠看出,單個應用發佈耗時相較於改造前大幅下降,平均降低 81.5%。
統一文件分發平臺已有效解決了浙江移動容器雲應用在代碼發佈過程當中的效率和一致性問題,成爲平臺的重要組成部分之一。同時,也支持更多大規模集羣中進行高效文件分發的場景。可陸續推廣至:集羣批量安裝介質分發以及集羣批量配置文件更新。
目前,客戶端界面化開發工做基本完成,已進入生產測試和部署中。分發平臺整體規劃 4 大核心功能:任務管理,目標管理,權限管理和系統分析,現已開放前三項功能。
權限管理,即用戶管理,爲不一樣用戶提供個性化的權限管理功能,具體以下:
目標管理,即用戶進行任務分發的目標集羣結點管理,爲用戶提供管理集羣的 P2P 組網和集羣結點狀態信息健康功能,具體以下:
任務管理提供文件或鏡像分發任務的建立、刪除、中止、信息查看等功能,具體以下:
預計後續將開放系統分析功能,爲平臺管理員、用戶提供任務分發耗時、成功率等數據和任務執行效率統計圖表,經過數據統計與預測,有效支撐平臺向智能化方向演進。
鏡像庫主備容災部署,主備之間經過鏡像同步保持數據一致性。
目前,咱們計劃把界面功能展現貢獻給 CNCF Dragonfly 社區,進一步豐富 CNCF Dragonfly 社區周邊生態。將來,咱們但願更多人蔘與進來,一塊兒爲社區繁榮貢獻力量。
本文做者:
陳遠崢 浙江移動雲計算架構師
王淼鑫 浙江移動雲計算架構師
Dragonfly 社區貢獻者太雲在 Dragonfly Meetup 分享到:
「目前,Dragonfly 已經成爲 CNCF Sandbox 項目,Star 數 2700+,有不少企業用戶正在使用 Dragonfly 來解決他們在鏡像或者文件分發方面遇到的各類問題。將來,咱們將不斷完善和改進 Dragonfly,爲雲原生應用提供更加豐富強大且簡便的分發工具。期待與你們共同努力,讓 Dragonfly 早日成爲 CNCF 畢業項目。」
https://github.com/dragonflyo...