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