映象拉取節省 90% 以上,快手基於 Dragonfly 的超大規模分發實踐

OpenAnolis小助手發表於2023-01-31

01 挑戰

快手容器雲平臺旨在為快手不斷增長、不斷變化和多樣化的業務,提供基於容器化部署的超大規模基礎設施服務。為了實現這一目標,快手工程師需要解決彈性、穩定性、效率和無伺服器架構等挑戰,在這些挑戰中,映象分發的穩定性和效率也是最棘手的問題之一。

解決方案

為了讓快手容器雲平臺的映象分發更加穩定和高效,快手容器雲技術團隊攜手阿里雲、螞蟻集團在龍蜥社群適配,最佳化落地解決方案。事實證明, Dragonfly 及其子專案 Nydus 是最合適的解決方案,該方案能夠與現有系統很好地相容,在現有能力基礎上平滑過渡,同時也為服務交付帶來了大幅的效率提升。

效果

Dragonfly 上線後,整個叢集透過 P2P 組建分發網,所有節點幫助中心化 Harbor 緩解網路頻寬壓力。Harbor 的網路頻寬壓力平均緩解 70% 以上,峰值壓力緩解 80% 以上,映象分發系統變得更加穩定、可靠、高效,系統能夠同時支援更多數量的映象併發拉取請求,尤其是在應對 Daemonset 部署和關鍵、大批次例項業務服務更新的場景中,高併發映象拉取倉庫不再是瓶頸。

使用專案

Dragonfly:

Nydus:https://github.com/dragonflyoss/image-service

containerd:

Harbor:

02 相關資料

03 為每月 10 億使用者提供穩定性和效能支援

“在快手,Dragonfly 有效解決了海量檔案分發問題” ——吳宏斌 快手綜合運營平臺負責人

快手建立於 2011 年,是中國第一個短影片平臺,每月為全球 10 億使用者提供服務,其中也有 1.8 億多使用者在海外,其全球足跡已迅速擴充套件至拉丁美洲、中東和東南亞。在快手,任何使用者都可以透過短影片和直播來記錄和分享他們的生活經歷,展示他們的才華。快手與內容創作者、企業緊密合作,主要從事內容社群和社交平臺的運營,提供直播服務、線上營銷服務、電子商務、娛樂、線上知識共享和其他增值服務。隨著快手業務的快速增長,數以萬計的關鍵服務和中介軟體執行在快手容器雲平臺上,映象分發系統的穩定性和效率變得越來越重要。

對於快手的映象分發系統升級改造來說,最大的挑戰不僅僅是映象倉庫峰值壓力的緩解和映象拉取加速,如何讓服務分發無縫銜接平滑過渡,儘可能讓業務無感、不受系統變化影響同樣重要。快手容器雲平臺工程師透過調研發現,Nydus 與 Dragonfly 系統深度整合,同時也支援傳統 OCI 映象,能夠以相容友好的方式提供快速、穩定、安全、便捷的容器映象訪問,非常容易地就能適配容器雲平臺已有工作,實現業務從已有映象使用方式平滑過渡到新映象格式。平臺唯一要做的就是將容器執行引擎從 Docker 切換到 containerd,因為 containerd 與 Dragonlfly 的整合體驗更好。在快手工程師的努力下,大規模節點的容器引擎平穩切換輕而易舉,containerd 和 Dragonfly 均已被快速全面採用。

穩定高效的映象分發

對於穩定、高效的映象分發,Dragonfly 給出了完美的答案。在快手,有許多重要的服務需要在短短几分鐘內擴容到成千上萬個例項,例如快手的 818 購物節或雙 11 活動的業務擴容需求。這種縮放需要數千 GB 頻寬才能直接從映象倉庫下載。在另外一些場景中,預測模型和搜尋業務需要定期更新模型引數檔案和索引檔案來保證推薦效果和檢索效果,這在技術上意味著必須立即將數百 GB 的檔案分發到每個相關例項。

快手工程師在所有容器雲主機部署了 Dragonfly 元件:Dfdaemon 和 Dfget,透過 P2P 演算法拉取檔案。同時,在每個 AZ 部署了獨立的超級節點叢集,為 Dfget 設計了 Schedule Server,選擇合適的超級節點來避免跨 AZ 或者跨 Region 的流量。更重要的是,工程師基於 Dragonfly 獨特的片管理 P2P 演算法實現了資料流 P2P 傳輸,降低了磁碟負載。得益於 Dragonfly,數以萬計的例項可以同時拉取映象或下載檔案,而不會增加時間成本和磁碟負載。

映象拉取節省 90% 以上,快手基於 Dragonfly 的超大規模分發實踐

“先進的技術就是第一生產力,快手容器雲平臺擁抱 Dragonfly 和 Nydus 後,應用交付效率大幅提升,給業務創新帶來了更多可能。” ——孫寅 快手容器雲負責人

由於拉取映象是容器生命週期中比較耗時的步驟之一,為了進一步加速映象分發和服務啟動,工程師們又繼續啟用了 Nydus 映象懶載入專案。快手有許多服務有數千個 Pod 例項,其中一些有超過 20G 或更大的映象,當這些服務升級或擴容時,巨大的映象和啟動時間會嚴重減慢服務啟動。快手需要一種能夠顯著提高服務啟動速度的解決方案,特別是因為某些服務將其訓練模型放入映象中,這對於服務啟動來說可能是災難性的。

由於快手在 Dragonfly 專案上的應用和實施,工程師們很早就瞭解到 Nydus 專案。Nydus 是一個強大的開原始檔系統解決方案,可以為雲原生工作負載,例如容器映象,構建高效的映象分發系統。

得益於 Nydus 全新的映象設計,每個 Pod 可以在幾秒鐘內完成啟動,這樣可以大量節省服務部署例項的啟動時間,讓應用盡快為使用者提供服務。對於每個叢集節點,支援Nydus的工作並不複雜,透過容器引擎無損切換(指無需 POD 驅逐)、配置變更即可順利完成。

在實踐中,Harbor 作為快手容器雲平臺的全域性映象倉庫中心,仍然扮演著非常重要的角色,具體來說,我們做了以下事情:

1.容器引擎從 Docker 無損切換到 containerd;

2.在映象構建階段支援使用 Nydus 標準構建映象;

3.在叢集節點間,使用 Dragonfly 的 P2P 技術支援映象分發;

4.containerd透過配置Dragonfly 的 P2P 代理拉取映象,並使用 Nydus 映象啟動容器。

當然,以上所有的變動,都繼續相容當前已有的 OCI 映象格式以及系統已有功能。

映象拉取節省 90% 以上,快手基於 Dragonfly 的超大規模分發實踐

綜上所述,Dragonfly 和 Nydus 一起為快手容器雲平臺提供了處理映象分發問題的最佳解決方案。數以萬計的快手服務大大減少了部署時間,業務線研發工程師在更新服務時也更加輕鬆容易。

Dragonfly 和 Nydus 都是來自 CNCF 的優秀開源專案,更進一步說,快手也將繼續對該專案進行更多投入,並與社群展開深入合作,使它變得更加強大和可持續。雲原生技術是基礎設施領域的一場革命,尤其是在彈性和無伺服器方面,我們相信 Dragonfly 一定會在雲原生生態中扮演重要角色。

相關連結可移步龍蜥公眾號(OpenAnolis龍蜥)2023年1月30日相同推送檢視。

—— 完 ——




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2933352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章