在應用規模日漸龐大的今天,高效地管理分布式應用的發布是一項前所未有的挑戰,如何對單一應用進行獨立的灰階?通過服務網格管理應用
背景資訊
客戶Z是一家進口電商的領先企業,隨著業務增長,服務架構日益複雜,這對系統的穩定性提出了更高的挑戰。由於微服務數量眾多且由多個不同團隊維護,客戶Z一直採取各團隊獨立負責發布和復原。在需要同時發布多個應用時,團隊需要手動協調發布順序。此外,由於缺乏有效灰階發布機制,一旦某個應用出現問題,可能會影響所有使用者。
問題與挑戰
缺乏灰階發布機制。
產品架構中的微服務涉及的團隊眾多,各自獨立管理髮布工作流程,但現有調研發現,其他技術體系的灰階機制並不支援應用的獨立灰階發布。
希望能夠按使用者維度實施灰階發布,即每個使用者要麼完全進入灰階版本,要麼完全進入非灰階版本。
生產環境中的測試需求。
希望能夠在生產環境中進行測試,即在特定應用的流量調用時,能夠路由到該應用的測試版本。這需要基於使用者資訊將流量引導至特定應用的測試工作負載。
故障排查困難。
當前的調用鏈異常複雜,各個應用的日誌和監控缺乏統一性,導致在發現異常時難以快速定位問題,故障排查周期過長。
流量防護不足。
作為電商企業,在促銷活動等高峰時段,過高的全域QPS對核心業務造成重大衝擊,一旦發生過載,容易引發級聯故障,導致系統大規模不可用。目前只能在大促前儘可能進行冗餘部署,然而這種方式的資源使用率較低。團隊內沒有統一的限流和熔斷實踐,主要依賴各應用研發團隊自行實現。
部分使用者佔用系統資源過多,造成資源分派不公平,目前尚未有有效解決方案。
LLM流量治理。
對於接入阿里雲百鍊、OpenAI等LLM服務的部分應用,API Key管理存在困難,暴露給應用團隊容易導致濫用並增加替換難度。
應用已接入DeepSeek,但在高並發時容易發生繁忙故障,希望在DeepSeek失敗時能夠自動切換降級到OpenAI服務。
解決方案
啟用服務級灰階發布
通過啟用服務級灰階發布,客戶Z可以:
進行應用粒度的灰階發布和使用者維度灰階,將軟體故障平均影響範圍縮小90%。
生產環境從內部帳號開始,再到使用者帳號進行漸進式灰階發布,可以有效控制出現問題時的影響範圍,且可以立即回退到穩定版本,控制影響時間長度。
在生產環境部署與使用者流量隔離的“生產測試環境”,實現Test in Production,顯著減少了因生產環境與測試環境差異(相關許可權問題、配置問題等)導致的上線故障。
使用者級灰階發布是ASM的一個典型情境。在這種情境中,單個應用可以獨立於其他應用進行灰階發布。例如,應用A可以以1:9的比例分配流量到不同版本,而與此同時,應用B則可以以3:7的比例分配流量到不同版本,可以同時存在任意個數的獨立灰階發布應用,各個應用的發布動作和進程互不干擾。
在網關配置請求打標規則時,可以在入口處根據配置的規則為請求打上多個標識。在後續的完整調用鏈中,ASM網格代理將協助應用持續透傳這些標識,確保每個請求都攜帶入口網關添加的所有標籤。同時,可以通過配置路由規則來使用這些標籤:當請求匹配到特定標籤時,將執行相應的路由操作。
如下圖,對應啟用服務級灰階發布後,客戶Z的產品架構。
每個業務團隊都可以在網關上應用打標規則,只需要確保標籤名稱不衝突即可。
通過ASM提供的HashTagging網關外掛程式,可以實現基於要求標頭的值進行雜湊,根據雜湊值命中的範圍打標的能力,通過該能力可以輕鬆實現按使用者ID灰階發布。
通過虛擬服務實現基於請求特徵的打標,虛擬服務支援利用請求中攜帶的要求標頭資訊(如上圖中的UID)來進行打標。
啟用服務網格可觀測
通過啟用服務網格可觀測,客戶Z可以:
無需應用改造,即可獲得Metrics + Tracing + Logging的完整可觀測資訊,可觀測資訊覆蓋率提升至100%。
通過監控指標感知問題,通過鏈路追蹤確認RootCause位置,再通過訪問日誌擷取Debug輔助資訊的完整感知、定位和排查流程。故障處理速度提升80%。
ASM可觀測配置可以為應用匯出統一的日誌、監控指標和鏈路追蹤資料。統一的資料格式使得可觀測資訊可以方便地彙總,並進行統一的查詢和分析。
啟用流量防護能力
通過啟用流量防護能力,客戶Z可以:
顯著提高系統利用率,徹底杜絕了個別高頻請求消耗系統資源的問題
通過熔斷限流自動降級,避免因為小故障級聯引發大規模故障。
使用流量調度套件進行公平性限流
ASM流量調度套件提供了進階限流能力,可以基於請求中攜帶的多種特徵作為key進行限流。通過配置RateLimitingPolicy,可以指定以要求標頭為key,從而實現基於使用者維度限流,拒絕單一客戶的過多請求。
使用本地限流和熔斷防止級聯故障
使用ASM可以在不對應用進行任何侵入式改動的情況下,快速為叢集內的應用按需啟用熔斷與限流能力,從而提升叢集的降級能力,避免級聯故障擴大影響範圍。
以下是客戶Z啟用流量防護能力後的效果示意圖:
使用ASM管理LLM服務
通過使用ASM管理LLM服務,客戶Z可以:
應用無需關心LLM依賴的存取權限,全部統一管理,顯著提升了安全性。
為應用屏蔽LLM失敗的重試問題,顯著提升請求成功率。
憑證管理
ASM提供的LLM流量管理功能可以在應用請求LLM服務時根據應用身份為請求注入相應的API Key,實現了應用無需關心訪問憑證,所有憑證集中管理的能力。
降級回退
通過ASM調用LLM API時,允許為特定Provider配置降級,當請求發生錯誤時ASM將自動降級,整個過程對應用無感知。