全部產品
Search
文件中心

:流量防護

更新時間:Feb 27, 2025

Serverless 應用引擎 SAE(Serverless App Engine)整合Microservices Engine (MSE)的流量防護能力,以流量為切入點,從介面流控、並發隔離、熔斷規則等多個維度來保障業務的穩定性,提供專業穩定的流量防護手段、秒級的流量水位分布分析功能。本文介紹如何設定流量防護的相關規則以及使用樣本。

前提條件

使用限制

僅適用於2023年11月08日起建立的微服務應用。

功能入口

  1. 登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊目標應用程式名稱。

    IXAcRBAUok

  2. 在左側導覽列,選擇微服務治理 > 流量治理,單擊流量防護頁簽。

配置規則

配置流控規則

流控規則通過監控應用或服務流量的QPS指標,當指標達到設定的閾值時立即攔截流量,避免應用被瞬時的流量高峰衝垮,從而保障應用高可用性。

  1. 單擊介面流控頁簽,然後單擊新增流控規則

  2. 新增流控防護規則對話方塊中,配置相關資訊。

    1. 選擇防護情境設定精靈中,選擇介面類型流量類型介面名稱,然後單擊下一步

    2. 配置防護規則設定精靈中,配置相關資訊,單擊下一步

      配置項

      說明

      是否開啟

      開啟表示規則建立成功後立即生效,預設關閉。

      單機QPS閾值

      觸發對流控介面的統計維度對象的QPS閾值。

      流控效果

      選擇流控方式來處理被攔截的流量。

      • 快速失敗:達到閾值時,立即攔截請求。按照應用系統設定中的適配模組配置資訊,進行內容返回。

      • 排隊等待:請求勻速通過,允許排隊等待,通常用於請求調用削峰填穀等情境。需要設定具體的逾時時間,達到逾時時間後請求會快速失敗。

    3. 配置防護行為設定精靈中,選擇關聯線為,然後單擊新增

    規則建立成功後,您可以在介面流控頁簽對目標規則進行編輯刪除等操作。

配置隔離規則

隔離規則通過控制介面或依賴的並發線程數,來保證系統的穩定性。

  1. 單擊並發隔離頁簽,然後單擊新增隔離規則

  2. 新增隔離防護規則對話方塊中,配置相關資訊。

    1. 選擇防護情境設定精靈中,選擇介面類型流量類型介面名稱,然後單擊下一步

    2. 配置防護規則設定精靈中,配置相關資訊,單擊下一步

      配置項

      說明

      是否開啟

      開啟表示規則建立成功後立即生效,預設關閉。

      並發數閾值

      資源的並發線程數(即該資源正在執行的線程數)閾值。

    3. 配置防護行為設定精靈,選擇關聯線為,然後單擊新增

規則建立成功後,您可以在並發隔離頁簽對目標規則進行編輯刪除等操作。

配置熔斷規則

熔斷規則可以監控應用內部或者下遊依賴的回應時間或異常比例。當達到指定的閾值時,系統會立即降低下遊依賴的優先順序。在指定的時間內,系統不會調用該異常資源,避免應用的不穩定運行,從而保障應用的高可用性。指定時間過後,系統會重新恢複對該資源的調用。

  1. 單擊熔斷規則頁簽,然後單擊新增熔斷規則

  2. 新增熔斷防護規則對話方塊,配置相關資訊。

    1. 選擇防護情境設定精靈,選擇介面類型介面名稱,單擊下一步

    2. 配置防護規則設定精靈,配置相關資訊,單擊新增

      配置項

      描述

      统计窗口时长

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

      最小请求数目

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

      阈值类型

      選擇以慢调用比例(%)异常比例(%)作為閾值。

      • 選擇以慢调用比例作為閾值,需要設定允許的慢调用RT(即最大的回應時間),請求的回應時間大於該值則統計為慢調用。

        熔断比例阈值中設定觸發熔斷的慢調用比例。規則開啟後,在單位統計時間長度內請求數目大於設定的最小请求数目,並且慢調用的比例大於閾值,則接下來的熔断时长(s)內請求會自動被熔斷。經過熔斷時間長度後熔斷器會進入探測恢複狀態,若接下來的一個請求回應時間小於設定的慢调用RT則結束熔斷,若大於設定的慢调用RT則會再次被熔斷。

      • 選擇以异常比例作為閾值,需要在熔断比例阈值中設定觸發熔斷的異常比例。

        規則開啟後,在單位統計時間長度內業務異常數目大於設定的最小请求数目,並且異常的比例大於閾值,則接下來的熔断时长(s)內請求會自動被熔斷。

      熔断时长(s)

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

      熔断恢复策略

      單擊顯示進階選項後配置。熔斷器進入恢複階段(半開啟狀態)的恢複策略。

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

      • 渐进式恢复:需要設定恢复阶段数每步最小通过数目

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

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

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

規則建立成功後,您可以在熔斷規則頁簽對目標規則進行編輯刪除等操作。

配置熱點參數防護(RPC)規則

為應用配置熱點規則後,系統將分析統計參數,即資源調用過程中的調用次數較高的參數,並根據配置的熱點規則對包含熱點參數的資源調用進行限流,保護系統穩定性。

  1. 單擊熱點參數防護(RPC)頁簽,然後單擊新增熱點參數防護(RPC)規則

  2. 新增熱點參數防護(RPC)規則對話方塊,配置相關資訊。

    1. 選擇防護情境設定精靈,選擇介面名稱,單擊下一步

    2. 配置防護規則設定精靈,配置相關資訊,單擊下一步

      配置項

      描述

      参数位置索引

      埋點傳入參數的索引位置。對應SphU.entry(xxx,args)中的參數索引位置。例如在SphU.entry(resourceName,Entry Type.IN,1,paramA,paramB)埋點中,paramA的參數索引是0,paramB的參數索引是1。

      统计维度

      可選擇通過請求數或並發線程數。

      • 通过请求数:限制一段時間內的調用次數。

      • 并发数:限制該資源調用的並發數。

      统计周期时间

      統計視窗時間長度(單位為秒)。例如統計視窗時間長度為10秒,QPS閾值為5代表限制10秒內每個熱點參數訪問不超過5次。

      单机阈值

      作用於每個熱點參數的閾值。

      流控效果

      统计维度通过请求数時,可以選擇流控效果來處理被攔截的流量。

      • 快速失败:達到閾值時,立即攔截請求。該模式下可以額外設定一個缓冲请求数,即針對突發請求額外允許的請求數目。

      • 排队等待:請求勻速通過,允許排隊等待,通常用於訊息佇列削峰填穀等情境。需設定具體的逾時時間,排隊時會計算預計的排隊時間長度,若超過最大逾時時間則請求會直接被拒絕。例如,单机阈值配置為5,則代表請求每200毫秒才能通過一個,多出的請求將排隊等待通過。超时时间配置1000毫秒,則當前排隊請求超過5個(>1000毫秒)時,新到來的請求將會直接被拒絕。

      是否開啟

      開啟表示規則建立成功後立即生效,預設關閉。

    3. 配置防護行為設定精靈,選擇關聯線為,然後單擊新增

規則建立成功後,您可以在熱點參數防護(RPC)頁簽對目標規則進行編輯刪除等操作。

配置熱點參數防護(HTTP請求)規則

熱點參數防護規則(HTTP 要求)面向提供Web服務的應用,針對訪問請求中的一些參數項進行精細化的流量控制,可以對請求中IP、Host、Header、URL Param等參數維度資源調用進行流量控制,保障業務與系統的穩定性。

  1. 單擊熱點參數防護(HTTP 要求)頁簽,然後單擊新增熱點參數防護(HTTP 要求)

  2. 新增熱點參數防護(HTTP 要求)對話方塊,配置相關資訊。

    1. 選擇防護情境設定精靈,選擇介面名稱,單擊下一步

    2. 配置防護規則設定精靈中,配置相關資訊,單擊下一步

      配置項

      說明

      参数属性

      針對所選API的參數屬性進行流量控制。

      • Client IP:請求端的IP地址。

        說明

        若請求經過代理,會優先嘗試從X-Forwarded-For要求標頭中擷取IP資訊,如果其IP資訊存在,將會使用該IP作為實際請求端IP地址。

      • Remote Host:請求端的Host Header。

      • Header:根據指定的HTTP Header進行解析,如果填寫某個具體的Header Key,則該規則針對這個Header Key下面的熱點值分別進行限制。選擇Header後,可選擇配置請求屬性值的匹配策略,只有匹配該模式的請求屬性值會被納入統計和流控。

      • URL參數:根據指定的HTTP請求參數進行解析,需要填寫對應的參數名稱。選擇URL參數後,可選擇配置請求屬性值的匹配策略,只有匹配該模式的請求屬性值會納入統計和流控。

      閾實值型別

      預設為請求數

      閾值

      觸發對流控介面的統計維度對象的QPS閾值。設定時,需選擇統計時間間隔,支援秒、分鐘、小時和天4種維度。

      例如,若閾值填寫為10,統計間隔選擇,則表示每分鐘對應的請求數目不超過10個。

      是否开启

      開啟表示規則建立成功後立即生效,預設關閉。

      流控方式

      單擊顯示進階選項後配置。

      • 快速失败:當閾實值型別為QPS時,被攔截的流量將快速失敗,即達到閾值時,立即攔截請求。

        說明

        被攔截拒絕掉的請求,將返回行為管理中配置的自訂資訊,若未配置會返回預設行為,即429錯誤碼加上預設文本資訊。

      • 排队等待:當閾實值型別為QPS時,被攔截的請求將勻速通過,允許排隊等待。需設定具體的逾時時間,預計達到逾時時間的請求會立即失敗,而不會排隊。例如,QPS配置為10,則代表請求每100毫秒才能通過一個,多出的請求將排隊等待通過。逾時時間代表最大排隊時間,超出最大排隊時間的請求將會直接被拒絕。

        說明

        排隊等待時,QPS不要超過1000(請求間隔1毫秒)。

      Burst size

      單擊顯示進階選項後配置。當流控方式選擇為快速失败時,可以額外設定一個Burst Size,即針對突發請求額外允許的請求數目。

      逾時時間

      單擊顯示進階選項後配置。當流控方式選擇為排队等待時,需設定具體的逾時時間,單位為毫秒。例如,QPS配置為5,則代表請求每200毫秒才能通過一個,多出的請求將排隊等待通過。逾時時間代表最大排隊時間,超出最大排隊時間的請求將會直接被拒絕。

    3. 配置防護行為設定精靈,選擇關聯線為,然後單擊新增

規則建立成功後,您可以在熱點參數防護(HTTP請求)頁簽對目標規則進行編輯刪除等操作。

管理行為

Web行為可以在Web類型埋點資源觸發了某種規則後,返回對應的自訂處理行為,例如,某個Web介面觸發流控規則後返回Blocked by Sentinel的提示文本。

新增行為

  1. 單擊行為管理頁簽,然後單擊新增行為

  2. 新增行為對話方塊,配置相關資訊,然後單擊建立

    Web資源

    參數

    描述

    樣本值

    行为名称

    該行為的名稱。長度不超過128個字元,同一個應用內名稱不能重複。

    測試行為

    针对的资源类型

    選擇為Web類型。

    Web

    Web 限流处理策略

    定義Web介面訪問觸發某種規則後的行為表現。自訂返回:需設定HTTP返回狀態代碼、返回內容的格式和返回的內容。表示Web介面訪問觸發規則後返回自訂的內容。

    自訂返回

    HTTP 返回状态码

    預設為429。當Web限流處理策略為自訂返回時,需要填寫。

    429

    返回 content-type

    設定返回內容的格式為普通文本JSON

    JSON字串

    HTTP 返回文本

    輸入當Web介面訪問觸發規則後返回的內容。當Web限流處理策略為自訂返回時,需要填寫。

    {"message": "blocked oops"}

    RPC資源

    參數

    描述

    樣本值

    行为名称

    該行為的名稱。長度不超過128個字元,同一個應用內名稱不能重複。

    測試行為

    针对的资源类型

    選擇為Rpc類型。

    說明

    Apache Dubbo2.7.0到2.7.3版本不支援自訂行為,這些版本限流返回的是java.lang.RuntimeException,內容包含SentinelBlockedException及限流資訊。

    Rpc

    Rpc 限流處理策略

    定義Rpc介面訪問觸發某種規則後的行為表現。

    • 自訂返回:自訂返回結果。需設定HTTP返回狀態代碼、返回內容的格式和返回的內容。表示Rpc介面訪問觸發規則後返回自訂的內容。

    • 自訂異常:拋出自訂異常。需設定異常的類名和異常文本,表示Rpc介面訪問觸發規則後系統會返回指定的異常資訊。

    自訂返回/自訂異常

    Rpc 限流處理策略自訂返回

    自訂返回類名

    填寫類名稱路徑。

    說明

    自訂返回目前不支援物件類型中包含未確定類型的泛型,如Map<K, V>、List<T>等。

    com.alibaba.demo.OrderService:getOrder(long)

    自訂返回內容(JSON 格式)

    填寫當Rpc介面訪問觸發規則時返回結果的對象內容。

    {"id": "123", "name": "test"}

    Rpc 限流處理策略自訂異常

    異常類名

    填寫異常類名稱路徑。

    java.lang.RuntimeException

    異常資訊文本

    填寫Rpc介面訪問觸發規則後拋出自訂異常的文本資訊。

    "Operation failed"

新增的行為會顯示在行为管理頁簽中,您可以對目標行為進行修改刪除等操作。

關聯線為

  1. 單擊進流量防護頁簽,選擇目標頁簽,單擊目標規則操作編輯,配置選擇防護情境配置防護規則後,在配置防護行為設定精靈,從關聯線為下拉式清單,選擇目標行為進行關聯,或者單擊新增行為來建立新的行為進行關聯。

    說明
    • 如果您不需要自訂限流後的Fallback行為,選擇預設行為即可,預設介面類型為空白。

    • 新增規則時,如果當前介面已有綁定行為,後續綁定新的行為將覆蓋介面下已有的行為。

    • 選擇Fallback類型時,如果不選擇介面類型,則綁定預設行為;選擇介面類型並綁定相應類型行為後,不可修改。

  2. 單擊儲存

使用情境

情境1:削峰填穀,使流量勻速通過

請求流量具有波峰波穀的特點,流控的原理是將前面的峰值流量延遲(排隊時間長度)到後面再處理,既能最大化滿足所有請求,又能保證使用者體驗。

新增流控防护规则對話方塊,配置以下資訊:

  • 配置勻速模式下請求单机QPS阈值為5。

  • 流控效果選擇排队等待

  • 超时时间為5s。

系統每200毫秒處理一條請求,多餘的處理任務將排隊;同時設定了等待時間長度為5s,則預計排隊時間長度超過5s的處理任務將快速失敗,直接返回預設流控資訊,如文本、靜態頁面等。

情境2:保障自身資源充足

當運行該請求的回應時間變長,會導致線程的並發數變大。當並發數超過閾值以後,AHAS將拒絕多餘的請求,直到堆積的任務完成,並發線程數變少。達到將異常隔離,減小不穩定性的效果。例如某個SQL執行時間為20毫秒,預期該請求每秒有20個。

新增隔离防护规则對話方塊,配置以下資訊:

  • 填寫接口名称

  • 并发数阈值為10。

設定完成後,當這個SQL發生死結或者存在效能問題時,該SQL運行變慢,成為慢SQL,此時即使請求不斷進來,也僅僅會佔用10個線程,不會因為持續進來的請求(請求也無法在短時間內退出),從而耗光進程的活躍線程。當這個SQL恢複正常後,並發數會迅速減少。當並發數減少至低於預設的閾值時,系統就不會拒絕請求,應用的處理能力也快速的恢複。通過上述方式,起到根據回應時間自動調節的效果,隔離不穩定的應用。

情境3:慢調用熔斷

例如調用第三方服務,但回應時間太慢,會影響當前介面,所以對其進行熔斷操作。

新增熔断防护规则對話方塊,配置以下資訊。

配置項

樣本

說明

接口名称

test

介面名稱。

统计窗口时长

1

統計時間長度為1秒。

最小请求数目

10

觸發熔斷的最小請求數目為10。

阈值类型

慢調用比例

選擇以慢調用比例作為閾值。

慢调用RT

1000

超過1000毫秒則判定為慢請求。

熔断比例阈值

80%

觸發熔斷的慢調用比例閾值為80%。

熔断时长(s)

10

熔斷時間長度有10秒。

熔断恢复策略

單次探測恢複

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

情境4:異常熔斷

例如第三方內容展示時,系統會出現異常,當異常比例較高時,可以對其進行熔斷操作,以保證更好的使用者體驗。

新增熔断防护规则對話方塊,配置以下資訊。

配置項

樣本

說明

接口名称

test

介面名稱。

统计窗口时长

1

統計時間長度為1秒。

最小请求数目

10

觸發熔斷的最小請求數目為10。

阈值类型

異常比例

選擇以異常比例作為閾值。

熔断比例阈值

80%

觸發熔斷的異常比例閾值為80%。

熔断时长(s)

10

熔斷時間長度有10秒。

熔断恢复策略

單次探測恢複

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

情境5:秒殺情境

秒殺等搶購商品的時候,由於流量較大會導致系統響應不及時,甚至系統崩潰。為保證系統的穩定性,可配置熱點規則,超過一定量的閾值後,系統會讓購買熱點商品的流量排隊等待。例如購買同一商品,1秒內調用超過100次請求後,則其餘請求進行等待。

新增热点参数防护(RPC)规则對話方塊,配置以下資訊:

  • 填寫接口名称

  • 统计维度選擇通过请求数

  • 统计周期时间設定為1秒,单机阈值設定為100。

  • 流控效果選擇排队等待

  • 超时时间設定為30毫秒。

1秒內調用此介面超過100次,多餘的請求要進行排隊等待,等待時間長度超過30毫秒的請求就會立即失敗。

情境6:調用請求頻繁,佔用較多系統資源

在秒殺情境下,有時候還需要修改下單地址,當調用修改請求較多時,會佔用寫資料庫較多資源,您可以對其進行熱點快速失敗的處理,稍後再修改。

新增热点参数防护(RPC)规则對話方塊,配置以下資訊:

  • 填寫接口名称

  • 统计维度選擇并发数

  • 统计周期时间設定為1秒,单机阈值設定為100。

  • 流控效果選擇快速失败

表示1秒內只能最多處理100個並發請求,其餘超出的請求都會快速失敗。

情境7:熱點商品秒殺

在秒殺等搶購商品的情境下,由於流量較大,可能會導致系統響應不及時甚至崩潰。為保證系統穩定,可配置熱點參數防護規則,超過一定閾值後,系統會拒絕多餘的熱點商品流量。

例如購買同一商品,希望1秒內同個商品超過100次請求後,對多餘的請求進行拒絕,可在新增热点参数防护(HTTP 请求)對話方塊,配置以下資訊,表示1秒內,針對熱點商品ID進行下單的請求,每個單獨商品ID每秒最多隻能允許100個請求,其餘超出的當前商品下單請求都會被拒絕,返回自訂的資訊。

  • 参数属性選擇URL參數

    說明

    在參數屬性中,選擇當前熱點商品ID所對應的參數欄位,例如,假設URL參數中存在一個stockId欄位對應請求的商品ID,那麼參數屬性可以選擇URL參數,並在參數名稱中填寫屬性在請求中對應的欄位名稱。

  • URL參數名稱輸入stockId。

  • 閾值輸入100個請求/每

  • 流控方式選擇快速失败

情境8:防止惡意刷單

例如在促銷活動中,某些惡意刷單請求較多的時候,會佔用較多商品庫存或伺服器資源。這種情況下可以針對其IP來源進行排隊等待的處理,使訪問請求勻速通過,防止過量的請求對服務穩定性產生影響。

新增热点参数防护(HTTP 请求)對話方塊中配置以下規則資訊,表示每個不同來源IP調用此介面的請求會以每10毫秒一個的速度勻速通過(1秒/100=10毫秒),後續多餘的請求要進行排隊等待。排隊中的請求如果等待時間長度超過30 ms就會立即失敗。

  • 参数属性選擇Client IP

  • 閾實值型別預設選擇請求數

  • 閾值輸入100個請求/每

  • 流控方式選擇排队等待

  • 逾時時間輸入30。

  • 是否开启選擇開啟。