流量控制插件
流量控制插件可以限制单位时间内API的被调用次数,支持参数流控、基础流控和基于基础流控的特殊流控。
如果当前实例不支持流量控制插件,请联系技术支持升级实例。
- 基础流控
可以对API、用户、应用、源IP进行多维度流控,与已有的流量控制功能一致但不兼容。
- 参数流控
- 基于基础流控的特殊流控
使用限制
- 如果一个API绑定流量控制后,继续绑定流量控制插件,流量控制会失效。
- 参数流控的规则最多可定义100个。
- 插件内容最大长度65535。
配置参数说明
参数 |
配置说明 |
---|---|
策略生效范围 |
|
时长 |
流量限制的时长。
|
API流量限制 |
单个API被调用次数上限。 与“时长”配合使用,表示单位时间内的单个API请求次数上限。 |
用户流量限制 |
单个用户调用API次数上限,如果API认证方式为IAM认证,用户流量根据项目ID来限制;如果API认证方式为APP认证,用户流量根据账号ID来限制。账号ID和项目ID请参考下文“特殊租户”配置说明。
|
应用流量限制 |
单个应用调用API次数上限,仅适用于API的安全认证方式为APP认证时。
|
源IP流量限制 |
单个IP地址调用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流量限制值。 |
脚本配置示例
{ "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": "2e421d76dc6c4c75941511ccf654e368", "limit": 10 } ] }, { "type": "user", "policies": [ { "key": "878f1b87f71c40a7a15db0998f358bb9", "limit": 10 } ] } ], "parameters": [ { "type": "path", "name": "reqPath", "value": "reqPath" }, { "type": "method", "name": "method", "value": "method" }, { "type": "header", "name": "Host", "value": "Host" } ], "rules": [ { "match_regex": "[\"Host\",\"==\",\"www.abc.com\"]", "rule_name": "rule-jlce", "time_unit": "second", "interval": 0, "limit": 5 } ] }