1. 簡介
雲端應用從單體式架構轉向鬆散耦合的微服務,為資源管理帶來了顯著的複雜性。開發者必須決定為每個微服務分配多少計算資源(例如容器副本、虛擬機器)。這個決定對開發者的營運成本和應用使用者體驗的端到端延遲有著至關重要的影響。傳統的自動擴展方法,例如水平 Pod 自動擴展(HPA),是基於 CPU 使用率等本地指標,獨立地擴展每個微服務。然而,這種方法並非最佳,因為它忽略了應用工作流程中微服務相互依存的特性。COLA(集體自動擴展器)被提出作為一種解決方案,它以全域目標為導向,在所有微服務之間集體分配資源:在確保應用端到端延遲低於指定目標的同時,最小化美元成本。
2. 獨立自動擴展的問題
目前業界標準的自動擴展以分散式、每個微服務獨立的方式運作。當每個服務自身的資源使用率(CPU、記憶體)超過閾值時,便觸發擴展動作(新增/移除虛擬機器或 Pod)。其根本缺陷在於,這種局部視角未能考慮應用的全域效能。如果鏈中的另一個服務仍然是瓶頸,那麼改善一個微服務的延遲,對整體使用者感知的延遲影響可能微乎其微。這導致資源分配效率低下——過度配置某些服務,同時對關鍵瓶頸配置不足——結果是成本更高,卻未能達到期望的延遲服務等級目標(SLO)。
3. COLA:集體自動擴展方法
COLA 將自動擴展問題重新定義為一個約束優化問題。它用一個單一的集中式控制器取代了多個獨立的自動擴展器,該控制器對應用的微服務拓撲和效能具有全域可見性。
3.1. 核心優化框架
目標被形式化為:
- 目標: 最小化總計算成本。
- 約束: 應用端到端平均或尾部延遲 ≤ 目標延遲。
- 決策變數: 分配給每個微服務 $i$ 的虛擬機器(或副本)數量,記為 $n_i$。
這是一個複雜的非線性優化問題,因為 $n_i$ 與端到端延遲之間的關係並非直觀,且取決於工作負載模式和服務間通訊。
3.2. 離線搜尋流程
由於資源配置和效能穩定所需的時間,線上解決此優化問題是不切實際的。因此,COLA 採用一種離線搜尋流程:
- 施加工作負載: 對應用施加一個具代表性的工作負載。
- 識別瓶頸: 識別最擁塞的微服務(在負載下 CPU 使用率增加最多)。
- 透過多臂吃角子老虎機問題分配資源: 對於瓶頸服務,使用多臂吃角子老虎機公式來確定最佳的虛擬機器數量。「獎勵」函數平衡了延遲改善與成本增加。
- 迭代: 對下一個最擁塞的微服務重複步驟 2-3,直到滿足全域延遲目標。
- 策略生成: 結果是一個擴展策略(從工作負載特徵到資源分配的映射),可以部署到線上環境。
COLA 可以在已知的工作負載之間進行插值,如果遇到未見過的工作負載模式,則會回退到預設的自動擴展器。
4. 技術細節與數學公式
核心優化問題可以抽象地表示為:
$$\min_{\{n_i\}} \sum_{i=1}^{M} C_i(n_i)$$ $$\text{subject to: } L_{e2e}(\{n_i\}, \lambda) \leq L_{target}$$ $$n_i \in \mathbb{Z}^+$$ 其中:
- $M$:微服務數量。
- $n_i$:微服務 $i$ 的資源單位(例如虛擬機器)數量。
- $C_i(n_i)$:微服務 $i$ 擁有 $n_i$ 單位資源時的成本函數。
- $L_{e2e}$:端到端延遲函數,依賴於所有 $n_i$ 和工作負載強度 $\lambda$。
- $L_{target}$:期望的延遲 SLO。
5. 實驗結果與評估
COLA 在 Google Kubernetes Engine(GKE)上與多種基準自動擴展器(基於使用率和基於機器學習)進行了嚴格的評估。
5.1. 實驗設定
- 應用: 5 個開源微服務應用(例如 Simple WebServer、BookInfo、Online Boutique)。
- 平台: GKE Standard(使用者管理節點)和 GKE Autopilot(供應商管理基礎架構)。
- 基準: 標準 HPA(基於 CPU)、進階基於機器學習的自動擴展器。
- 工作負載: 63 種不同的工作負載模式。
- 目標: 滿足指定的中位數或尾部(例如 p95)延遲 SLO。
5.2. 關鍵效能指標
SLO 達成率
53/63
COLA 達到延遲目標的工作負載數量。
平均成本降低
19.3%
與次便宜的自動擴展器相比。
最具成本效益的策略
48/53
在 53 個成功的工作負載中,COLA 在 48 個上是最便宜的。
小型應用上的最優性
~90%
對於可以進行窮舉搜尋的較小應用,COLA 在大約 90% 的情況下找到了最佳配置。
5.3. 結果摘要
結果展示了 COLA 的顯著優勢。它在其他方法失敗的情況下,始終如一地達到了期望的延遲 SLO,並且成本大幅降低。成本節省如此顯著,以至於運行 COLA 離線搜尋的「訓練成本」在幾天內的操作中就能收回。在 GKE Autopilot 上,COLA 的優勢更加明顯,因為它有效地駕馭了供應商管理的抽象層以最小化成本。
圖表描述(想像): 長條圖可能會在 Y 軸顯示「每個成功請求的成本」或「叢集總成本」,在 X 軸顯示不同的自動擴展器(COLA、HPA、ML-A)。COLA 的長條會顯著更低。第二張圖可能顯示「延遲 SLO 違反率」,其中 COLA 的長條接近零,而其他則顯示較高的違反率。
6. 分析框架與範例案例
分析師觀點:四步解構
核心洞見: 這篇論文的根本突破並非一個花哨的新演算法,而是一個關鍵的視角轉變:將整個微服務應用視為一個需要優化的單一系統,而非獨立部分的集合。這類似於像 CycleGAN(Zhu 等人,2017)這樣的模型為電腦視覺帶來的轉變,該模型透過考慮整個轉換領域的循環一致性,超越了成對圖像翻譯。COLA 將類似的「全域一致性」原則應用於資源管理。
邏輯流程: 論證令人信服地簡單:1) 局部最優(每個服務的擴展)加總為全域低效率。2) 因此,使用全域目標(成本)和全域約束(端到端延遲)。3) 由於線上解決太慢,透過搜尋離線解決並部署策略。其優雅之處在於使用多臂吃角子老虎機問題來高效搜尋瓶頸的最佳分配,這是一種在系統優化的強化學習研究中得到廣泛支持的技術(例如,來自 UC Berkeley RISELab 的工作)。
優勢與缺陷: 優勢: 實證結果非常出色——19.3% 的成本降低是董事會層級的數字。離線方法是務實的,避免了運行時的不穩定性。該框架與平台無關。缺陷: 其致命弱點是依賴於具代表性的離線工作負載。在快速發展的應用中或遇到「黑天鵝」流量事件時,預先計算的策略可能過時或帶來災難性後果。論文中回退到預設自動擴展器的做法,對於這個穩健性問題來說只是權宜之計,而非治本之道。此外,搜尋複雜度很可能隨著微服務數量的增加而急遽上升,可能限制其在極其龐大、複雜的應用中的使用。
可行建議: 對於雲端架構師來說,訊息很明確:停止孤立地設定 CPU 閾值。投資建立或採用全域效能可觀測性和集中式決策引擎。從混合方法開始:使用 COLA 的理念來定義關鍵服務鏈,並在那裡應用集體擴展,同時讓較不重要、獨立的服務繼續使用傳統的 HPA。如結果所示,投資回報率可以很快。雲端供應商應注意;像 GKE Autopilot 這樣的工具需要這種智慧編排層,才能真正實現「託管」基礎架構的承諾。
7. 應用展望與未來方向
COLA 背後的原理在基礎虛擬機器擴展之外具有廣泛的適用性:
- 多資源與異質擴展: 未來版本可以集體決定虛擬機器大小(記憶體優化 vs. 計算優化)、GPU 分配,甚至跨可用區或雲端供應商的放置,以實現成本和韌性優化。
- 與服務網格整合: 將 COLA 與服務網格(如 Istio)結合,將提供更豐富的遙測數據(請求級追蹤、依賴關係圖),甚至能夠直接控制流量路由和斷路器,作為優化的一部分。
- 線上適應與元學習: 主要的研究前沿是克服離線限制。來自元學習的技術可以讓 COLA 根據即時回饋快速線上調整其策略,或在低流量期間安全地探索新配置。
- 綠色計算目標: 優化目標可以擴展到最小化碳足跡或能源消耗,與永續計算倡議保持一致,方法是整合來自像 Cloud Carbon Footprint 專案 等來源的數據。
- 策略市集: 對於常見的應用模式(例如電子商務、媒體串流),可以共享或銷售預先優化的 COLA 策略,減少個別訓練運行的需求。
8. 參考文獻
- Sachidananda, V., & Sivaraman, A. (2022). COLA: Collective Autoscaling for Cloud Microservices. arXiv preprint arXiv:2112.14845v3.
- Zhu, J., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks. Proceedings of the IEEE International Conference on Computer Vision (ICCV).
- Burns, B., Grant, B., Oppenheimer, D., Brewer, E., & Wilkes, J. (2016). Borg, Omega, and Kubernetes. Queue, 14(1), 70–93.
- Hoffman, M., Shahriari, B., & Aslanides, J. (2020). Addressing Function Approximation Error in Actor-Critic Methods. Proceedings of the 37th International Conference on Machine Learning (ICML). (Example of advanced RL relevant for online adaptation).
- Cloud Carbon Footprint. (n.d.). An open source tool to measure and visualize the carbon footprint of cloud usage. Retrieved from https://www.cloudcarbonfootprint.org/.
- Verma, A., Pedrosa, L., Korupolu, M., Oppenheimer, D., Tune, E., & Wilkes, J. (2015). Large-scale cluster management at Google with Borg. Proceedings of the European Conference on Computer Systems (EuroSys).