限流是流量控制中最常用的手段之一,能有效地防止外部請求超出後端服務的承載能力,從而避免發生級聯雪崩。在高並發情境下,限流可以通過阻止一部分請求來保證後端服務一直可用。雲原生API Gateway支援路由層級的限流策略,可以精確地控制某個路由上的請求數量在設定的時間周期內不超過閾值。本文介紹雲原生API Gateway如何配置限流策略。
配置限流策略
配置的閾值均為整體閾值,每個網關節點的限流閾值=整體閾值/節點數,若限流閾值為小數則向上取整。例如,路由Demo上的QPS為1001,如果您的網關節點數量是2,那麼每個網關節點上,對路由Demo的QPS限制是501。
雲原生API Gateway提供了執行個體內和執行個體外兩種配置限流策略的方式:
執行個體外API
登入雲原生API Gateway控制台。左側導覽列選擇API,並在頂部功能表列選擇地區。
單擊目標API,您可以在下拉框中選擇需要配置限流的執行個體,或者選擇全部執行個體。

選擇路由列表中的目標路由。
執行個體內API
登入雲原生API Gateway控制台。左側導覽列選擇執行個體,並在頂部功能表列選擇地區。
在執行個體頁面,單擊目標網關執行個體ID。左側導覽列選擇API,單擊目標API。
選擇路由列表中的目標路由。
單擊策略配置頁簽,然後單擊入站處理的啟動策略/外掛程式。
添加限流策略,包括流量控制、並發控制和熔斷策略。
流量控制
流控規則的原理是監控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免後端服務被瞬時的流量高峰衝垮,從而保障高可用性。
單擊流量控制卡片,在添加策略: 流量控制面板配置相關參數,然後單擊添加。
配置項
說明
是否開啟
開啟後,流量控制規則生效。
總體QPS閾值
設定總體QPS閾值。
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 返迴文本
輸入返迴文本。
選擇Web fallback 行為為跳轉到指定頁面時:
跳轉地址
輸入跳轉地址。
熔斷
熔斷規則的原理是監控路由的回應時間或異常比例,當達到指定的閾值時立即降低依賴優先順序。在指定的時間內,系統不會調用該不穩定的資源,避免後端服務受到影響,從而保障後端的高可用性。當指定時間過後,再重新恢複對該資源的調用。
單擊熔斷卡片,在添加策略: 熔斷面板配置相關參數,然後單擊添加。
配置項
說明
是否開啟
開啟後,熔斷規則生效。
統計視窗時間長度
統計的時間視窗長度,取值範圍為1秒~120分鐘。
最小請求數目
觸發熔斷的最小請求數目,若當前統計視窗內的請求數小於此值,即使達到熔斷條件規則也不會觸發。
閾實值型別
選擇以慢調用比例(%)或異常比例(%)作為閾值。
選擇以慢調用比例(%)作為閾值,需要設定允許的慢調用RT(即最大的回應時間),請求的回應時間大於該值則統計為慢調用。在降級閾值中設定觸發熔斷的慢調用比例。規則開啟後,在單位統計時間長度內請求數目大於設定的最小請求數目,並且慢調用的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。經過熔斷時間長度後,熔斷器會進入探測恢複狀態,若接下來的一個請求回應時間小於設定的慢調用RT,則結束熔斷;若大於設定的慢調用RT,則會再次被熔斷。
選擇以異常比例(%)作為閾值,需要在降級閾值中設定觸發熔斷的異常比例。規則開啟後,在單位統計時間長度內業務異常數目大於設定的最小請求數目,並且異常的比例大於閾值,則接下來的熔斷時間長度內請求會自動被熔斷。
慢調用RT
設定允許的慢調用RT(即最大的回應時間)。
熔斷比例閾值
觸發熔斷的慢調用比例閾值,取值範圍 0-100(代表 0%-100%)。
熔斷時間長度(s)
即熔斷觸發後持續的時間。資源進入熔斷狀態後,在配置的熔斷時間長度內,請求都會快速失敗。
Web fallback 行為
選擇Web fallback 行為為返回指定內容或者跳轉到指定頁面。
選擇Web fallback 行為為跳轉到指定頁面時:
跳轉地址
輸入跳轉地址。
選擇Web fallback 行為為返回指定內容時:
HTTP狀態代碼
設定HTTP狀態代碼。預設為429。
返回 content-type
選擇返回 content-type為普通文本或JSON。
HTTP 返迴文本
輸入返迴文本。
結果驗證
執行以下測試請求命令:
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