1. 程式人生 > >雲原生應用萬節點分鐘級分發協同實踐

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

點選下載《不一樣的 雙11 技術:阿里巴巴經濟體雲原生實踐》

本文節選自《不一樣的 雙11 技術:阿里巴巴經濟體雲原生實踐》一書,點選上方圖片即可下載!
作者
謝於寧(予棲) 阿里雲容器服務高階開發工程師
羅晶(瑤靖) 阿里雲容器服務高階產品經理
鄧雋  阿里雲容器服務技術專家

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

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

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

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

新發展和新挑戰

隨著雲原生技術的迅速普及,Kubernetes 已經成為事實上應用容器化平臺的標準,成為了雲原生領域的“一等公民”。

Kubernetes 以一種宣告式的容器編排與管理體系,讓軟體交付變得越來越標準化。Kubernetes 提供了統一模式的 API,能以 YAML 格式的檔案定義 Kubernetes 叢集內的資源。這一些 YAML 格式的資源定義使得 Kubernetes 能輕鬆被上下游系統所整合,完成一系列原本需要用非標準化指令碼、人工來完成的操作。同時社群根據應用交付場景及需求,在原生 YAML 格式的資源定義檔案之外衍生出了更多系列的雲原生應用交付標準,例如 Helm Chart、Opeartor、Open Application Model 等。

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

新實踐

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

  • 優化容器映象大小,降低映象傳輸成本
    • 製作基礎映象,將使用頻繁的應用或環境製作成基礎映象複用,儘可能減少映象的層數,控制每次變更層數
    • 採用多階段映象構建,將映象製作過程中的中間產物與最終產物分離,形成最精簡的應用映象
  • 優化服務端處理效能,提高請求響應速率
    • 服務端通過識別熱點映象,採用熱點資料快取等多種方式應對大規模映象 Manifest 併發拉取
  • 優化客戶端容器映象層下載方式,減少映象傳輸時間
    • 客戶端使用蜻蜓下載容器映象, 基於 P2P 方式大幅減少映象 Layer 下載時間

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

雲原生應用託管

  • 在應用交付物層面,容器映象服務企業版目前支援容器映象、Helm Chart 兩類雲原生應用資產的全生命週期管理;

  • 在訪問安全層面,產品提供了獨立網路訪問控制功能,可以細粒度控制公網及 VPC 網路的訪問策略,僅允許符合策略的來源方訪問資產,進一步保障雲原生資產的訪問安全;

  • 在訪問體驗層面,產品提供容器叢集透明拉取外掛,支援容器映象透明拉取,保障業務在彈性場景極速拉取映象,不因憑證配置有誤導致業務更新或擴容異常。

(圖為容器映象服務企業版支援雲原生應用交付)

雲原生應用交付

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

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

雲原生應用分發

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

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

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

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

新平臺

在功能及效能指標滿足雲原生應用萬節點分鐘級分發協同需求外,容器映象服務還對平臺能力進行了提升和優化,保障了分發過程的可觀測性及穩定性。同時平臺提供了整合能力,進一步延展雲原生應用分發的使用場景和價值。

穩定性

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

  • 在依賴治理方面,平臺對雲原生應用交付鏈中的相關重點環節及外部依賴進行統一管理,提升交付鏈整體交付能力,幫助使用者識別熱點倉庫及追蹤交付鏈執行結果;

  • 在限流降級方面,平臺分析識別雲原生應用分發核心環節的主次業務功能,優先保障主要業務邏輯完成,次要業務邏輯可降級延後處理;

  • 在容量規劃方面,平臺根據上下游業務變化情況,對資源進行按需擴容,確保雲原生應用正常交付完成。

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

生態整合

基於平臺提供的豐富的整合能力,使用者還可以將容器映象服務企業版作為雲原生資產託管及分發的基礎設施,為他們的使用者提供雲原生應用分發能力。

其中,容器映象服務企業版支撐阿里云云市場構建容器應用市場,支撐容器應用市場的容器商品託管及商業化分發,構建雲上雲原生生態閉環。ISV 服務商,例如 Intel、Fortinet、奧哲,將容器化商品以容器映象或者 Helm Chart 的形式在雲市場快速上架,實現標準化交付、商業化變現。市場客戶也可以從容器應用市場獲取到優質的阿里雲官方及 ISV 容器映象,快速部署至容器服務容器叢集,享受到阿里雲豐富的雲原生生態。

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

寫在最後

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

本書亮點

  • 雙11 超大規模 K8s 叢集實踐中,遇到的問題及解決方法詳述
  • 雲原生化最佳組合:Kubernetes+容器+神龍,實現核心系統 100% 上雲的技術細節
  • 雙 11 Service Mesh 超大規模落地解決方案

“阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”