上云无忧 > 文档中心 > 腾讯云 API 网关插件 - 参数流量控制
腾讯云 API 网关插件 - 参数流量控制

文档简介:
操作场景: 参数流控可以针对用户的请求参数以及用户在插件中设置的条件执行进行流控,参数流控配置支持如下特性: 支持秒、分钟、小时、天的流控维度。 可以根据客户端请求参数、API 网关内置的系统参数设置条件,来执行不同的流控维度。 可以使用单个参数、或多个参数的组合来设置流控。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

参数流控可以针对用户的请求参数以及用户在插件中设置的条件执行进行流控,参数流控配置支持如下特性:
支持秒、分钟、小时、天的流控维度
可以根据客户端请求参数、API 网关内置的系统参数设置条件,来执行不同的流控维度
可以使用单个参数、或多个参数的组合来设置流控
注意
参数流控插件和 基础流控插件 同属于流控插件,一个 API 上只能绑定一个流控插件。因此如果在API已绑定流控插件时,再次绑定流控插件,则会自动替换成最新选定的插件。

操作步骤

步骤1:创建插件

1. 登录 API 网关控制台
2. 在左侧导航栏,单击插件 > 系统插件,进入系统插件列表页。
3. 单击列表左上角的新建,插件类型选择参数流量控制

参数
是否必填
说明
开启默认策略
必填
是否开启默认策略;默认策略是 API 级别的流控,独立于所有的流控策略;每次请求时,会先校验默认流控,再校验流控策略。
默认流控值
开启默认策略后必填
默认流控值是指时长内一个 API 能够被访问的次数上限,可输入正整数。
默认控制时长
开启默认策略后必填
支持秒、分钟、小时、天四个单位,与默认流控值搭配使用。
限流策略
必填
设置针对参数的限流策略,同一个参数限流插件内最多创建10条限流策略,限流策略的配置项详见下文。
同一个参数限流插件内最多创建10条限流策略,每条限流策略中都有以下配置项:
参数
是否必填
说明
策略名称
必填
当前策略的名称,最多50个字符,要求同一插件下不同策略间名称不能一样。
权重
必填
可输入0-100之间的正整数,权重越大优先级越高,要求同一插件下不同策略间权重不能一样。
触发条件
选填
如果设置了条件,只有当条件符合时,才会执行此条流控策略。
请输入条件表达式,条件表达式的写作规范详见本文 注意事项 章节。
流控参数位置
必填
仅支持填写一个流控参数,需要选择位置并填写参数名。例如:Header.ClientIP 表示,针对 Header 中每个 ClientIP 参数的取值分别进行流控。
流控参数位置支持 Header、Query、Path。Path 参数代表完整 API 路径,不需要填写参数名称。
流控参数名称
必填
仅支持填写一个流控参数,需要选择位置并填写参数名。例如:Header.ClientIP 表示,针对 Header 中每个 ClientIP 参数的取值分别进行流控。
流控参数名称需要和流控参数位置搭配使用。Path 参数代表完整 API 路径,不需要填写参数名称。
流控值
必填
本条策略中针对流控参数的流控值,请输入正整数,必须与控制时长搭配使用。
控制时长
必填
支持秒、分钟、小时、天四个单位,与流控值搭配使用。

步骤2:绑定 API 并生效

1. 系统插件列表中选中刚刚创建好的插件,单击操作列的绑定 API
2. 在绑定 API 弹窗中选择服务和环境,并选择需要绑定插件的 API。

3. 单击确定,即可将插件绑定到 API,此时插件的配置已经对 API 生效。

原理详解


默认策略是 API 级别的流控,独立于所有的限流策略。每次请求时,会先校验默认策略,再校验限流策略。
一个插件中同时配置多条流控策略时,API 网关将按策略权重由大到小的顺序依次校验请求是否满足条件;只要有一条流控策略不满足则触发流控,拒绝请求。
校验单条流控策略时,若配置了条件表达式将先校验条件,通过条件校验后再进行参数校验;未配置条件表达式时将直接根据参数校验。
如果在流控策略中设置 header.userid 参数每分钟流控10次,针对请求中该参数的每个不同取值,都会分别按每分钟十次进行限流。

PluginData

		
{
"default_window":60, // 限流时间窗口,单位秒,取值 0 时默认限流关闭
"default_rate_limit":5, // 限流值,需要正整数
"strategies":[ // 参数限流策略列表,至少一个策略,最多 10 个策略
{
"name":"a", // 策略名称
"strategy_weight":0, // 策略执行优先级,数值高先执行,不允许重复
"parameters":[ // 限流参数列表,暂时支持 1 个参数
{
"type":"query", // 限流参数类型,取值范围:[query,header,path]
"name":"a" // 限流参数名称,参数类型为 path 时,参数为整个请求路径,不需要传 name
}
],
"rate_limit":1, // 策略限流值,需要正整数
"window":1, // 策略限流时间窗口,单位秒
"condition":"" // 策略触发条件,空字符串则为无条件执行
}
]
}

注意事项

参数流控插件的条件表达式与条件路由插件的条件表达式完全一致,写作方法请参见 条件表达式写作指南
相似文档
  • 操作场景: 跨域资源共享(Cross-Origin Resource Sharing,CORS)是 W3C 的标准。CORS 允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。目前 API 网关支持对 CORS 规则的配置,从而根据需求允许或者拒绝相应的跨域请求。
  • 操作场景: 条件路由插件可根据参数取值转发到不同后端。根据请求的参数取值与系统参数取值,按规则将不同的客户端请求转发到不同后端地址,可广泛应用于灰度发布、蓝绿发布、租户路由等场景。
  • 操作场景: 通过配置缓存插件,API 网关可存储后端应答,当遇到相同请求参数的请求时,API 网关将直接返回缓存的应答,无需转发到后端服务,以此达到降低后端的负荷,减少时延,增加平滑度的目的。
  • 操作场景: 如果 API 网关提供的认证鉴权方式不能满足您的需求,您可以使用自定义认证插件,通过您自定义的代码进行认证鉴权。 自定义认证插件作用在请求过程中,客户端请求 API 网关后,API 网关会将请求内容转发到认证函数中。您可以将认证函数部署在云函数上,公网、或内网 VPC 上,认证通过后请求才会被转发给业务后端,否则将拒绝请求。
  • 操作场景: 客户端发给业务后端的请求体中包含很多字段,如果您需要修改请求体内容,可以通过自定义请求体插件实现。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部