更新时间:2024-11-27 GMT+08:00
分享

配置API的流量控制2.0

流量控制2.0策略可以限制单位时间内API的被调用次数,支持参数流控、基础流控和基于基础流控的特殊流控。

  • 基础流控

    可以对API、用户、凭据、源IP进行多维度流控,与已有的配置API的流量控制功能一致但不兼容。

  • 参数流控

    支持根据Header、Path、Method、Query以及系统变量中的参数值进行自定义流控。

  • 基于基础流控的特殊流控

    对某个凭据或租户进行特定的流控。

如果此策略在当前实例中不支持,请联系技术支持升级实例到最新版本。

策略参数会明文展示,为防止信息泄露,请谨慎配置。

使用限制

  • 如果一个API绑定流量控制策略后,继续绑定流量控制2.0策略,流量控制策略会失效。
  • 参数流控的参数支持1-32个字符;参数流控的规则最多可定义100个。
  • 策略内容最大长度65535。
  • 一个API只能绑定一个相同类型的策略。
  • 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。
  • 策略的绑定、解绑、更新会实时生效,不需要重新发布API。
  • API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。
  • 如果策略与API有绑定关系,则策略无法执行删除操作。

创建流量控制2.0策略

  1. 进入API网关控制台页面。
  2. 根据实际业务在左侧导航栏上方选择实例。
  1. 在左侧导航栏选择“API管理 > API策略”。
  2. 在“策略管理”页面,单击“创建策略”。
  3. 在“选择策略类型”弹窗中,选择“插件策略 > 流量控制2.0”。
  4. 在“创建策略”弹窗中,配置策略信息。

    表1 流量控制2.0参数说明

    参数

    说明

    策略名称

    填写策略的名称,根据业务规划自定义。建议您按照一定的命名规则填写策略名称,方便您快速识别和查找。

    策略类型

    固定为“流量控制2.0”。

    描述

    填写策略的描述信息。

    策略内容

    策略的配置内容,支持表单配置和脚本配置两种方式。

    流控类型

    推荐使用高性能流控。

    • 高精度流控:高并发场景下实例内部会有一定的性能损耗,适用于并发量较小的场景。
    • 高性能流控:高并发场景下实例内部性能损耗较小,单位时间内会偶现较小的误差值,适用于并发量较大的场景。
    • 单机流控:实例的每个节点各自进行流控,高并发场景下实例内部性能损耗最小,单位时间内会存在一定的误差值,适用于并发量更大的场景。

    策略生效范围

    • 单个API生效

      对单个API进行流量统计和控制。

    • API共享生效

      对绑定了该策略的所有API进行总流量统计和控制。

    时长

    流量限制的时长。

    • 与“API流量限制”配合使用,表示单位时间内的单个API请求次数上限。
    • 与“用户流量限制”配合使用,表示单位时间内的单个用户请求次数上限。
    • 与“凭据流量限制”配合使用,表示单位时间内的单个凭据请求次数上限。
    • 与“源IP流量限制”配合使用,表示单位时间内的单个IP地址请求次数上限。

    API流量限制

    单个API被调用次数上限。

    与“时长”配合使用,表示单位时间内的单个API请求次数上限。

    用户流量限制

    单个用户调用API次数上限,如果API认证方式为IAM认证,用户流量根据项目ID来限制;如果API认证方式为APP认证,用户流量根据账号ID来限制账号ID和项目ID请参考下文“特殊租户”配置说明。

    • 不超过“API流量限制”。
    • 与“时长”配合使用,表示单位时间内的单个用户请求次数上限。
    • 如果主账号下有多个子用户访问API,按主账号累计的调用次数进行限制。

    凭据流量限制

    单个凭据调用API次数上限,仅适用于API的安全认证方式为APP认证时。

    • 不超过“API流量限制”。
    • 与“时长”配合使用,表示单位时间内的单个凭据请求次数上限。

    源IP流量限制

    单个IP地址调用API次数上限。您可以选择配置实例的“real_ip_from_xff”参数使用X-Forwarded-For头中的IP作为流控的判断依据。

    • 不超过“API流量限制”。
    • 与“时长”配合使用,表示单位时间内的单个IP地址请求次数上限。

    参数流控配置

    参数流控配置开关。开启后,以参数维度进行流控限制。

    定义参数

    定义用于规则匹配的参数。

    • 参数位置:用于规则匹配的参数位置。
      • path:API请求的URI,系统默认配置。
      • method:API请求方法,系统默认配置。
      • Header:请求头的key值。
        说明:

        建议不要设置敏感信息,以防泄露。

      • Query:QueryString的key值。
      • System:系统参数。
    • 参数:用于判断与规则匹配中的参数值是否匹配。

    定义规则

    定义规则的匹配条件,以及API流量限制和时长。

    单击“添加规则”,可添加多个规则。

    • 规则

      单击,可添加多个条件表达式,选择“定义参数”中的参数名和判断条件,以及输入参数值。

      • =为等于
      • !=为不等于
      • pattern为正则表达式
      • enum为枚举值,多个参数值之间用英文逗号分隔
    • API流量限制

      API调用次数的最大值。

    • 时长

      定义规则的流量控制时长,如果此处不配置时长,规则的流量控制时长以“策略基本信息”的时长为准。

    例如,在“定义参数”中添加参数“Host”,参数位置选择“Header”;在“定义规则”中添加一条规则,匹配条件设置成“Host = www.abc.com”,API流量限制为10,时长为60s。表示在60s内,对于请求头域中Host参数等于“www.abc.com”的API,且API调用次数达到10,参数流控生效。

    特殊流控配置

    特殊流控配置开关。开启后,“基础流控”的用户流量限制/凭据流量限制与“特殊流控”的特殊租户/特殊凭据共同作用时,以特殊流控值为准。

    特殊租户

    租户ID为账号ID或项目ID。

    阈值为单位时间内,此租户访问API的最大值,不超过“基础流控”的API流量限制值。

    特殊凭据

    选择已有凭据,阈值为单位时间内,此凭据访问API的最大值,不超过“基础流控”的API流量限制值。

  5. 单击“确定”。

    • 如果您需要复制已创建的策略,请在已创建策略的“操作”列中单击“克隆”配置参数即可。

      克隆策略的名称不能与已创建的策略名称重复。

    • 策略创建后,您还需要为策略绑定API,才能使策略对API生效。

脚本配置示例

{
  "scope": "basic",
  "default_interval": 60,
  "default_time_unit": "second",
  "api_limit": 100,
  "app_limit": 50,
  "user_limit": 50,
  "ip_limit": 20,
  "specials": [
    {
      "type": "app",
      "policies": [
        {
          "key": "e9230d70c749408eb3d1e838850cdd23",
          "limit": 10
        }
      ]
    },
    {
      "type": "user",
      "policies": [
        {
          "key": "878f1b87f71c40a7a15db0998f358bb9",
          "limit": 10
        }
      ]
    }
  ],
  "algorithm": "counter",
  "parameters": [
    {
      "id": "3wuj354lpptv0toe0",
      "value": "reqPath",
      "type": "path",
      "name": "reqPath"
    },
    {
      "id": "53h7e7j11u38l3ocp",
      "value": "method",
      "type": "method",
      "name": "method"
    },
    {
      "id": "vv502bnb6g40td8u0",
      "value": "Host",
      "type": "header",
      "name": "Host"
    }
  ],
  "rules": [
    {
      "match_regex": "[\"Host\",\"==\",\"www.abc.com\"]",
      "rule_name": "u8mb",
      "time_unit": "second",
      "interval": 2,
      "limit": 5
    }
  ]
}

为策略绑定API

  1. 单击策略名称,进入策略详情。
  2. 在API列表区域选择环境后,单击“绑定API”。
  3. 筛选API分组以及发布环境,勾选所需的API。

    支持通过API名称或标签筛选API,标签为创建API时定义的标签。

  4. 单击“确定”,绑定完成。

    • 如果单个API不需要绑定此策略,单击API所在行的“解绑”。
    • 如果批量API不需要绑定此策略,则勾选待解绑的API,单击列表上方“解绑”。最多同时解绑1000个API。

相关文档