Dragonfly 是一個由阿里巴巴開源的云原生鏡像分發(fā)系統(tǒng),主要解決以 Kubernetes 為核心的分布式應用編排系統(tǒng)的鏡像分發(fā)難題。隨著企業(yè)數(shù)字化大潮的席卷,行業(yè)應用紛紛朝微服務架構(gòu)演進,并通過云化平臺優(yōu)化業(yè)務管理。Dragonfly 源于阿里巴巴,從實際落地場景出發(fā),前瞻性地解決了云原生鏡像分發(fā)的效率、流控與安全三大難題。

2018 年 11 月 14 日已正式進入 CNCF,成為 CNCF 沙箱級別項目(Sandbox Level Project)。
隨著阿里集團業(yè)務爆炸式增長,2015 年時發(fā)布系統(tǒng)日均發(fā)布量突破兩萬,很多應用的機器規(guī)模開始破萬,發(fā)布失敗率開始增高,而根本原因則是發(fā)布過程需要大量的文件拉取,文件服務器扛不住大量的請求,當然第一時間會想到服務器擴容,可是擴容后又發(fā)現(xiàn)后端存儲成為瓶頸且擴容成本也非常巨大(按照我們的計算,為了滿足業(yè)務需求,不阻礙業(yè)務的發(fā)展,后續(xù)至少需要 2000 臺高配物理機且上不封頂)。此外,大量來自不同 IDC 的客戶端請求消耗了巨大的網(wǎng)絡帶寬,造成網(wǎng)絡擁堵。
同時,阿里巴巴很多業(yè)務走向國際化,大量的應用部署在海外,海外服務器下載要回源國內(nèi),浪費了大量的國際帶寬,而且還很慢;如果傳輸大文件,網(wǎng)絡環(huán)境差,失敗的話又得重來一遍,效率極低。
于是我們很自然的就想到了 P2P 技術,P2P 技術并不新鮮,當時也調(diào)研了很多國內(nèi)外的系統(tǒng),但是調(diào)研的結(jié)論是這些系統(tǒng)的規(guī)模和穩(wěn)定性都無法達到我們的期望,因此就有了 Dragonfly 這個產(chǎn)品的誕生。
作為一款通用文件分發(fā)系統(tǒng),Dragonfly 主要能夠解決以下幾個方面的問題:
大規(guī)模下載問題:應用發(fā)布過程中需要下載軟件包或者鏡像文件,如果同時有大量機器需要發(fā)布,比如 1000 臺,按照 500MB 大小的鏡像文件計算,如果直接從鏡像倉庫下載,假設鏡像倉庫的帶寬是 10000Mbps,那么理想狀態(tài)下至少需要 10 分鐘,而且實際情況很可能是倉庫早已被打掛。
遠距離傳輸問題:針對跨地域跨國際的應用,比如阿里速賣通,它既要在國內(nèi)部署,又要在美國和俄羅斯部署,而存儲軟件包的源一般只在一個地域,比如國內(nèi)上海,那么在美國或者俄羅斯的機器當要下載軟件包的時候就要通過國際網(wǎng)絡傳輸,但是國際網(wǎng)絡不僅延時高而且極不穩(wěn)定,嚴重影響傳輸效率,進而導致業(yè)務不能及時上線新功能或者問題補丁,由此甚至會產(chǎn)生業(yè)務故障。
帶寬成本問題:除了傳輸效率問題,高昂的帶寬成本也是一個非常嚴重的問題,很多互聯(lián)網(wǎng)公司尤其是視頻相關的公司,帶寬成本往往可以占據(jù)其總體成本的很大一部分。
安全傳輸問題:據(jù)統(tǒng)計,每年因為網(wǎng)絡安全問題導致的經(jīng)濟損失高達 4500 億美元,所以安全必須是第一生命線,文件傳輸過程中如果不加入任何安全機制,文件內(nèi)容很容易被嗅探到,假設文件中包含賬號或者秘鑰之類的數(shù)據(jù),一旦被截獲,后果將不堪設想。
通過 P2P 技術解決大規(guī)模鏡像下載問題,原理如下:

針對上圖有幾個概念需要先解釋:
PouchContainer:阿里巴巴集團開源的高效、輕量級企業(yè)級富容器引擎技術。
Registry:容器鏡像的存儲倉庫,每個鏡像由多個鏡像層組成,而每個鏡像層又表現(xiàn)為一個普通文件。
Block:當通過 Dragonfly 下載某層鏡像文件時,Dragonfly 的SuperNode會把整個文件拆分成一個個的塊,SuperNode 中的分塊稱為種子塊,種子塊由若干初始客戶端下載并迅速在所有客戶端之間傳播,其中分塊大小通過動態(tài)計算而來。
SuperNode:Dragonfly 的服務端,它主要負責種子塊的生命周期管理以及構(gòu)造 P2P 網(wǎng)絡并調(diào)度客戶端互傳指定分塊。
DFget:Dragonfly 的客戶端,安裝在每臺主機上,主要負責分塊的上傳與下載以及與容器 Daemon 的命令交互
Peer:下載同一個文件的 Host 彼此之間稱為 Peer。
主要下載過程如下:
首先由 PouchContainer 發(fā)起 Pull 鏡像命令,該命令會被 DFget 代理截獲。
然后由 DFget 向 SuperNode 發(fā)送調(diào)度請求。
SuperNode 在收到請求后會檢查對應的文件是否已經(jīng)被緩存到本地,如果沒有被緩存,則會從 Registry 中下載對應的文件并生成種子塊數(shù)據(jù)(種子塊一旦生成就可以立即傳播,而并不需要等到 SuperNode 下載完成整個文件后才開始分發(fā)),如果已經(jīng)被緩存,則直接生成分塊任務。
客戶端解析相應的任務并從其他 Peer 或者 SuperNode 中下載分塊數(shù)據(jù),當某個 Layer 的所有分塊下載完成后,一個 Layer 也就下載完畢,此時會傳遞給容器引擎使用,而當所有的 Layer 下載完成后,整個鏡像也就下載完成了。
通過上述 P2P 技術,可以徹底解決鏡像倉庫的帶寬瓶頸問題,充分利用各個 Peer 的硬件資源和網(wǎng)絡傳輸能力,達到規(guī)模越大傳輸越快的效果。
Dragonfly 的系統(tǒng)架構(gòu)不涉及對容器技術體系的任何改動,完全可以無縫支持容器使其擁有 P2P 鏡像分發(fā)能力,以大幅提升文件分發(fā)效率!
結(jié)合 CDN 與預熱技術解決遠距離傳輸問題
通過 CDN 緩存技術,每個客戶端可以就近從 SuperNode 中下載種子塊,而無需跨地域進行網(wǎng)絡傳輸,CDN 緩存原理大致如下:

通過 CDN 緩存技術可以解決客戶端回源下載以及就近下載的問題,但是如果緩存不命中,針對跨域遠距離傳輸?shù)膱鼍埃琒uperNode 回源同步的效率將會非常低,這會直接影響到整體的分發(fā)效率,為了解決該問題,Dragonfly 采用了一種自動化層級預熱機制來大程度的提升緩存命中率,其大致原理如下:

通過 Push 命令把鏡像文件推送到 Registry 的過程中,每推送完一層鏡像就會立即觸發(fā) SuperNode 以 P2P 方式把該層鏡像同步到 SuperNode 本地,通過這種方式,可以充分利用用戶執(zhí)行Push和Pull操作的時間間隙(大概10分鐘左右),把鏡像的各層文件同步到 SuperNode 中,這樣當用戶執(zhí)行 Pull 命令時,就可以直接利用 SuperNode 中的緩存文件,自然而然也就沒有遠距離傳輸?shù)膯栴}了。
通過動態(tài)壓縮和智能化調(diào)度解決帶寬成本問題
通過動態(tài)壓縮,可以在不影響 SuperNode 和 Peer 正常運行的情況下,對文件中最值得壓縮的部分實施相應的壓縮策略,從而可以節(jié)約大量的網(wǎng)絡帶寬資源,同時還能進一步提升分發(fā)速率,相比于傳統(tǒng)的 HTTP 原生壓縮方式,動態(tài)壓縮主要有以下幾個方面的優(yōu)勢:

動態(tài)壓縮的優(yōu)勢首先自然是動態(tài)性,它可以保證只有在 SuperNode 和 Peer 負載正常的情況下才會開啟壓縮,同時只會對文件中最值得壓縮的分塊進行壓縮且壓縮策略也是動態(tài)確定的;此外,通過多線程壓縮方式可以大幅提升壓縮速率,而且借助 SuperNode 的緩存能力,整個下載過程只需要壓縮一次即可,壓縮收益比相對于 HTTP 原生方式至少提升 10 倍。
除了動態(tài)壓縮外,通過 SuperNode 強大的任務調(diào)度能力,可以盡量使在同一個網(wǎng)絡設備下的 Peer 互傳分塊,減少跨網(wǎng)絡設備、跨機房的流量,從而進一步降低網(wǎng)絡帶寬成本。
通過加密插件解決安全傳輸問題
在下載某些敏感類文件(比如秘鑰文件或者賬號數(shù)據(jù)之類的文件)時,傳輸?shù)陌踩员仨氁玫接行ПU希谶@方面,Dragonfly 主要做了以下幾個方面的工作:
支持 HTTP Header 傳輸,以滿足那些需要通過 Header 來進行權(quán)限驗證的下載請求
通過自研的數(shù)據(jù)存儲協(xié)議對數(shù)據(jù)塊進行包裝傳輸,后續(xù)還會對包裝的數(shù)據(jù)進行再加密
即將支持安全加密功能插件化
通過多重校驗機制,可以嚴格防止數(shù)據(jù)被篡改
在阿里巴巴集團內(nèi)部,Dragonfly 作為全集團基礎技術構(gòu)件,目前已經(jīng)承載了全集團 90%以上的文件下載任務,包括鏡像文件、應用軟件包、算法數(shù)據(jù)文件、靜態(tài)資源文件以及索引文件等等,日分發(fā)峰值目前可以達到 1 億次,為集團業(yè)務提供了高效穩(wěn)定的文件分發(fā)能力;同時,每年雙十一大家買買買的過程中,其中最為關鍵的營銷活動數(shù)據(jù)(數(shù) GB 大小)也是在將近零點的時候通過 Dragonfly 來成功(100%成功)抵達數(shù)萬臺機器上的,萬一在這個過程中有一點點問題,雙十一會如何,你懂的……
目前 Dragonfly 也已經(jīng)開源,在開源社區(qū)中, 目前 Star 數(shù) 2500+,同時有非常多的外部用戶對 Dragonfly 表現(xiàn)出濃厚的興趣,也有很多外部公司正在使用 Dragonfly 來解決他們在鏡像或者文件分發(fā)方面遇到的各種問題,比如中國移動、滴滴、科大訊飛等;此外,Dragonfly 已成為全中國第三個進入CNCF Sandbox 級別的項目,后續(xù)我們還會繼續(xù)加油努力,爭取盡快畢業(yè)!

CNCF 總裁宣布 Dragonfly 加入 CNCF
通過以上介紹,我相信針對 Dragonfly 是否足夠成熟,大家心里應該也有桿秤了吧,當然,Dragonfly 還有很多事情需要不斷完善和改進,在這里誠邀各路人才,一起把 Dragonfly 打造成一款世界級的產(chǎn)品!
成為CNCF畢業(yè)項目,為云原生應用提供更加豐富和強大的文件分發(fā)能力。
開源版與集團內(nèi)部版融合,給社區(qū)開放出更多的高級特性。
智能化方面進行更多探索和改進。
原文鏈接:https://mp.weixin.qq.com/s/UUZDIGopz5UruRpnxcOZ8Q
文章題目:深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng)Dragonfly-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://chinadenli.net/article36/dsghpg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、ChatGPT、網(wǎng)站收錄、靜態(tài)網(wǎng)站、小程序開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容