云原生网关支持针对路由级别的限流策略,细粒度的限制匹配在某个路由上的请求数量在设定的时间周期内不大于阈值。本文介绍云原生网关如何配置限流策略。

背景信息

限流作为流量控制的最常用手段之一,可以有效防止外部请求容量超过后端服务能够承载的压力,从而避免发生级联雪崩。在高并发的场景下,限流通过阻止一部分请求来保证后端服务始终处于可用状态。

注意 云原生网关目前提供的限流是单机限流,也就是说限制在单个网关上的请求数量。例如,限制匹配/demo上请求数量在1秒内为1000次,如果您的网关节点数量是2,那么对于网关整个集群来说,匹配/demo上请求数量在1秒内是小于等于2000次。

配置限流策略

  1. 登录MSE网关管理控制台
  2. 在左侧导航栏选择云原生网关 > 网关列表
  3. 在顶部菜单栏选择地域,然后单击目标网关名称或操作列下的管理
  4. 网关详情页面左侧导航栏单击路由配置
  5. 路由配置页面,在需要变更的路由规则操作列单击策略配置
  6. 策略配置区域单击限流页签。
    • 如果您之前没有配置过路由限流策略,请单击配置策略
    • 如果您之前已经配置过路由限流策略,请单击限流策略右侧的编辑图案图标。
  7. 限流阈值规则中设置时间窗口限制请求次数,然后单击确认
    限流配置

    限流配置参数说明如下:

    • 时间窗口:设置时间周期。默认设置为1秒,由周期数量和时间单位组成。
    • 限制请求次数:设置网关允许的请求次数。
    说明 限流配置是指一个时间窗口内网关允许的请求次数。例如,当配置限流设置为1秒50次请求和2秒100次请求,两个配置平均看起来都是1秒50次请求,区别在于2秒100次请求配置可以在周期的前一秒就请求100次,或者100次都在周期的后1秒请求,弹性相比于1秒50次请求更高,同时对系统峰值的要求也不一样。
  8. 限流规则配置完成后,打开开启状态右侧的开关。
    • 开启:开启限流策略后,请求该条路由会受设置的时间窗口和请求次数限制。
    • 关闭:关闭限流策略后,请求该条路由的次数无限制。

结果验证

执行以下测试请求命令:
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