服務(wù)治理怎么做:降級、熔斷、全鏈路壓測
圖片
服務(wù)降級的常見場景
- 系統(tǒng)負(fù)載過高:在高峰期或者流量激增的情況下,為了防止系統(tǒng)崩潰,可以暫時關(guān)閉或降低某些非關(guān)鍵服務(wù)的質(zhì)量。
- 依賴服務(wù)故障:當(dāng)某個依賴服務(wù)不可用時,通過服務(wù)降級可以提供替代方案或者簡化的功能,以確保系統(tǒng)核心功能的正常運(yùn)作。
- 網(wǎng)絡(luò)問題:在網(wǎng)絡(luò)延遲或不穩(wěn)定的情況下,降低某些服務(wù)的請求頻率或數(shù)據(jù)量,以減輕系統(tǒng)負(fù)擔(dān)。
- 資源不足:當(dāng)系統(tǒng)資源(如 CPU、內(nèi)存)不足時,通過服務(wù)降級減少資源消耗。
服務(wù)降級的策略
- 功能降級:暫時關(guān)閉或簡化某些非關(guān)鍵功能。例如,關(guān)閉推薦系統(tǒng)、日志記錄等不影響核心功能的服務(wù)。
- 數(shù)據(jù)降級:降低數(shù)據(jù)返回的粒度或數(shù)量。例如,從詳細(xì)數(shù)據(jù)切換為概要數(shù)據(jù)。
- 延遲處理:將非緊急的任務(wù)延遲處理或批量處理。例如,將某些后臺任務(wù)延遲執(zhí)行,減輕當(dāng)前系統(tǒng)負(fù)擔(dān)。
- 限流:限制部分用戶的訪問,優(yōu)先保證核心用戶或付費(fèi)用戶的服務(wù)質(zhì)量。
實施服務(wù)降級的技術(shù)手段
- 熔斷器模式(Circuit Breaker Pattern):當(dāng)檢測到某個服務(wù)不可用時,主動切斷對該服務(wù)的調(diào)用,避免影響其他服務(wù)。
- 限流器(Rate Limiter):限制單位時間內(nèi)的請求數(shù)量,防止系統(tǒng)過載。
- 降級開關(guān):通過配置中心動態(tài)調(diào)整服務(wù)降級策略,靈活應(yīng)對不同場景。
- 緩存:使用緩存減輕數(shù)據(jù)庫或其他后端服務(wù)的壓力,提供快速響應(yīng)。
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片
工作流程
請求通過熔斷器:
- 每個請求通過熔斷器進(jìn)行計數(shù),監(jiān)控其成功或失敗狀態(tài)。
- 如果請求成功,計數(shù)器重置。
- 如果請求失敗,計數(shù)器記錄失敗。
監(jiān)控和評估:
Hystrix 會監(jiān)控一段時間內(nèi)(例如 10 秒)的請求數(shù)量和失敗率。
如果在這段時間內(nèi)請求數(shù)量超過設(shè)定的最小請求數(shù),并且失敗率超過設(shè)定的閾值,熔斷器將跳到打開狀態(tài)。
短路請求:
在打開狀態(tài)下,所有請求都會被短路,不會真正調(diào)用下游服務(wù),而是立即返回一個預(yù)設(shè)的降級響應(yīng)。
這樣可以防止下游服務(wù)的故障影響到整個系統(tǒng),并減輕下游服務(wù)的負(fù)載。
嘗試恢復(fù):
在打開狀態(tài)持續(xù)一段時間后,熔斷器進(jìn)入半開狀態(tài),允許少量請求通過。
如果這些請求成功,熔斷器將關(guān)閉,恢復(fù)正常請求。
如果這些請求失敗,熔斷器將重新打開,并繼續(xù)短路請求。
服務(wù)灰度發(fā)布設(shè)計與實踐
圖片
優(yōu)點(diǎn):
- 降低風(fēng)險:通過逐步發(fā)布新版本,團(tuán)隊可以在小范圍內(nèi)驗證新功能的有效性,降低全量發(fā)布帶來的風(fēng)險。
- 快速反饋:在發(fā)布過程中,可以迅速收集用戶反饋和監(jiān)控數(shù)據(jù),及時發(fā)現(xiàn)和解決問題。
- 持續(xù)交付:灰度發(fā)布與持續(xù)交付和持續(xù)部署實踐相結(jié)合,可以實現(xiàn)快速、頻繁和穩(wěn)定的發(fā)布。
- 平滑過渡:避免了大規(guī)模發(fā)布帶來的潛在問題,確保系統(tǒng)平穩(wěn)運(yùn)行。
服務(wù)灰度發(fā)布的工具
- 服務(wù)網(wǎng)關(guān):如 NGINX、Kong 等,可以配置流量路由規(guī)則,實現(xiàn)灰度發(fā)布。
- 容器編排:如 Kubernetes,可以通過配置滾動更新和分階段發(fā)布策略實現(xiàn)灰度發(fā)布。
- 服務(wù)網(wǎng)格:如 Istio、Linkerd,可以細(xì)粒度地控制服務(wù)間的流量,實現(xiàn)灰度發(fā)布。
圖片
圖片
圖片
圖片
圖片
圖片
圖片
服務(wù)全鏈路壓測設(shè)計
圖片
圖片
圖片
圖片
圖片
圖片
圖片
圖片