云原生应用万节点分钟级分发协同实践
作者
謝于寧(予棲) 阿里云容器服務(wù)高級開發(fā)工程師
羅晶(瑤靖) 阿里云容器服務(wù)高級產(chǎn)品經(jīng)理
鄧雋 阿里云容器服務(wù)技術(shù)專家
導(dǎo)讀:2019 年天貓 雙11,阿里巴巴核心系統(tǒng)首次實現(xiàn) 100% 上云。面對全球最大的交易洪峰,阿里云扛住了每秒 54.4 萬筆的交易峰值,這是“云原生”與“天貓全球狂歡節(jié)”的一次完美聯(lián)名。
(圖為 2019 年天貓 雙11 成交額)
容器鏡像服務(wù)作為阿里巴巴經(jīng)濟體云原生領(lǐng)域的重要基礎(chǔ)設(shè)施之一,早在 雙11 備戰(zhàn)期間就已面臨大規(guī)模分發(fā)需求。為了更好地支持這一需求,產(chǎn)品提前進行規(guī)劃及迭代更新,全面提升了大規(guī)模分發(fā)場景下的性能、可觀測性和穩(wěn)定性。在新的 雙11 來臨前,容器鏡像服務(wù)新增了數(shù) PB 的鏡像數(shù)據(jù),月均鏡像拉取達數(shù)億次。同時產(chǎn)品提供了云原生應(yīng)用交付鏈等功能,全面覆蓋阿里巴巴經(jīng)濟體及云上用戶在云原生時代的使用需求。
本文將介紹容器鏡像服務(wù)如何通過提升產(chǎn)品能力來應(yīng)對云原生應(yīng)用萬節(jié)點分發(fā)場景下的新發(fā)展和新挑戰(zhàn)。
新發(fā)展和新挑戰(zhàn)
隨著云原生技術(shù)的迅速普及,Kubernetes 已經(jīng)成為事實上應(yīng)用容器化平臺的標準,成為了云原生領(lǐng)域的“一等公民”。
Kubernetes 以一種聲明式的容器編排與管理體系,讓軟件交付變得越來越標準化。Kubernetes 提供了統(tǒng)一模式的 API,能以 YAML 格式的文件定義 Kubernetes 集群內(nèi)的資源。這一些 YAML 格式的資源定義使得 Kubernetes 能輕松被上下游系統(tǒng)所集成,完成一系列原本需要用非標準化腳本、人工來完成的操作。同時社區(qū)根據(jù)應(yīng)用交付場景及需求,在原生 YAML 格式的資源定義文件之外衍生出了更多系列的云原生應(yīng)用交付標準,例如 Helm Chart、Opeartor、Open Application Model 等。
(圖為云原生應(yīng)用交付標準演進)
除了云原生應(yīng)用交付標準推陳出新,用戶對交付方式也提出了更高的要求。越來越多的用戶期望能以流程化、自動化、更安全的方式交付云原生應(yīng)用,因此單純的萬節(jié)點分發(fā)場景已經(jīng)演化成萬節(jié)點分鐘級多環(huán)節(jié)協(xié)同分發(fā)。再加上全球化業(yè)務(wù)發(fā)展,這意味著在分鐘級時間內(nèi)完成各個環(huán)節(jié)之后,還需再完成全球化分發(fā),這對支撐云生應(yīng)用分發(fā)的平臺提出了更高的要求。
新實踐
通過控制容器鏡像大小、采用 P2P 分發(fā)鏡像層、優(yōu)化 Registry 服務(wù)端等方式,我們極大優(yōu)化了大規(guī)模分發(fā)的性能,最終達成了萬節(jié)點分鐘級分發(fā)的目標:
-
優(yōu)化容器鏡像大小,降低鏡像傳輸成本
- 制作基礎(chǔ)鏡像,將使用頻繁的應(yīng)用或環(huán)境制作成基礎(chǔ)鏡像復(fù)用,盡可能減少鏡像的層數(shù),控制每次變更層數(shù)
- 采用多階段鏡像構(gòu)建,將鏡像制作過程中的中間產(chǎn)物與最終產(chǎn)物分離,形成最精簡的應(yīng)用鏡像
-
優(yōu)化服務(wù)端處理性能,提高請求響應(yīng)速率
- 服務(wù)端通過識別熱點鏡像,采用熱點數(shù)據(jù)緩存等多種方式應(yīng)對大規(guī)模鏡像 Manifest 并發(fā)拉取
-
優(yōu)化客戶端容器鏡像層下載方式,減少鏡像傳輸時間
- 客戶端使用蜻蜓下載容器鏡像, 基于 P2P 方式大幅減少鏡像 Layer 下載時間
(圖為鏡像大規(guī)模分發(fā)的優(yōu)化策略)
為了讓擁有同樣需求的企業(yè)客戶能夠享受到如上一致的分發(fā)能力和體驗,容器鏡像服務(wù)產(chǎn)品在 2019 年 3 月正式推出了容器鏡像服務(wù)企業(yè)版(ACR Enterprise Edition)。容器鏡像服務(wù)企業(yè)版提供了企業(yè)級云原生資產(chǎn)托管能力以及云原生應(yīng)用全球化同步、大規(guī)模分發(fā)能力,適合有著高安全需求、多地域業(yè)務(wù)部署、擁有大規(guī)模集群節(jié)點的企業(yè)級容器客戶。除此之外,容器鏡像服務(wù)企業(yè)版還在云原生資產(chǎn)托管、交付、分發(fā)等幾個方面進一步提升云原生應(yīng)用萬節(jié)點分鐘級分發(fā)協(xié)同體驗。
云原生應(yīng)用托管
-
在應(yīng)用交付物層面,容器鏡像服務(wù)企業(yè)版目前支持容器鏡像、**Helm Chart **兩類云原生應(yīng)用資產(chǎn)的全生命周期管理;
-
在訪問安全層面,產(chǎn)品提供了獨立網(wǎng)絡(luò)訪問控制功能,可以細粒度控制公網(wǎng)及 VPC 網(wǎng)絡(luò)的訪問策略,僅允許符合策略的來源方訪問資產(chǎn),進一步保障云原生資產(chǎn)的訪問安全;
-
在訪問體驗層面,產(chǎn)品提供容器集群透明拉取插件,支持容器鏡像透明拉取,保障業(yè)務(wù)在彈性場景極速拉取鏡像,不因憑證配置有誤導(dǎo)致業(yè)務(wù)更新或擴容異常。
(圖為容器鏡像服務(wù)企業(yè)版支持云原生應(yīng)用交付)
云原生應(yīng)用交付
云原生應(yīng)用生產(chǎn)環(huán)節(jié),用戶可以直接上傳托管容器鏡像、Helm Chart 等云原生資產(chǎn);也可以通過構(gòu)建功能自動從源代碼(Github、阿里云 Code、GitLab 等來源)智能構(gòu)建成容器鏡像。同時為了解決流程化、自動化、更安全的方式交付云原生應(yīng)用這一需求,容器鏡像服務(wù)企業(yè)版引入了云原生應(yīng)用交付鏈功能。云原生應(yīng)用交付鏈以云原生應(yīng)用托管為始,以云原生應(yīng)用分發(fā)為終,全鏈路可觀測、可追蹤、可自主設(shè)置。可以實現(xiàn)一次應(yīng)用變更,全球化多場景自動交付,從流程層面極大地提升了云原生應(yīng)用萬節(jié)點分發(fā)的效率及安全性。
(圖為控制臺創(chuàng)建云原生應(yīng)用交付鏈)
云原生應(yīng)用交付環(huán)節(jié),支持自動發(fā)起靜態(tài)安全掃描并自定義配置安全阻斷策略。一旦識別到靜態(tài)應(yīng)用中存在高危漏洞后,可自動阻斷后續(xù)部署鏈路。用戶可基于漏洞報告中的修復(fù)建議,更新優(yōu)化構(gòu)建成新的鏡像版本,再次發(fā)起交付。
云原生應(yīng)用分發(fā)
云原生應(yīng)用分發(fā)環(huán)節(jié),當前置環(huán)節(jié)完成無阻斷后,云原生應(yīng)用正式進入全球化分發(fā)及大規(guī)模分發(fā)環(huán)節(jié)。為了保障萬節(jié)點分鐘級分發(fā)協(xié)同完成,容器鏡像服務(wù)聯(lián)合容器服務(wù)、彈性容器實例等云產(chǎn)品提供了端到端的極致分發(fā)體驗。針對全球化分發(fā),由于基于細粒度同步策略調(diào)度、同步鏈路優(yōu)化等優(yōu)化手段,云原生應(yīng)用的全球同步效率相比手動同步提升了** 7 倍**。
(圖為云原生應(yīng)用的全球化分發(fā))
在 P2P 大規(guī)模分發(fā)方面,產(chǎn)品針對云環(huán)境多次優(yōu)化基于 Dragonfly 的分發(fā)方案,最終通過多個創(chuàng)新技術(shù)解決了大規(guī)模文件下載以及跨網(wǎng)絡(luò)隔離等場景下各種文件分發(fā)難題,大幅提高大規(guī)模容器鏡像分發(fā)能力。平均鏡像大規(guī)模分發(fā)效率比普通方式提高數(shù)倍,適用于容器集群單集群節(jié)點數(shù)達 100 及以上的場景。
(圖為基于 P2P 的分發(fā)流程示意)
除了 P2P 大規(guī)模分發(fā)手段外,為了更好地滿足特定場景下的大規(guī)模分發(fā)需求,產(chǎn)品還支持基于鏡像快照的大規(guī)模分發(fā)方式。基于鏡像快照的分發(fā)方式,可避免或減少鏡像層的下載,極大提高彈性容器實例創(chuàng)建速度。在容器集群(ASK)及彈性容器實例(ECI)的聯(lián)合使用場景下,產(chǎn)品可以支持** 500 節(jié)點秒級**鏡像拉取,實現(xiàn)業(yè)務(wù)突發(fā)場景下極速擴容。
新平臺
在功能及性能指標滿足云原生應(yīng)用萬節(jié)點分鐘級分發(fā)協(xié)同需求外,容器鏡像服務(wù)還對平臺能力進行了提升和優(yōu)化,保障了分發(fā)過程的可觀測性及穩(wěn)定性。同時平臺提供了集成能力,進一步延展云原生應(yīng)用分發(fā)的使用場景和價值。
穩(wěn)定性
穩(wěn)定性層面的具體提升及優(yōu)化工作從監(jiān)控報警、容錯容災(zāi)、依賴治理、限流降級、容量規(guī)劃等幾個方面展開。
-
在依賴治理方面,平臺對云原生應(yīng)用交付鏈中的相關(guān)重點環(huán)節(jié)及外部依賴進行統(tǒng)一管理,提升交付鏈整體交付能力,幫助用戶識別熱點倉庫及追蹤交付鏈執(zhí)行結(jié)果;
-
在限流降級方面,平臺分析識別云原生應(yīng)用分發(fā)核心環(huán)節(jié)的主次業(yè)務(wù)功能,優(yōu)先保障主要業(yè)務(wù)邏輯完成,次要業(yè)務(wù)邏輯可降級延后處理;
-
在容量規(guī)劃方面,平臺根據(jù)上下游業(yè)務(wù)變化情況,對資源進行按需擴容,確保云原生應(yīng)用正常交付完成。
(圖為平臺的穩(wěn)定性保障策略)
生態(tài)集成
基于平臺提供的豐富的集成能力,用戶還可以將容器鏡像服務(wù)企業(yè)版作為云原生資產(chǎn)托管及分發(fā)的基礎(chǔ)設(shè)施,為他們的用戶提供云原生應(yīng)用分發(fā)能力。
其中,容器鏡像服務(wù)企業(yè)版支撐阿里云云市場構(gòu)建容器應(yīng)用市場,支撐容器應(yīng)用市場的容器商品托管及商業(yè)化分發(fā),構(gòu)建云上云原生生態(tài)閉環(huán)。ISV 服務(wù)商,例如 Intel、Fortinet、奧哲,將容器化商品以容器鏡像或者 Helm Chart 的形式在云市場快速上架,實現(xiàn)標準化交付、商業(yè)化變現(xiàn)。市場客戶也可以從容器應(yīng)用市場獲取到優(yōu)質(zhì)的阿里云官方及 ISV 容器鏡像,快速部署至容器服務(wù)容器集群,享受到阿里云豐富的云原生生態(tài)。
(圖為容器應(yīng)用市場流程示意)
寫在最后
從支持阿里巴巴 雙11 大規(guī)模分發(fā)需求,到全面覆蓋阿里巴巴經(jīng)濟體及云用戶的云原生資產(chǎn)托管及分發(fā)需求,再到支撐構(gòu)建云上容器生態(tài)閉環(huán),阿里云容器鏡像服務(wù)已成為了云原生時代的核心基礎(chǔ)設(shè)施之一,釋放云原生價值的重要加速器。容器鏡像服務(wù)也將持續(xù)為用戶帶來更加優(yōu)異的云原生應(yīng)用分發(fā)功能、性能及體驗。
本書亮點
- 雙11 超大規(guī)模 K8s 集群實踐中,遇到的問題及解決方法詳述
- 云原生化最佳組合:Kubernetes 容器 神龍,實現(xiàn)核心系統(tǒng) 100% 上云的技術(shù)細節(jié)
- 雙 11 Service Mesh 超大規(guī)模落地解決方案
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)圈。”
總結(jié)
以上是生活随笔為你收集整理的云原生应用万节点分钟级分发协同实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移植 Python 量化交易 TA-Li
- 下一篇: PouchContainer 容器技术演