北京冬奧會已經成為收視最高的一屆冬奧會,在轉播時長、技術、內容製作方式等多方面都書寫了新記錄。雲技術的應用,是本屆北京冬奧會賽事轉播的一大特色。
而云原生作為雲端計算的新介面,如何穩定支撐北京冬奧會多個業務系統?
九大業務場景,打造冬奧會體驗「穩穩的」
業務場景一:奧運票務,踐行ACK Anywhere,落地雲邊一體
票務系統是阿里優酷奧運小組依託大麥原有的現場服務能力,提供的奧運換驗服務。主要承載現場售票的驗證服務,提升現場服務安全、穩定性,力保為冬奧觀眾提供絲般順滑的現場服務。
為了降低驗票的時延,提升奧運觀眾的入場速率,票務系統需要分別部署在每個奧運場館中,實現驗票流程的本場館閉環,充分發揮邊緣計算大連線、低時延的優勢,提升票務的驗票體驗,減少奧運觀眾排隊等待時間。但是由於票務系統分散部署在每個奧運場館中,奧運場館距離都比較遠,為了安全考慮,部署在奧運場館的伺服器不允許有公網 IP,每個奧運場館都有自己的內網環境,這對於票務系統的開發、測試、驗證和升級部署運維都帶來了很大的挑戰。若每個場館安排幾位應用交付人員去做應用的升級和部署工作,成本太高,效率太低。
工作人員現場驗票
基於以上考慮,票務系統團隊希望開發人員能夠在雲上開發、雲上管理運維這些邊緣側節點和應用,實現雲與邊的一體化運維能力,因此急需要一套雲邊一體的架構和平臺去支撐。
阿里雲邊緣容器服務(簡稱 ACK@Edge)是一款提供標準 Kubernetes 叢集雲端託管,支援邊緣計算資源、業務快速接入、統一管理、統一運維的雲原生應用平臺,能夠幫助使用者輕鬆實現雲邊一體化協同。 使用者利用 ACK@Edge 通過納管邊緣節點將雲上應用延伸到邊緣,聯動邊緣和雲端的資料,使得邊緣節點擁有云端相同能力。在雲端提供對邊緣裝置、邊緣應用的統一 Ops 能力,保證邊緣裝置及邊緣智慧應用少運維、高可用。
基於 ACK@Edge 雲邊一體、Kubernetes 容器編排排程的能力,以及 ACK@Edge 在 Kubernetes 之上針對邊緣場景疊加的如邊緣自治、邊緣單元化、單元化部署、Tunnel 通道的能力,切實解決了票務系統應用運維的痛點,最終承載了北京、延慶、張家口三地冬奧會、冬殘奧會所有比賽場館及鳥巢開閉幕式現場票務服務的統一管理和運維業務。
ACK@Edge 針對於 Kubernetes 在邊緣計算場景提供了獨有的增強型功能:
節點單元化-邊緣節點池: 分別每個奧運場館代建立了對應的邊緣節點池,奧運場館的邊緣伺服器可以快速接入到對應的邊緣節點池中。
應用單元化-單元化部署: 票務系統通過 ACK@Edge 的單元化部署 UnitedDeployment,將業務部署到不同的奧運場館的邊緣伺服器中, 實現了在雲上統一分發應用、統一運維的能力,業務人員無需現場部署,即可實現全部奧運場館票務系統的快速升級部署工作,此功能在票務系統上線過程中發揮了重要作用。
雲端運維,遠端除錯: ACK@Edge 提供的 Tunnel 通道, 可以讓業務人員快速檢視容器日誌和進入容器除錯。
邊緣自治: ACK@Edge 的邊緣自治能力,可以在雲邊網路斷開、主機重啟這種極端情況下, 還能保證本地邊緣伺服器上的業務能正常執行。期間,ACK@Edge 團隊與票務系統團隊做了大量的斷網、重啟操作,最終證明票務系統始終正常提供服務。
截至目前,ACK@Edge 基於雲原生的雲邊一體架構, 已經廣泛用於 CDN、IoT、智慧物流、工業大腦、新零售等諸多場景。本次冬奧會票務系統的完美保障,進一步驗證了 ACK@Edge 在雲邊一體、邊緣計算領域的價值。同時阿里雲將 ACK@Edge 全部核心程式碼貢獻出來,成立了 OpenYurt 開源社群。 OpenYurt 作為 CNCF 的沙箱專案,秉承著開放、自由、中立的態度,吸引了大量來自於 VMware、中國電信、浙大實驗室、中國聯通、中國移動等公司和組織的眾多開發者參與。在《2021 中國開源年度報告》中, OpenYurt 專案進入 CNCF 中國專案活躍度 Top 10。未來,阿里雲會在邊緣計算領域擴充更多的業務場景,通過不斷打磨產品能力、壯大開源社群,來更好的服務社會。
業務場景二:奧運輕應用,基於容器服務 ASK 快速交付
因新冠疫情影響現場,現場觀賽要求比較嚴格。PinQuest 推出奧運主題冒險類手遊,可以讓使用者在手機上開啟屬於自己的“冬奧探險”之旅,讓大眾通過新奇、有趣的線上方式,增強與賽事的互動體感。
賽事的不同導致遊戲線上人數實時變化,因此需要具備極致彈性的能力。該遊戲基於 ASK(阿里雲容器服務 Serverless 版)提供的極致彈效能力部署關鍵模組,後臺服務可實時擴容,讓使用者體驗如絲般順滑。
ASK 叢集是阿里雲推出的無伺服器 Kubernetes 容器服務。使用者無需購買節點即可直接部署容器應用,無需對叢集進行節點維護和容量規劃,並且根據應用配置的 CPU 和記憶體資源量進行按需付費。 ASK 叢集提供完善的 Kubernetes 相容能力,同時降低了 Kubernetes 使用門檻,讓使用者更專注於應用程式,而不是管理底層基礎設施。
業務場景三:冬奧核心系統,從容應對大規模突發網路流量
冬奧核心系統是整個冬奧會和冬殘奧會資訊服務的重要載體,整合賽事相關資訊,提供服務功能模組,實現“一個 APP 走冬奧”的個性化服務,也為賽會組織和執行提供行動通訊協同和共享服務平臺。冬奧核心系統是奧運會最重要的賽時核心系統之一。
其中,冬奧移動服務由北京冬奧組委提供,主要提供賽事資訊、即時通訊,以及冬奧會交通、餐飲、住宿、抵離、場館等業務領域的移動資訊服務功能。城市移動服務主要提供場館以外的吃、住、行、遊、購、娛等服務資訊。舉個例子,健康填報功能與運動員息息相關,海外抵達的運動員需要在冬奧通上進行健康填報,才可以順利開啟比賽計劃,這只是冬奧核心系統功能的一個例子。總的來說,穩定性至關重要。
冬奧核心系統基於 ACK 叢集實現了前端、代理和後臺等服務。在這些種類繁多的業務中,系統統一頁面入口部署在 ACK 叢集上,也就是說客戶的流量需要經過 ACK 才能訪問到如上各種豐富的後臺服務,流量鏈路非常複雜。
壓測期間,在高流量、高併發訪問的場景下,客戶端請求錯誤率持續上升,成為上線阻礙。接到問題請求後,阿里雲容器服務 ACK 團隊第一時間會同客戶在叢集的各級鏈路部署了效能觀測埋點。經過排查,ACK 團隊發現該業務鏈路以短連線請求為主,作為流量入口的七層 SLB 在高併發場景下會高頻地複用源埠,產生五元組衝突。經過詳細驗證,通過優化 Time-Wait 狀態 TCP 會話的回收時間等手段,將壓測流量提升到原來兩倍,錯誤率降低到 0%,解決了冬奧核心系統上線前的一個重要的阻礙點,最終成功保障了冬奧會全程的穩定。
冬奧核心系統後臺應用為 Java 系的微服務架構,包含了近千個 Kubernetes 的 Deployment 應用例項,這些應用例項混部在叢集的大量節點上,既要高效的利用資源,又不能讓這些應用間互相影響,這給資源的共享和隔離帶來了比較大的挑戰。
容器團隊通過節點超賣評估、JVM 記憶體引數檢查、Pod 資源調優、Pod 瓶頸和 OOM 實時監控等手段,對應用配置做調優,使叢集的資源利用率和業務穩定性達到平衡。特別是在 JVM 本身的記憶體管理和實際的 Pod 記憶體限制帶來的一系列匹配問題上,ACK 引入了自動化評估配置合理性的手段來快速發現異常的記憶體配置,避免冬奧會期間應用的 OOM 的產生,保障了賽事期間的應用穩定性。
業務場景四:奧運新聞釋出平臺,平穩執行背後的一站式容器智慧診斷
InfoAV 是北京冬奧會的新聞釋出會平臺,承接了本屆奧運會全部釋出會的直播、導播、點播的核心功能,涵蓋如賽前採訪、賽後運動員群體採訪等。最初,客戶基於自建 Kubernetes 部署 InfoAV 業務,但是遇到了無法同城容災、運維困難等問題。
採用容器服務 ACK 後,顯著加快了業務的上雲和遷雲。 InfoAV 所在的 ACK 叢集不論是 Kubernetes Master 還是 Kubernetes Worker,都實現了同城多資料中心級別的高可用和容災能力;InfoAV 使用了 ARMS 豐富的可觀測效能力,高精度觀測到 Kubernetes 叢集資源、元件、流量等指標,有力提升了客戶的保障能力。
架構上,InfoAV 基於 ACK 部署的業務包括視音訊編輯、媒體內容管理等業務。InfoAV 系統的業務特點是計算密集型、負載高,因此 ACK 提供的快速全面的日常巡檢能力,顯著提升了保障的可靠性。
InfoAV介面,新聞釋出會現場
業務場景五:奧運全球化業務,雲原生應用製品安全託管和高效分發最佳實踐
北京冬奧的容器化業務,無論是線上場景的 APP、InfoAV 業務,或是邊緣場景的奧運票務業務以及 Serverless 場景下的 PinQuest 遊戲業務,都對業務應用容器映象分發的安全性、穩定性、規模化提出了不同要求。北京冬奧業務擴大至全球 5 個地域,啟用了 14 個 ACR 例項來保障冬奧業務容器化應用部署、擴容、快恢等鏈路。
阿里雲容器映象服務(簡稱 ACR)是雲原生架構重要基礎設施之一,負責託管和分發雲原生應用製品。其中 ACR 企業版為冬奧業務提供企業級雲原生應用製品安全託管及高效分發能力。
本次冬奧業務涉及近 200+ 應用容器映象,通過 ACK、ASK、ACK@Edge、EDAS、ECS 多種形式在邊緣、Serverless、線上場景下進行部署,保障容器映象的安全性,確保複雜場景下的穩定、高效分發。
針對冬奧業務的安全性要求, ACR 企業版提供公網、VPC 訪問控制能力,控制業務應用容器映象更新及分發源;同時針對容器映象本身的安全性保障訴求,ACR 企業版提供了涵蓋容器映象漏洞掃描及修復、容器映象加簽及驗籤、分發安全阻斷等雲原生應用交付 DevSecOps 能力,進一步降低業務應用釋出更新後的潛在風險。
針對邊緣場景, ACR 企業版支援在邊緣節點中部署邊緣前置例項,提供分發快取、邊緣 P2P 組網等分發加速能力,提升雲邊互聯場景下容器映象分發效率。此外針對全球化業務,ACR 企業版也提供了全球同步能力支援容器應用全球多地域部署、容災業務。
除業務鏈路保障外,在本次冬奧會保障過程中,藉助於企業版例項全景監控及業務異常分析,ACR 企業版能夠快速識別使用者業務應用容器化部署異常並反饋給客戶,讓客戶能夠第一時間解決因憑證、許可權、配置錯誤等原因導致的應用釋出失敗問題。同時依託於叢集事件及監控實現全鏈路容器映象分發問題識別及診斷,如本次冬奧會過程中識別到節點重啟後 DNS 短暫解析異常導致節點拉取映象失敗(即應用恢復失敗)的現象,能夠讓客戶提前更合理地規劃應用水位,提升應用整體穩定性。
業務場景六:資料交換與共享平臺,基於雲原生微服務的“資料中臺”
2022 年北京冬奧會和冬殘奧會資料交換與資料共享平臺(以下簡稱交換共享平臺)負責為組委會提供委內系統、組委外專線資料來源以及網際網路資料來源的資料交換、資料共享服務,是名副其實的“資料中臺”。此係統是所有云上核心系統群的資料中樞和資料大腦 ,承擔了雲上資料匯聚、資料過濾、資料投遞,以及資料保護的功能。
交換共享平臺基於 Spring Cloud 微服務架構設計,並 依託企業級分散式應用服務 EDAS 實現了應用全生命週期管理、微服務治理能力和環境隔離管理能力。 EDAS 企業服務助力交換共享平臺完成了快速上雲、迭代釋出和執行支援。
應用生命週期管理: EDAS 對業務所在的 ECS 叢集進行管理,提供應用分批發布、灰度釋出等豐富的釋出策略,以及變更記錄、日誌查詢等功能,大大提高了交換共享平臺的應用釋出和運維管理能力。
微服務治理: 提供應用監控、限流降級、全鏈路灰度等功能,確保了交換共享平臺的高可用性。
環境隔離管理: 通過微服務空間劃分了生產環境和測試環境,保證環境之間資料、流量隔離;並支援服務東西向鑑權,確保交換共享平臺的安全性。
本次冬奧會秉承雲上綠色奧運理念,圍繞賽事直播、資料釋出、人員管理等多個場景構建了類似 ADS 人員抵離、MDV 資料大屏、InfoAV 資料釋出、RHP 約車出行等 20 多個數字化管理系統。這些系統之間伴隨業務邏輯會產生大量資料交換的需求。
由於業務子系統眾多、業務邏輯分類複雜,傳統的系統間同步呼叫會導致各子系統耦合度大幅提升、系統資料鏈路治理困難等問題。北京奧組委技術架構組採用了基於訊息佇列構建統一的 DES 資料交換平臺,通過規範化資料格式和通訊方式解決系統的耦合性和複雜性問題,為組委會內部系統、組委會外部專線資料來源以及網際網路資料來源提供資料交換、資料共享服務。
在北京冬奧會 DES 資料交換平臺中,使用阿里雲 RocketMQ 構建了底層的非同步可靠通訊通道:
- 各方資料來源子系統通過統一的 API 規範上報資料到 DES 閘道器。
- DES 閘道器進行資料格式、許可權校驗後,進行簡單資料封裝和格式轉換,寫入到後端的 RocketMQ 主題。
- 下游資料消費方子系統訂閱 RocketMQ 主題獲取自身需要的資料,實現和上游系統的完全解耦。
冬奧會期間,基於 DES 資料分發平臺傳輸的資料有兩類,一類是任務同步型資料,例如需要的人員註冊資訊,核心 OMS 系統生成註冊資訊後推送到 DES,再由冬奧核心系統後臺訂閱拉取人員資訊實現登入認證;另一類實時通知類資料,例如賽事賽程、獎牌榜和氣象資料,通過內部 ODF 系統產生實時成績資料併發布到 DES,再由訊息佇列推送到下游系統做大屏展示。
業務場景七:RocketMQ承載冬奧ADS抵離和RHP約車出行突發流量
冬奧期間,伴隨著國內外眾多人員的出入境和日常出行需求,北京奧組委技術架構組為人員出行管理設計實現了 ADS 人員抵離系統以及 RHP 約車出行系統。ADS 人員抵離系統負責從首都機場和移民局接收人員的抵離行程資訊和出入境資訊,寫入後臺管理系統,方便後續推送處理。RHP 約車出行系統則需要管理大量的網約車訂單管理。
由於冬奧期間人員流動存在極大的不確定性,出行人員的出入境和出行資料處理存在不確定的流量壓力。北京奧組委技術架構組在實現資料處理過程中,使用了阿里雲訊息佇列 RocketMQ 來做流量緩衝和可靠資料傳遞,系統鏈路如下:
ADS 和 RHP 的閘道器係統接收來自外部的資料呼叫,校驗合法性。
閘道器係統內建 RocketMQ SDK,將流量呼叫寫入 RocketMQ 訊息做非同步緩衝,避免突發流量打垮後臺資料庫等系統。
後臺處理系統非同步消費訊息實現流量平滑寫資料庫等系統,如果遇到寫入問題則使用 RocketMQ 可靠重試機制做重試處理。
藉助 RocketMQ 億級堆積能力和海量併發寫能力,RHP 出行系統平滑承載了冬奧期間 6000+ 司機乘客的出行管理需求以及全部人員的出入境管理和推送需求。
業務場景八:雲端一體,MQTT支援央視新聞App海量使用者評論轉發
央視新聞 APP 中,在直播間使用微訊息佇列 MQTT 版實現使用者的評論傳送,接收其他使用者的評論資訊。2 月 4 日,央視新聞 APP 直播了冬奧會的開幕式,開幕式開始後,微訊息佇列 MQTT 版平均訊息併發數十萬,當中國隊出場時,評論區沸騰,2 分鐘內達到了百萬,全程上、下行訊息總量數十億。
阿里雲微訊息佇列 MQTT 版是基於開源 MQTT 3.1.1 協議構建的端與雲互通的訊息中介軟體,適用於物聯網,移動網際網路業務場景。通過 MQTT 客戶端-伺服器的訊息釋出/訂閱傳輸模式,為低頻寬和不穩定的網路環境中的裝置提供可靠的訊息傳輸服務。而且,在業務高峰期如果出現了效能瓶頸,通過微訊息佇列 MQTT 版的負載均衡訊息推送能力,只需要快速升級規格增加應用例項的數量,就能對使用者無感實現水平線性的應用消費能力提升。
通過使用微訊息佇列 MQTT 版,開發者不需要在應用層關心弱網路環境、斷線重連、異常處理、海量併發、系統高可用等複雜的技術問題,極大程度上降低了開發成本,提升了使用者體驗和業務的快速上線。
業務場景九:極速生成縮圖,Serverless支撐賽事轉播
視訊縮圖是在視訊中某一幀動畫的縮圖,相當於將視訊的封面或其中一幀的畫面內容轉換成了圖片檔案,選取的視訊縮圖能夠把視訊中亮點畫面突出顯示,快速抓住使用者眼球,提高點選播放率,賽事視訊縮圖與普通視訊縮圖有些不同,需要對海量視訊做更為快速實時的抓取。
函式計算支援的客戶需要對北京冬奧會的海量比賽直播視訊進行實時處理,在直播視訊裡的不同時間點上做截圖(專業術語 "視訊圖片採集"), 客戶的需求如下:
需要定時事件觸發截圖操作
客戶只想集中精力在具體的邏輯開發, 核心視訊截圖邏輯程式碼量不大, 需要快速完成開發
客戶不希望管理部署虛擬機器/物理機,希望越簡單越好
客戶需要這個核心業務邏輯具有彈性高可用, 免運維
通過使用阿里雲函式計算(FC),使用者開發了視訊截圖的核心業務程式碼,開發成本低,一鍵部署,即得到了一個彈性高可用免運維的直播視訊截圖服務,幫助實現冬奧視訊亮點實時抓取。
全面的保障體系,為冬奧會護航
在此前的東京奧運會上,阿里雲容器服務 ACK 通過一體化運維、全場景診斷和完善的保障體系支援了奧運會的順利執行。而本次的 2022 北京冬奧會,容器服務 ACK 加強了保障能力,提供新的資料化、精細化運維,打造更立體的護航保障體系。
資料化運維
容器服務 ACK 的統一運維平臺整合了全網叢集的監控、告警、事件、日誌、巡檢、後設資料管理等功能,可以實時觀測、管理全網 24 個地域的數萬叢集。但資料來源分散異構且碎片化讓運維壓力較大,無法做關聯分析,因此容器服務 ACK 按照標準的大資料體系構建數倉平臺,將資料統一清洗並結構化儲存,並按統計需求進行分層建模,提供富有運維語義的實時+離線資料模型。
建模好的資料可以直接繪圖分析或用於報警,如量化叢集健康程度:通過元件配置、監控值、事件/日誌異常、歷史水位等計算元件健康分,然後結合節點、工單、配額規格等加權計算叢集整體健康分。再以該模型為基礎,繪製寬表並按多維度聚合,展示高危項,並統一治理健康分低的叢集。
異常分析
容器服務 ACK 運維平臺將叢集 Events 和元件日誌進行清洗並統一格式儲存,針對異常內容進行告警和趨勢分析。對全網各型別叢集進行異常歸類,提前發現,並專項分級解決,保證核心業務重要時段不受影響。
同時,以 SLO 定義驅動可觀測性體系,針對 Kubernetes 的容量規模建設效能壓測常態化能力,對 Kubernetes 叢集核心 Verb 的 QPS 數有明確瞭解,同時結合不同工作負載場景進行 SLO 梳理,持續關注請求量、延遲、錯誤數、飽和度等黃金指標。
叢集級別灰度和封網
對於重保活動,容器服務 ACK 有完整專業的預案管理體系,大型活動保障期間遵循阿里雲整體的管控計劃,執行特定範圍、特定時段的封網。本次北京冬奧會,ACK 將封網管控細化到叢集級別,對重保叢集的運維操作需要單獨申請特定許可權,讀寫操作分兩級申請,釋出變更需要走特殊審批流程,一鍵回收已有許可權並重新下發特定人員。
通過細化到叢集維度的灰度管控,可以更嚴格的控制風險範圍,同時避免大範圍攔截,影響常規運維。
完善的保障預案體系
針對奧運會,容器服務基於已有的保障流程,針對性地制定了全程保障方案,包括提前預案、應急預案、故障演練、值班排期等。容器服務有豐富的保障經驗,每年例行的保障活動包括每年的雙十一、618、春節等,這些大型保障活動複雜而全面,容器服務每年在這些活動過程中取得了近乎 0 故障的佳績。
除了上述重大保障活動,容器服務內部有常態化的基於混沌的故障演練和突襲,混沌系統隨機注入故障,容器團隊值班人員會收到告警並根據預案系統中的預案,立即進行處理;經過常態化的訓練,團隊的應急處理能力錘鍊得成熟默契,可以很好的實現 1-5-10(1 分鐘內發出警報、5 分鐘內定位故障、10 分鐘內修復故障)的目標和方法論。這些經過實戰反覆打磨的保障體系,運用到了奧運會保障專項中,有力保障和支援了奧運會的穩定執行。
對奧運叢集的提前預案,在賽事開始前會對每個奧運重保叢集實施,可以最大程度上發現並提前消除風險點。巡檢方式包括千舟平臺和自動化巡檢指令碼,檢查專案覆蓋叢集節點和元件的水位和狀態、網路流量、Pod 是否按可用區打散、關鍵元件(CoreDNS、Ingress Controller 等)配置和技術指標、Kubernetes 事件等多維度;執行每日巡檢的機制,可以持續發現新增問題,並快速反饋客戶修正。
以 ACK 叢集的 Apiserver 相關的預案為例來解釋一下。ACK 具有精細化的流控策略,可以針對壓測和故障演練過程中發現的異常進行防護能力建設。具體實現上,阿里雲容器服務內建了自研的 UserAgentLimiter 進一步做精細化限流,更加全面的保障 Kubernetes。Apiserver 應急預案可以基於如上策略,快速下發限流配置,秒級穩定 Apiserver,快速恢復叢集。
完善全面且持續迭代的應急預案,是故障發生後快速止血、保障業務的必備武器。針對北京冬奧運會保障,容器服務 ACK 和容器映象服務 ACR 準備了針對中心管控和運維、管控鏈路、使用者面、資料面 4 個大類的幾十個應急預案並多次演練,全面覆蓋高風險故障場景。確保如果險情發生,保障人員有嚴謹的步驟和流程來逐步操作,顯著提升了應急響應的速度和效果。
極致的彈效能力
大型賽事、直播等業務場景,往往伴隨著特定時間點的突發業務流量,對系統的壓力也是實時變化的。阿里雲訊息佇列提供 Serverless 按需服務能力,業務規模 5000 TPS 併發以內可以實時彈性,業務完全無感。超大規模併發也可以隨時升級鉑金版規格,分鐘級平滑擴容,單例項最高支援 100 萬 TPS。
在冬奧開模式期間,央視直播客戶端大量的使用者直播評論帶來系統壓力的上升。微訊息佇列 MQTT 版及時擴容到單例項 100 萬 TPS 規格,極強的彈效能力保障了系統的穩定執行。
不說再見
北京冬奧會已經閉幕
但云原生的保障護航還在繼續
在即將到來的冬殘奧會
我們也將全力以赴
穩穩的!