全部產品
Search
文件中心

Microservices Engine:配置系統防護

更新時間:Jan 14, 2025

系統防護提供了在不同情境下的節點維度流量防護能力,以應對各種預期外的情況。例如,當未配置流量防護規則的介面遭遇流量突增時,系統防護能夠提供兜底的流量防護,確保應用的穩定性。目前,微服務治理針對服務端流量以及用戶端流量分別提供了自適應過載保護、總QPS限流、總並發限流、異常調用熔斷以及慢調用熔斷能力。

說明

系統防護與流量防護的關係可參見系統防護與流量防護的關係

前提條件

功能入口

  1. 登入MSE治理中心控制台,並在頂部功能表列選擇地區。

  2. 在左側導覽列,選擇治理中心 > 应用治理

  3. 应用列表頁面,單擊目標應用的資源卡片,然後在左側導覽列單擊流量治理

  4. 單擊系統防護頁簽,配置相應的功能。

自適應過載保護

說明

自適應過載保護需要Agent版本為3.1.4及以上。

簡介

自適應過載保護將CPU使用率作為衡量系統負載的依據,自適應地調整對服務端流量的限流比例,在預期外的流量突增情境下也能將CPU使用率相對平穩地控制在配置的閾值範圍內。

生效範圍

自適應過載保護對所有服務端介面生效,優先順序低於流量防護規則。

適用情境

自適應過載保護為服務端介面提供基於CPU的兜底防護,適用於CPU相關型應用,預期外的介面出現突增 -> 系統CPU持續上升 -> 影響核心介面RT。

根據不同應用的業務,穩態下的CPU使用率也不同,使用者可以通過壓測/歷史資料確定穩態下的最大CPU使用率並進行適當放大做為閾值進行配置。

頁面說明

頁面左側為自適應過載保護事件列表,右側展示近5分鐘該應用的節點平均CPU使用率變化趨勢。

事件為節點維度,基於演算法的狀態變更,包含限流開始事件、限流持續事件以及限流結束事件。

image

單擊事件操作的查看連結,可以查詢對應IP節點的CPU使用率資料,並將時間回放至事件上報時間,以觀察事件觸發時對應節點的CPU使用率以及限流機率等資訊。

image

配置項

描述

開啟狀態

  • 關閉:自適應過載保護處於關閉狀態。

  • 類比執行:該狀態下,當自適應過載保護觸發時,將僅產生相應事件,不實際調整流量防護策略。

  • 開啟:該狀態下,當自適應過載保護觸發時,實際調整流量防護策略,以一定的比例對所有入口流量進行限流。

CPU使用率

定義預期的CPU使用率閾值,自適應過載保護會基於系統實際的CPU使用率以及配置的CPU使用率閾值結合演算法自適應地調整介面限流的機率,協助系統在高壓情境下通過拒絕一部分請求的方式,維持CPU使用率在配置的閾值上下小範圍波動。

例外設定

詳見例外項配置

總QPS限流

簡介

總QPS限流將以節點維度統計總QPS(單節點所有服務端介面QPS之和),對於超過閾值的請求進行限流操作。

說明

總QPS限流需要Agent版本為4.2.0及以上。

生效範圍

總QPS限流對所有服務端介面生效,優先順序低於流量防護規則。

適用情境

由於不是所有系統的表現都與CPU強相關,有些應用在低CPU負載下也會因為記憶體、網路等原因導致效能劣化。而總QPS限流基於節點的總QPS來進行限流,提供了基於流量的防護手段。

預期外的介面出現突增 -> 競爭資源緊缺 -> 影響核心介面。

使用者可以通過壓測/歷史資料確定穩態下的節點總QPS並進行適當放大作為閾值進行配置。

頁面說明

頁面左側為總QPS限流事件,右側展示近5分鐘該應用的節點平均總QPS請求資料變化趨勢。

事件為節點和介面維度,基於實際發生總QPS限流的節點以及介面上報事件,每5分鐘上報一次,上報過去5分鐘內發生的限流。

image

單擊事件的查看連結,可以查詢對應IP節點的總QPS,並將時間回放至事件上報時間附近,以觀察事件觸發時對應節點的總QPS以及限流是否符合預期,如果需要查看更加詳細的資訊,比如介面和節點維度,可以前往介面詳情或者節點詳情,後續會提供對應的跳轉能力。

image

配置項

描述

開啟狀態

  • 關閉:總QPS限流處於關閉狀態。

  • 開啟:該狀態下,對於超過閾值請求會進行限流操作。

總QPS閾值

節點維度總QPS閾值。

例外設定

詳見例外項配置

總並發限流

簡介

總並發限流將以節點維度統計總並發(單節點所有服務端介面並發之和),對於超過閾值的請求進行限流操作。

說明

總並發限流需要Agent版本為4.2.0及以上。

生效範圍

總並發限流對所有服務端介面生效,優先順序低於流量防護規則。

適用情境

在調用RT較高的情境下(普遍超過1s),QPS限流會出現一個比較明顯的問題,當系統的競爭資源(線程池、記憶體、串連池等)被佔用時,會導致排隊進一步導致介面的RT上升,如果此時只採用基於QPS的限流,每秒還是會有少量請求進入,而隊列中的請求無法在秒層級消化完成,會導致隊列進一步累積,RT進一步上升,無論新舊請求RT都有顯著上升。此時如果使用了並發限流,如果還有一定量的請求沒有完成,新的請求會被直接拒絕,這樣雖然請求會被限流,但是系統處理完當前請求後,新的請求就會通過,以較小的排隊時間完成請求。從整體上看,請求的成功率和平均RT都會有顯著的改善。

預期外的介面出現突增 -> 競爭資源緊缺 -> 隊列堆積 -> 所有請求RT上升。

使用者可以通過壓測/歷史資料確定穩態下的節點總並發並進行適當放大作為閾值進行配置。

頁面說明

頁面左側為總並發限流事件,右側展示近5分鐘該應用的節點平均總並發請求資料變化趨勢,

事件為節點+介面維度,基於實際發生總並發限流的節點以及介面上報事件,每5分鐘上報一次,上報過去5分鐘內發生的限流。

image

單擊事件的查看連結,可以查詢對應IP節點的總並發,並將時間回放至事件上報時間附近,以觀察事件觸發時對應節點的總並發以及限流是否符合預期,如果需要查看更加詳細的資訊,比如介面和節點維度,可以前往介面詳情或者節點詳情,後續會提供對應的跳轉能力。

image

配置項

描述

開啟狀態

  • 關閉:總並發限流處於關閉狀態。

  • 開啟:該狀態下,對於超過閾值請求會進行限流操作。

總並發閾值

節點維度總並發閾值。

例外設定

詳見例外項配置

異常調用熔斷

簡介

異常調用熔斷會分別統計每個用戶端介面的異常比例,當異常比例大於配置的閾值時對該介面進行熔斷,熔斷期間該介面直接快速失敗,並相隔一定時間通過用於探測的請求,探測成功後結束熔斷。

說明

異常調用熔斷需要Agent版本為4.2.0及以上。

生效範圍

異常調用熔斷對所有用戶端介面生效,但對於配置了介面維度熔斷規則的介面不生效。

適用情境

異常調用熔斷主要分為兩類情境。

逾時情境:一個用戶端介面的逾時異常比例過高,往往是服務提供者出現異常情況,但這會進一步導致調用方(本應用)請求堆積,影響本應用的其他介面,通過熔斷的方式可以在提供方異常期間快速失敗,避免堆積。

非逾時情境:一個用戶端介面的非逾時異常比例過高,異常調用熔斷能夠通過拋出限流異常供使用者處理,起到降級的效果,最佳化異常情境下的使用者體驗。

頁面說明

頁面左側為異常調用熔斷事件,右側展示近5分鐘該應用的TOP10異常比例介面,

事件為節點+介面維度,基於實際發生異常調用熔斷的節點以及介面上報事件,每5分鐘上報一次,上報過去5分鐘內發生的限流。

image

配置項

描述

開啟狀態

  • 關閉:異常調用熔斷處於關閉狀態。

  • 開啟:該狀態下,對於超過閾值請求會進行熔斷操作。

熔斷比例閾值(%)

介面維度熔斷比例閾值。

例外設定

詳見例外項配置

進階配置

統計視窗時間長度(秒)

統計的時間視窗長度,取值範圍為1秒~120分鐘。

熔斷時間長度(s)

即熔斷觸發後持續的時間。資源進入熔斷狀態後,在配置的熔斷時間長度內,請求都會快速失敗。

最小請求數目

觸發熔斷的最小請求數目,若當前統計視窗內的請求數小於此值,即使達到熔斷條件規則也不會觸發。

熔斷恢複策略

熔斷器進入恢複階段(半開啟狀態)的恢複策略。

  • 單次探測恢複:經過熔斷時間長度後,熔斷器會對接下來的一個請求進行探測,若該請求符合預期(不為慢調用或沒有異常),則結束熔斷;否則重新回到熔斷階段。

  • 漸進式恢複:需要設定恢複階段數每步最小通過數目

  • 經過熔斷時間長度後,熔斷器按照設定的恢複階段數進行漸進式恢複,若該階段內請求達到一定量即每步最小通過數目,則觸發檢查。檢查的請求若都未超過閾值,則逐步提高允許通過的請求比例,直到請求完全恢複;若某一步的指標超出閾值,則重新回到熔斷階段。

  • 請求比例T=100/恢複階段數N,則第一階段請求比例為T,第二階段為2T,直到100%。

  • 例如恢複階段數為3,每步最小通過數目為5,則三個階段分別按照33%、67%和100%的比例放入請求,當每階段的請求數目大於等於5時進行檢查,若請求的指標未超閾值則進入下一恢複階段,直至完全恢複。

慢調用熔斷

簡介

慢調用熔斷會分別統計每個用戶端介面的慢調用比例,當慢調用比例大於配置的閾值時對該介面進行熔斷,熔斷期間該介面直接快速失敗,並相隔一定時間通過用於探測的請求,探測成功後結束熔斷。

說明

慢調用熔斷需要Agent版本為4.2.0及以上。

生效範圍

慢調用熔斷對所有用戶端介面生效,但對於配置了介面維度熔斷規則的介面不生效。

適用情境

慢調用熔斷的使用情境基本和異常調用熔斷中的逾時異常相同,區別在於可以動態調整判斷慢調用的RT標準,不依賴逾時配置。

頁面說明

頁面左側為慢調用熔斷事件,右側展示近5分鐘該應用的TOP10平均RT,

事件為節點和介面維度,基於實際發生異常調用熔斷的節點以及介面上報事件,每5分鐘上報一次,上報過去5分鐘內發生的限流情況。

image

配置項

描述

開啟狀態

  • 關閉:慢調用熔斷處於關閉狀態。

  • 開啟:該狀態下,對於超過閾值請求會進行熔斷操作。

慢調用RT (ms)

超過該值的請求會被判定為慢調用。

降級閾值 (%)

當有超過該百分比閾值的請求RT長於上述慢調用RT,則觸發熔斷。

例外設定

詳見例外項配置

進階配置

統計視窗時間長度(秒)

統計的時間視窗長度,取值範圍為1秒~120分鐘。

熔斷時間長度(s)

即熔斷觸發後持續的時間。資源進入熔斷狀態後,在配置的熔斷時間長度內,請求都會快速失敗。

最小請求數目

觸發熔斷的最小請求數目,若當前統計視窗內的請求數小於此值,即使達到熔斷條件規則也不會觸發。

熔斷恢複策略

熔斷器進入恢複階段(半開啟狀態)的恢複策略。

  • 單次探測恢複:經過熔斷時間長度後,熔斷器會對接下來的一個請求進行探測,若該請求符合預期(不為慢調用或沒有異常),則結束熔斷;否則重新回到熔斷階段。

  • 漸進式恢複:需要設定恢複階段數每步最小通過數目

  • 經過熔斷時間長度後,熔斷器按照設定的恢複階段數進行漸進式恢複,若該階段內請求達到一定量即每步最小通過數目,則觸發檢查。檢查的請求若都未超過閾值,則逐步提高允許通過的請求比例,直到請求完全恢複;若某一步的指標超出閾值,則重新回到熔斷階段。

  • 請求比例T=100/恢複階段數N,則第一階段請求比例為T,第二階段為2T,直到達到100%。

  • 例如恢複階段數為3,每步最小通過數目為5,則三個階段分別按照33%、67%和100%的比例放入請求,當每階段的請求數目大於等於5時進行檢查,若請求的指標未超閾值則進入下一恢複階段,直至完全恢複。

例外項

簡介

所有系統防護功能均可以配置例外項,對例外項中的介面系統防護會直接通過,而不進行規則的檢查。

說明

例外項需要Agent版本為4.2.0及以上。

適用情境

通常情況下,只有健全狀態檢查介面以及系統關鍵介面需要配置例外項,前者避免影響節點的健康狀態,後者有單獨的介面維度限流限制,且希望不受系統維度限流的影響。

頁面說明

左側為可供直接選擇的介面(近期有調用的介面),對於未展示在左側的介面可以直接在輸入框處輸入後斷行符號添加到已選介面中。

image

常見問題

系統防護與流量防護的關係

  • 系統防護和流量防護都能夠保障應用處於穩態,但是兩者覆蓋的情境和流量損耗不同。

  • 觸發限流後,系統防護限流返回狀態代碼為429,目前不支援使用者自訂配置。

  • 系統防護以節點維度指標為依據提供流量防護,能夠保障應用本身處於穩態,覆蓋大部分情境。但是由於系統防護從應用視角出發,對所有介面一視同仁,但在同一個應用中,不同介面的重要性不同,對系統負載的影響也不同。流量防護可以通過對不同介面配置不同的閾值,從而覆蓋更多的情境,並且在同樣起到防護作用的同時儘可能較少限流的流量。

  • 整體來說系統防護和流量防護都能夠起到防護效果,但是在防護情境覆蓋率和流量損耗上流量防護效果更好,在配置難度上系統防護更低。因此,最佳實務是系統防護+流量防護,系統防護保障應用的穩定性,流量防護通過精細化的配置在防護效果不打折扣的同時減少損耗(限流的流量)。

相關文檔

更多流量防護策略,請參見流量防護