流量控制2.0策略说明
流量控制2.0策略可以限制单位时间内API的被调用次数,支持参数流控、基础流控和基于基础流控的特殊流控。
- 基础流控
可以对API、用户、凭据、源IP进行多维度流控,与已有的流量控制策略说明功能一致但不兼容。
- 参数流控
- 基于基础流控的特殊流控
如果此策略在当前实例中不支持,请联系技术支持升级实例到最新版本。
使用限制
- 已了解前提条件。
- 如果一个API绑定流量控制策略后,继续绑定流量控制2.0策略,流量控制策略会失效。
- 参数流控的参数支持1-32个字符;参数流控的规则最多可定义100个。
- 策略内容最大长度65535。
配置参数说明
参数 |
配置说明 |
---|---|
流控类型 |
推荐使用高性能流控。
|
策略生效范围 |
|
时长 |
流量限制的时长。
|
API流量限制 |
单个API被调用次数上限。 与“时长”配合使用,表示单位时间内的单个API请求次数上限。 |
用户流量限制 |
单个用户调用API次数上限,如果API认证方式为IAM认证,用户流量根据项目ID来限制;如果API认证方式为APP认证,用户流量根据账号ID来限制。账号ID和项目ID请参考下文“特殊租户”配置说明。
|
凭据流量限制 |
单个凭据调用API次数上限,仅适用于API的安全认证方式为APP认证时。
|
源IP流量限制 |
单个IP地址调用API次数上限。您可以选择配置实例的“real_ip_from_xff”参数使用X-Forwarded-For头中的IP作为流控的判断依据。
|
参数流控配置 |
参数流控配置开关。开启后,以参数维度进行流控限制。 |
定义参数 |
定义用于规则匹配的参数。
|
定义规则 |
定义规则的匹配条件,以及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流量限制值。 |
脚本配置示例
{ "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 } ] }