限流是流量控制中最常用的手段之一,能有效地防止外部請求超出後端服務的承載能力,從而避免發生級聯雪崩。在高並發情境下,限流可以通過阻止一部分請求來保證後端服務一直可用。雲原生網關支援路由層級的限流策略,可以精確地控制某個路由上的請求數量在設定的時間周期內不超過閾值。本文介紹雲原生網關如何配置限流策略。
MSE控制台的限流功能進行了升級,新增了多種限流模式(只有網關版本為1.1.0及以上的時候才可以使用新增的限流模式)。同時,老版本的限流功能也繼續保留。因此,需要您根據不同版本的網關來選擇不同的限流策略進行配置。
若您的網關版本為1.1.0以上,請參見本文的配置限流策略(新版)章節。
若您的網關版本為1.0.0版本,請參見本文的配置限流策略(舊版)章節。
配置限流策略(新版)
配置的閾值均為整體閾值,每個網關節點的限流閾值=整體閾值/節點數,若限流閾值為小數則向上取整。例如,路由Demo上的QPS為1001,如果您的網關節點數量是2,那麼每個網關節點上,對路由Demo的QPS限制是501。
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。
在左側導覽列,單擊路由管理,然後選擇路由頁簽。
單擊需要變更的路由規則操作列下的策略配置。
在策略配置頁簽,單擊限流。
網關版本為1.2.25及以上
配置流控規則
流控規則的原理是監控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免後端服務被瞬時的流量高峰衝垮,從而保障高可用性。
在限流地區,單擊流控規則頁簽。
在流控规则地區,進行相關配置。
配置項
說明
總體QPS閾值
設定總體QPS閾值。
Web fallback 行為
選擇Web fallback 行為為返回指定內容或者跳轉到指定頁面。
選擇Web fallback 行為為跳轉到指定頁面時:
跳轉地址
輸入跳轉地址。
選擇Web fallback 行為為返回指定內容時:
HTTP狀態代碼
設定HTTP狀態代碼。預設為429。
返回 content-type
選擇返回 content-type為普通文本或JSON。
HTTP 返迴文本
輸入返迴文本。
是否開啟
開啟後,流控規則生效。
單擊新建或儲存,在提示對話方塊中單擊確定。
配置並發規則
並發規則的原理是統計當前網關處理中的請求數之和,當指標達到設定的閾值時立即攔截流量,可配置為後端服務的最大並發處理請求數,實現在高並發下的後端服務可用性保護。
在限流地區,單擊並發規則頁簽。
在並發規則頁簽,進行相關配置。
配置項
說明
總體並發數閾值
設定總體並發數閾值。
Web fallback 行為
選擇Web fallback 行為為返回指定內容或者跳轉到指定頁面。
選擇Web fallback 行為為跳轉到指定頁面時:
跳轉地址
輸入跳轉地址。
選擇Web fallback 行為為返回指定內容時:
HTTP狀態代碼
設定HTTP狀態代碼。預設為429。
返回 content-type
選擇返回 content-type為普通文本或JSON。
HTTP 返迴文本
輸入返迴文本。
是否開啟
開啟後,並發規則生效。
單擊建立或儲存,在提示對話方塊中單擊確定。
配置熔斷規則
熔斷規則的原理是監控路由的回應時間或異常比例,當達到指定的閾值時立即降低依賴優先順序。在指定的時間內,系統不會調用該不穩定的資源,避免後端服務受到影響,從而保障後端的高可用性。當指定時間過後,再重新恢複對該資源的調用。
在限流地區,單擊熔断规则頁簽。
在熔断规则頁簽,進行相關配置。
配置項
說明
统计窗口时长
統計的時間視窗長度,取值範圍為1秒~120分鐘。
最小請求數目
觸發熔斷的最小請求數目,若當前統計視窗內的請求數小於此值,即使達到熔斷條件規則也不會觸發。
閾實值型別
選擇以慢調用比例或異常比例作為閾值。
選擇以慢調用比例作為閾值,需要設定允許的慢調用RT(即最大的回應時間),請求的回應時間大於該值則統計為慢調用。在降級閾值中設定觸發熔斷的慢調用比例。規則開啟後,在單位統計時間長度內請求數目大於設定的最小請求數目,並且慢調用的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。經過熔斷時間長度後,熔斷器會進入探測恢複狀態,若接下來的一個請求回應時間小於設定的慢調用RT,則結束熔斷;若大於設定的慢調用RT,則會再次被熔斷。
選擇以異常比例作為閾值,需要在降級閾值中設定觸發熔斷的異常比例。規則開啟後,在單位統計時間長度內業務異常數目大於設定的最小請求數目,並且異常的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。
熔斷時間長度(s)
即熔斷觸發後持續的時間。資源進入熔斷狀態後,在配置的熔斷時間長度內,請求都會快速失敗。
Web fallback 行為
選擇Web fallback 行為為返回指定內容或者跳轉到指定頁面。
選擇Web fallback 行為為跳轉到指定頁面時:
跳轉地址
輸入跳轉地址。
選擇Web fallback 行為為返回指定內容時:
HTTP狀態代碼
設定HTTP狀態代碼。預設為429。
返回 content-type
選擇返回 content-type為普通文本或JSON。
HTTP 返迴文本
輸入返迴文本。
是否開啟
開啟後,熔斷規則生效。
單擊建立或儲存,在提示對話方塊中單擊確定。
網關版本為1.1.0-1.2.24
配置流控規則
流控規則的原理是監控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免後端服務被瞬時的流量高峰衝垮,從而保障高可用性。
在限流面板,單擊流控规则頁簽,然後單擊新增流控规则。

在新增流控防護規則頁面,進行相關配置。
在配置防護規則頁面,根據您的需要設定總體QPS閾值,並開啟是否開啟按鈕。然後單擊下一步配置限流行為。
在配置限流行為頁面,您可以通過單擊新增行为自訂觸發限流後的HTTP應答行為。

關聯好限流行為後,單擊新建,完成規則建立。
配置並發規則
並發規則的原理是統計當前網關處理中的請求數之和,當指標達到設定的閾值時立即攔截流量,可配置為後端服務的最大並發處理請求數,實現在高並發下的後端服務可用性保護。
在限流面板,單擊並發規則頁簽,然後單擊新增並發規則。
在新增並發防護規則頁面,進行相關配置。
在配置防護規則頁面,根據您的需要去設定總體並發數閾值並開啟是否開啟按鈕。然後單擊下一步。
在配置限流行為頁面,您可以通過單擊新增行為自訂觸發限流後的HTTP響應行為。
關聯好限流行為後,單擊新建,完成規則建立。
配置熔斷規則
熔斷規則的原理是監控路由的回應時間或異常比例,當達到指定的閾值時立即降低依賴優先順序。在指定的時間內,系統不會調用該不穩定的資源,避免後端服務受到影響,從而保障後端的高可用性。當指定時間過後,再重新恢複對該資源的調用。
在限流面板,單擊熔断规则頁簽,然後單擊新增熔断规则。
在新增熔斷防護規則頁面,進行相關配置。
在配置防護規則頁面,根據您的需要去設定總體並發數閾值並開啟是否開啟按鈕。然後單擊下一步。
參數
描述
统计窗口时长
統計的時間視窗長度,取值範圍為1秒~120分鐘。
最小請求數目
觸發熔斷的最小請求數目,若當前統計視窗內的請求數小於此值,即使達到熔斷條件規則也不會觸發。
閾實值型別
選擇以慢調用比例或異常比例作為閾值。
選擇以慢調用比例作為閾值,需要設定允許的慢調用RT(即最大的回應時間),請求的回應時間大於該值則統計為慢調用。在降級閾值中設定觸發熔斷的慢調用比例。規則開啟後,在單位統計時間長度內請求數目大於設定的最小請求數目,並且慢調用的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。經過熔斷時間長度後,熔斷器會進入探測恢複狀態,若接下來的一個請求回應時間小於設定的慢調用RT則結束熔斷,若大於設定的慢調用RT則會再次被熔斷。
選擇以異常比例作為閾值,需要在降級閾值中設定觸發熔斷的異常比例。規則開啟後,在單位統計時間長度內業務異常數目大於設定的最小請求數目,並且異常的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。
熔斷時間長度
即熔斷觸發後持續的時間。資源進入熔斷狀態後,在配置的熔斷時間長度內,請求都會快速失敗。
熔斷恢複策略
熔斷器進入恢複階段(半開啟狀態)的恢複策略。
單次探測恢複:經過熔斷時間長度後,熔斷器會對接下來的一個請求進行探測,若該請求符合預期(不為慢調用或沒有異常),則結束熔斷;否則重新回到熔斷階段。
在配置限流行為頁面,您可以通過單擊新增行為自訂觸發限流後的HTTP響應行為。
關聯好限流行為後,單擊新增,完成規則建立。
配置限流策略(舊版)
登入MSE網關管理主控台。
在左側導覽列,選擇云原生网关 > 网关列表,並在頂部功能表列選擇地區。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊路由管理 > 路由配置頁面,在需要變更的路由規則操作列單擊策略配置。
在策略配置地區,單擊限流頁簽。
如果您之前沒有配置過路由限流策略,請單擊配置策略。
如果您之前已經配置過路由限流策略,請單擊限流策略右側的
表徵圖。
在限流閾值規則中設定時間視窗和單擊請求閾值,然後單擊確定。
限流配置參數說明如下:
時間視窗:設定時間周期。預設設定為1秒,由周期數量和時間單位組成。
單機請求閾值:設定網關允許的單機請求閾值。
限流規則配置完成後,開啟開啟狀態右側的開關。
開啟:開啟限流策略後,請求該條路由會受到設定的時間視窗和請求次數限制。
關閉:關閉限流策略後,請求該條路由的次數無限制。
結果驗證
執行以下測試請求命令:
curl -I http://121.196.XX.XX/demo/item/list //網關入口IP未開啟限流策略的響應結果:
HTTP/1.1 200 OK x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-type: application/json content-length: 86 date: Mon, 29 Nov 2021 08:28:00 GMT x-envoy-upstream-service-time: 4 server: istio-envoy開啟限流策略的響應結果(HTTP狀態代碼返回429):
HTTP/1.1 429 Too Many Requests x-local-rate-limit: true content-length: 18 content-type: text/plain date: Mon, 29 Nov 2021 08:28:01 GMT server: istio-envoy