溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

發(fā)布時(shí)間:2020-08-10 15:53:01 來源:ITPUB博客 閱讀:313 作者:阿里系統(tǒng)軟件技術(shù) 欄目:軟件技術(shù)

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

2018 年 11 月 14 日已正式進(jìn)入 CNCF,成為 CNCF 沙箱級(jí)別項(xiàng)目(Sandbox Level Project)。

Dragonfly 的由來

隨著阿里集團(tuán)業(yè)務(wù)爆炸式增長,2015 年時(shí)發(fā)布系統(tǒng)日均發(fā)布量突破兩萬,很多應(yīng)用的機(jī)器規(guī)模開始破萬,發(fā)布失敗率開始增高,而根本原因則是發(fā)布過程需要大量的文件拉取,文件服務(wù)器扛不住大量的請(qǐng)求,當(dāng)然第一時(shí)間會(huì)想到服務(wù)器擴(kuò)容,可是擴(kuò)容后又發(fā)現(xiàn)后端存儲(chǔ)成為瓶頸且擴(kuò)容成本也非常巨大(按照我們的計(jì)算,為了滿足業(yè)務(wù)需求,不阻礙業(yè)務(wù)的發(fā)展,后續(xù)至少需要 2000 臺(tái)高配物理機(jī)且上不封頂)。此外,大量來自不同 IDC 的客戶端請(qǐng)求消耗了巨大的網(wǎng)絡(luò)帶寬,造成網(wǎng)絡(luò)擁堵。

同時(shí),阿里巴巴很多業(yè)務(wù)走向國際化,大量的應(yīng)用部署在海外,海外服務(wù)器下載要回源國內(nèi),浪費(fèi)了大量的國際帶寬,而且還很慢;如果傳輸大文件,網(wǎng)絡(luò)環(huán)境差,失敗的話又得重來一遍,效率極低。

于是我們很自然的就想到了 P2P 技術(shù),P2P 技術(shù)并不新鮮,當(dāng)時(shí)也調(diào)研了很多國內(nèi)外的系統(tǒng),但是調(diào)研的結(jié)論是這些系統(tǒng)的規(guī)模和穩(wěn)定性都無法達(dá)到我們的期望,因此就有了 Dragonfly 這個(gè)產(chǎn)品的誕生。

Dragonfly 能解決哪些問題

作為一款通用文件分發(fā)系統(tǒng),Dragonfly 主要能夠解決以下幾個(gè)方面的問題:

  1. 大規(guī)模下載問題:應(yīng)用發(fā)布過程中需要下載軟件包或者鏡像文件,如果同時(shí)有大量機(jī)器需要發(fā)布,比如 1000 臺(tái),按照 500MB 大小的鏡像文件計(jì)算,如果直接從鏡像倉庫下載,假設(shè)鏡像倉庫的帶寬是 10000Mbps,那么理想狀態(tài)下至少需要 10 分鐘,而且實(shí)際情況很可能是倉庫早已被打掛。

  2. 遠(yuǎn)距離傳輸問題:針對(duì)跨地域跨國際的應(yīng)用,比如阿里速賣通,它既要在國內(nèi)部署,又要在美國和俄羅斯部署,而存儲(chǔ)軟件包的源一般只在一個(gè)地域,比如國內(nèi)上海,那么在美國或者俄羅斯的機(jī)器當(dāng)要下載軟件包的時(shí)候就要通過國際網(wǎng)絡(luò)傳輸,但是國際網(wǎng)絡(luò)不僅延時(shí)高而且極不穩(wěn)定,嚴(yán)重影響傳輸效率,進(jìn)而導(dǎo)致業(yè)務(wù)不能及時(shí)上線新功能或者問題補(bǔ)丁,由此甚至?xí)a(chǎn)生業(yè)務(wù)故障。

  3. 帶寬成本問題:除了傳輸效率問題,高昂的帶寬成本也是一個(gè)非常嚴(yán)重的問題,很多互聯(lián)網(wǎng)公司尤其是視頻相關(guān)的公司,帶寬成本往往可以占據(jù)其總體成本的很大一部分。

  4. 安全傳輸問題:據(jù)統(tǒng)計(jì),每年因?yàn)榫W(wǎng)絡(luò)安全問題導(dǎo)致的經(jīng)濟(jì)損失高達(dá) 4500 億美元,所以安全必須是第一生命線,文件傳輸過程中如果不加入任何安全機(jī)制,文件內(nèi)容很容易被嗅探到,假設(shè)文件中包含賬號(hào)或者秘鑰之類的數(shù)據(jù),一旦被截獲,后果將不堪設(shè)想。

Dragonfly 是如何解決這些問題的

通過 P2P 技術(shù)解決大規(guī)模鏡像下載問題,原理如下:

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

針對(duì)上圖有幾個(gè)概念需要先解釋:

  • PouchContainer:阿里巴巴集團(tuán)開源的高效、輕量級(jí)企業(yè)級(jí)富容器引擎技術(shù)。

  • Registry:容器鏡像的存儲(chǔ)倉庫,每個(gè)鏡像由多個(gè)鏡像層組成,而每個(gè)鏡像層又表現(xiàn)為一個(gè)普通文件。

  • Block:當(dāng)通過 Dragonfly 下載某層鏡像文件時(shí),Dragonfly 的SuperNode會(huì)把整個(gè)文件拆分成一個(gè)個(gè)的塊,SuperNode 中的分塊稱為種子塊,種子塊由若干初始客戶端下載并迅速在所有客戶端之間傳播,其中分塊大小通過動(dòng)態(tài)計(jì)算而來。

  • SuperNode:Dragonfly 的服務(wù)端,它主要負(fù)責(zé)種子塊的生命周期管理以及構(gòu)造 P2P 網(wǎng)絡(luò)并調(diào)度客戶端互傳指定分塊。

  • DFget:Dragonfly 的客戶端,安裝在每臺(tái)主機(jī)上,主要負(fù)責(zé)分塊的上傳與下載以及與容器 Daemon 的命令交互

  • Peer:下載同一個(gè)文件的 Host 彼此之間稱為 Peer。

主要下載過程如下:

  1. 首先由 PouchContainer 發(fā)起 Pull 鏡像命令,該命令會(huì)被 DFget 代理截獲。

  2. 然后由 DFget 向 SuperNode 發(fā)送調(diào)度請(qǐng)求。

  3. SuperNode 在收到請(qǐng)求后會(huì)檢查對(duì)應(yīng)的文件是否已經(jīng)被緩存到本地,如果沒有被緩存,則會(huì)從 Registry 中下載對(duì)應(yīng)的文件并生成種子塊數(shù)據(jù)(種子塊一旦生成就可以立即傳播,而并不需要等到 SuperNode 下載完成整個(gè)文件后才開始分發(fā)),如果已經(jīng)被緩存,則直接生成分塊任務(wù)。

  4. 客戶端解析相應(yīng)的任務(wù)并從其他 Peer 或者 SuperNode 中下載分塊數(shù)據(jù),當(dāng)某個(gè) Layer 的所有分塊下載完成后,一個(gè) Layer 也就下載完畢,此時(shí)會(huì)傳遞給容器引擎使用,而當(dāng)所有的 Layer 下載完成后,整個(gè)鏡像也就下載完成了。

通過上述 P2P 技術(shù),可以徹底解決鏡像倉庫的帶寬瓶頸問題,充分利用各個(gè) Peer 的硬件資源和網(wǎng)絡(luò)傳輸能力,達(dá)到規(guī)模越大傳輸越快的效果。

Dragonfly 的系統(tǒng)架構(gòu)不涉及對(duì)容器技術(shù)體系的任何改動(dòng),完全可以無縫支持容器使其擁有 P2P 鏡像分發(fā)能力,以大幅提升文件分發(fā)效率!

結(jié)合 CDN 與預(yù)熱技術(shù)解決遠(yuǎn)距離傳輸問題

通過 CDN 緩存技術(shù),每個(gè)客戶端可以就近從 SuperNode 中下載種子塊,而無需跨地域進(jìn)行網(wǎng)絡(luò)傳輸,CDN 緩存原理大致如下:

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

同一個(gè)文件的第一個(gè)請(qǐng)求者會(huì)觸發(fā)檢查機(jī)制,根據(jù)請(qǐng)求信息計(jì)算出緩存位置,如果緩存不存在,則觸發(fā)回源同步操作生成種子塊;否則向源站發(fā)送 HEAD 請(qǐng)求并帶上 If-Modified-Since 字段,該字段的值為上次服務(wù)器返回的文件最后修改時(shí)間,如果響應(yīng)碼為 304,則表示源站中的文件目前還未被修改過,緩存文件是有效的,然后再根據(jù)緩存文件的元信息確定文件是否是完整的,如果完整,則緩存完全命中;否則需要通過斷點(diǎn)續(xù)傳方式把剩下的文件分段下載過來,斷點(diǎn)續(xù)傳的前提是源站必須支持分段下載,否則還是要同步整個(gè)文件。如果 HEAD 請(qǐng)求的響應(yīng)碼為200,則表示源站文件已被修改過,緩存無效,此時(shí)需要進(jìn)行回源同步操作;如果響應(yīng)碼既不是 304 也不是 200,則表示源站異?;虻刂窡o效,下載任務(wù)直接失敗。

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

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

通過 Push 命令把鏡像文件推送到 Registry 的過程中,每推送完一層鏡像就會(huì)立即觸發(fā) SuperNode 以 P2P 方式把該層鏡像同步到 SuperNode 本地,通過這種方式,可以充分利用用戶執(zhí)行Push和Pull操作的時(shí)間間隙(大概10分鐘左右),把鏡像的各層文件同步到 SuperNode 中,這樣當(dāng)用戶執(zhí)行 Pull 命令時(shí),就可以直接利用 SuperNode 中的緩存文件,自然而然也就沒有遠(yuǎn)距離傳輸?shù)膯栴}了。

通過動(dòng)態(tài)壓縮和智能化調(diào)度解決帶寬成本問題

通過動(dòng)態(tài)壓縮,可以在不影響 SuperNode 和 Peer 正常運(yùn)行的情況下,對(duì)文件中最值得壓縮的部分實(shí)施相應(yīng)的壓縮策略,從而可以節(jié)約大量的網(wǎng)絡(luò)帶寬資源,同時(shí)還能進(jìn)一步提升分發(fā)速率,相比于傳統(tǒng)的 HTTP 原生壓縮方式,動(dòng)態(tài)壓縮主要有以下幾個(gè)方面的優(yōu)勢:

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

動(dòng)態(tài)壓縮的優(yōu)勢首先自然是動(dòng)態(tài)性,它可以保證只有在 SuperNode 和 Peer 負(fù)載正常的情況下才會(huì)開啟壓縮,同時(shí)只會(huì)對(duì)文件中最值得壓縮的分塊進(jìn)行壓縮且壓縮策略也是動(dòng)態(tài)確定的;此外,通過多線程壓縮方式可以大幅提升壓縮速率,而且借助 SuperNode 的緩存能力,整個(gè)下載過程只需要壓縮一次即可,壓縮收益比相對(duì)于 HTTP 原生方式至少提升 10 倍。

除了動(dòng)態(tài)壓縮外,通過 SuperNode 強(qiáng)大的任務(wù)調(diào)度能力,可以盡量使在同一個(gè)網(wǎng)絡(luò)設(shè)備下的 Peer 互傳分塊,減少跨網(wǎng)絡(luò)設(shè)備、跨機(jī)房的流量,從而進(jìn)一步降低網(wǎng)絡(luò)帶寬成本。

通過加密插件解決安全傳輸問題

在下載某些敏感類文件(比如秘鑰文件或者賬號(hào)數(shù)據(jù)之類的文件)時(shí),傳輸?shù)陌踩员仨氁玫接行ПU?,在這方面,Dragonfly 主要做了以下幾個(gè)方面的工作:

  1. 支持 HTTP Header 傳輸,以滿足那些需要通過 Header 來進(jìn)行權(quán)限驗(yàn)證的下載請(qǐng)求

  2. 通過自研的數(shù)據(jù)存儲(chǔ)協(xié)議對(duì)數(shù)據(jù)塊進(jìn)行包裝傳輸,后續(xù)還會(huì)對(duì)包裝的數(shù)據(jù)進(jìn)行再加密

  3. 即將支持安全加密功能插件化

  4. 通過多重校驗(yàn)機(jī)制,可以嚴(yán)格防止數(shù)據(jù)被篡改

Dragonfly 目前的成熟度如何

在阿里巴巴集團(tuán)內(nèi)部,Dragonfly 作為全集團(tuán)基礎(chǔ)技術(shù)構(gòu)件,目前已經(jīng)承載了全集團(tuán) 90%以上的文件下載任務(wù),包括鏡像文件、應(yīng)用軟件包、算法數(shù)據(jù)文件、靜態(tài)資源文件以及索引文件等等,日分發(fā)峰值目前可以達(dá)到 1 億次,為集團(tuán)業(yè)務(wù)提供了高效穩(wěn)定的文件分發(fā)能力;同時(shí),每年雙十一大家買買買的過程中,其中最為關(guān)鍵的營銷活動(dòng)數(shù)據(jù)(數(shù) GB 大小)也是在將近零點(diǎn)的時(shí)候通過 Dragonfly 來成功(100%成功)抵達(dá)數(shù)萬臺(tái)機(jī)器上的,萬一在這個(gè)過程中有一點(diǎn)點(diǎn)問題,雙十一會(huì)如何,你懂的……

目前 Dragonfly 也已經(jīng)開源,在開源社區(qū)中, 目前 Star 數(shù) 2500+,同時(shí)有非常多的外部用戶對(duì) Dragonfly 表現(xiàn)出濃厚的興趣,也有很多外部公司正在使用 Dragonfly 來解決他們?cè)阽R像或者文件分發(fā)方面遇到的各種問題,比如中國移動(dòng)、滴滴、科大訊飛等;此外,Dragonfly 已成為全中國第三個(gè)進(jìn)入CNCF Sandbox 級(jí)別的項(xiàng)目,后續(xù)我們還會(huì)繼續(xù)加油努力,爭取盡快畢業(yè)!

深度解讀阿里巴巴云原生鏡像分發(fā)系統(tǒng) Dragonfly

CNCF 總裁宣布 Dragonfly 加入 CNCF


通過以上介紹,我相信針對(duì) Dragonfly 是否足夠成熟,大家心里應(yīng)該也有桿秤了吧,當(dāng)然,Dragonfly 還有很多事情需要不斷完善和改進(jìn),在這里誠邀各路人才,一起把 Dragonfly 打造成一款世界級(jí)的產(chǎn)品!

未來展望

  1. 成為CNCF畢業(yè)項(xiàng)目,為云原生應(yīng)用提供更加豐富和強(qiáng)大的文件分發(fā)能力。

  2. 開源版與集團(tuán)內(nèi)部版融合,給社區(qū)開放出更多的高級(jí)特性。

  3. 智能化方面進(jìn)行更多探索和改進(jìn)。

原文鏈接:https://mp.weixin.qq.com/s/UUZDIGopz5UruRpnxcOZ8Q

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI