Categories
程式開發

雲原生應用萬節點分鐘級分發協同實踐


引言

2019 年天貓雙11,阿里巴巴核心系統首次實現 100% 上雲。面對全球最大的交易洪峰,阿里雲扛住了每秒 54.4 萬筆的交易峰值,這是“雲原生”與“天貓全球狂歡節”的一次完美聯名。

雲原生應用萬節點分鐘級分發協同實踐 1

(圖為 2019 年天貓雙11 成交額)

容器鏡像服務作為阿里巴巴經濟體雲原生領域的重要基礎設施之一,早在雙十一備戰期間就已面臨大規模分發需求。為了更好地支持這一需求,產品提前進行規劃及迭代更新,全面提升了大規模分發場景下的性能、可觀測性和穩定性。在新的雙十一來臨前,容器鏡像服務新增了數 PB 的鏡像數據,月均鏡像拉取達數億次。同時產品提供了雲原生應用交付鍊等功能,全面覆蓋阿里經濟體及雲用戶在雲原生時代的使用需求。

本文將介紹容器鏡像服務如何通過產品能力提升應對雲原生應用萬節點分發場景下的新發展和新挑戰。

新發展和新挑戰

隨著雲原生技術的迅速普及,Kubernetes 已經成為事實上應用容器化平台的標準,成為了雲原生領域的一等公民。它以一種聲明式的容器編排與管理體系,讓軟件交付變得越來越標準化。 Kubernetes 提供了統一模式的 API,能以 YAML 格式的文件定義 Kubernetes 集群內的資源。這一些 YAML 格式的資源定義使得 Kubernetes 能輕鬆被上下游系統所集成,完成一系列原本需要用非標準化腳本、人工來完成的操作。同時社區根據應用交付場景及需求,在原生 YAML 格式的資源定義文件之外衍生出了更多系列的雲原生應用交付標準,例如 Helm Chart、Opeartor、Open Application Model 等。

雲原生應用萬節點分鐘級分發協同實踐 2

(圖為雲原生應用交付標準演進)

除了雲原生應用交付標準推陳出新,用戶對交付方式也提出了更高的要求。越來越多的用戶期望能以流程化、自動化、更安全的方式交付云原生應用,因此萬節點分鐘級分發的場景已經演化成萬節點分鐘級多環節協同分發。再加上全球化業務發展,意味著在分鐘級時間消耗內除了完成各個環節外,還需要完成全球化分發,這對支撐雲生應用分發的平台提出了更高的要求。

新實踐

通過控制容器鏡像大小、採用 P2P 分發鏡像層、優化 Registry 服務端等方式,我們極大優化了大規模分發的性能,最終達成了萬節點分鐘級分發的目標:

  • 優化容器鏡像大小,降低鏡像傳輸成本

    製作基礎鏡像,將使用頻繁的應用或環境製作成基礎鏡像復用,盡可能減少鏡像的層數,控制每次變更層數;採用多階段鏡像構建,將鏡像製作過程中的中間產物與最終產物分離,形成最精簡的應用鏡像

  • 優化服務端處理性能,提高請求響應速率

    服務端通過識別熱點鏡像,採用熱點數據緩存等多種方式應對大規模鏡像 Manifest 並發拉取

  • 優化客戶端容器鏡像層下載方式,減少鏡像傳輸時間

    客戶端使用蜻蜓下載容器鏡像, 基於 P2P 方式大幅減少鏡像 Layer 下載時間

雲原生應用萬節點分鐘級分發協同實踐 3

(圖為鏡像大規模分發的優化策略)

為了讓擁有同樣需求的企業客戶能夠享受到如上一致的分發能力和體驗,容器鏡像服務產品在 2019 年 3 月正式推出了容器鏡像服務企業版(ACR Enterprise Edition)。容器鏡像服務企業版提供了企業級雲原生資產託管能力以及雲原生應用全球化同步、大規模分發能力,適合有著高安全需求、多地域業務部署、擁有大規模集群節點的企業級容器客戶。除此之外,容器鏡像服務企業版還在雲原生資產託管、交付、分發等幾個方面進一步提升雲原生應用萬節點分鐘級分發協同體驗。

雲原生應用託管

  • 在應用交付物層面,容器鏡像服務企業版目前支持容器鏡像、Helm Chart 兩類雲原生應用資產的全生命週期管理。
  • 在訪問安全層面,產品提供了獨立網絡訪問控制功能,可以細粒度控制公網及 VPC 網絡的訪問策略,僅允許符合策略的來源方訪問資產,進一步保障雲原生資產的訪問安全。
  • 在訪問體驗層面,產品提供容器集群透明拉取插件,支持容器鏡像透明拉取,保障業務在彈性場景極速拉取鏡像不因憑證配置有誤導致業務更新或擴容異常。

雲原生應用萬節點分鐘級分發協同實踐 4

(圖為容器鏡像服務企業版支持雲原生應用交付)

雲原生應用交付

雲原生應用生產環節,用戶可以直接上傳託管容器鏡像、Helm Chart 等雲原生資產;也可以通過構建功能自動從源代碼(Github、阿里雲 Code、GitLab 等來源)智能構建成容器鏡像。同時為了解決流程化、自動化、更安全的方式交付云原生應用這一需求,容器鏡像服務企業版引入了雲原生應用交付鏈功能。雲原生應用交付鏈以雲原生應用託管為始,以雲原生應用分發為終,全鏈路可觀測、可追踪、可自主設置。可以實現一次應用變更,全球化多場景自動交付,從流程層面極大地提升了雲原生應用萬節點分發的效率及安全性。

雲原生應用萬節點分鐘級分發協同實踐 5

(圖為控制台創建雲原生應用交付鏈)

雲原生應用交付環節,支持自動發起靜態安全掃描並自定義配置安全阻斷策略。一旦識別到靜態應用中存在高危漏洞後,可自動阻斷後續部署鏈路。用戶可基於漏洞報告中的修復建議,更新優化構建成新的鏡像版本,再次發起交付。

雲原生應用分發

雲原生應用分發環節,當前置環節完成無阻斷後,雲原生應用正式進入全球化分發及大規模分發環節。為了保障萬節點分鐘級分發協同完成,容器鏡像服務聯合容器服務、彈性容器實例等雲產品提供了端到端的極致分發體驗。針對全球化分發,由於基於細粒度同步策略調度、同步鏈路優化等優化手段,雲原生應用的全球同步效率相比手動同步提升了 7 倍。

雲原生應用萬節點分鐘級分發協同實踐 6

(圖為雲原生應用的全球化分發)

在P2P 大規模分發方面,產品針對雲環境多次優化基於Dragonfly 的分發方案,最終通過多個創新技術解決了大規模文件下載以及跨網絡隔離等場景下各種文件分發難題,大幅提高大規模容器鏡像分發能力。平均鏡像大規模分發效率比普通方式提高數倍,適用於容器集群單集群節點數達 100 及以上的場景。

雲原生應用萬節點分鐘級分發協同實踐 7

(圖為基於 P2P 的分發流程示意)

除了 P2P 大規模分發手段外,為了更好地滿足特定場景下的大規模分發需求,產品還支持基於鏡像快照的大規模分發方式。基於鏡像快照的分發方式,可避免或減少鏡像層的下載,極大提高彈性容器實例創建速度。在容器集群(ASK)及彈性容器實例(ECI)的聯合使用場景下,產品可以支持 500 節點秒級鏡像拉取,實現業務突發場景下極速擴容。

雲原生應用萬節點分鐘級分發協同實踐 8

(圖為基於鏡像快照的分發流程示意)

新平台

穩定性層面的具體提升及優化工作從監控報警、容錯容災、依賴治理、限流降級、容量規劃等幾個方面展開。

  • 在依賴治理方面,平台對雲原生應用交付鏈中的相關重點環節及外部依賴進行統一管理,提升交付鏈整體交付能力,幫助用戶識別熱點倉庫及追踪交付鏈執行結果;
  • 在限流降級方面,平台分析識別雲原生應用分發核心環節的主次業務功能,優先保障主要業務邏輯完成,次要業務邏輯可降級延後處理;
  • 在容量規劃方面,平台根據上下游業務變化情況,對資源進行按需擴容,確保云原生應用正常交付完成。

雲原生應用萬節點分鐘級分發協同實踐 9

(圖為平台的穩定性保障策略)

生態集成

基於平台提供的豐富的集成能力,用戶還可以將容器鏡像服務企業版作為雲原生資產託管及分發的基礎設施,為他們的用戶提供雲原生應用分發能力。其中,容器鏡像服務企業版支撐阿里云云市場構建容器應用市場,支撐容器應用市場的容器商品託管及商業化分發,構建雲上雲原生生態閉環。 ISV 服務商,例如 Intel、Fortinet、奧哲,將容器化商品以容器鏡像或者 Helm Chart 的形式在雲市場快速上架,實現標準化交付、商業化變現。市場客戶也可以從容器應用市場獲取到優質的阿里雲官方及 ISV 容器鏡像,快速部署至容器服務容器集群,享受到阿里雲豐富的雲原生生態。

雲原生應用萬節點分鐘級分發協同實踐 10

(圖為容器應用市場流程示意)

寫在最後

從支持阿里巴巴雙11 大規模分發需求,到全面覆蓋阿里經濟體及雲用戶的雲原生資產託管及分發需求,再到支撐構建雲上容器生態閉環,阿里雲容器鏡像服務已成為了雲原生時代的核心基礎設施之一,釋放雲原生價值的重要加速器。容器鏡像服務也將持續為用戶帶來更加優異的雲原生應用分發功能、性能及體驗。

本文轉載自云棲社區。

原文鏈接

https://yq.aliyun.com/articles/728373?spm=a2c4e.11153959.0.0.715cd55arelKky