限流插件可以控制网关实例级别/路由级别的访问请求阈值,保障后端服务的稳定性。本文为您介绍如何创建限流插件。
背景信息
- 路由级别限流配置 = 在一个统计周期内,当前路由上所有请求方法、所有匹配路径、所有域名下的请求量总和。
- 实例级别限流配额 = 在一个统计周期内,所有路由请求量总和。
- 网关对实例级别限流策略和路由级别限流策略进行分别计数。其中,路由级别限流策略生效优先级高于网关级别。
例如:假设 A 网关实例下有 a、b、c、d 共 4 条路由。实例 A、路由 a/b/c 均配置了限流策略,路由 d 未配置限流策略。在一个统计周期内,
- 若请求命中 A 实例下的 a/b/c 路由,将对 a/b/c 路由分别进行计数,不对实例 A 计数。
- 若请求命中 A 实例下未设置限流策略的 d 路由,则仅对实例 A 进行计数。
前提条件
使用限制
- 开启限流插件后,将在每个网关副本上单独生效,不同副本间的限流计数相互隔离。
例如:当您的网关实例为 2 副本时,配置 100 次/分钟的实例级别限流后,每个副本的限流为 100 次/分钟,实际网关的理论最大流量为 200 次/分钟。 - 限流策略生效优先级:路由级别 > 实例级别。
- 路由级别限流仅支持 HTTP(S) 路由,不支持 TCP 路由。
- 每个网关实例仅允许配置一个限流插件。
- 每条路由仅允许配置一个限流插件。
操作步骤
说明
实例级别限流插件和路由级别限流插件均支持双入口配置,如下:
- 实例级别限流插件,可通过 实例管理 进入目标实例的 插件列表 页签中开启并配置限流插件,也可通过 插件管理 > 限流插件 入口进行配置。
- 路由级别限流插件,可通过 路由管理 > 服务列表(域名) 进入目标路由的 插件列表 页签中开启并配置限流插件,也可通过 插件管理 > 限流插件 入口进行配置。
下文以 插件管理 > 限流插件 入口为例进行介绍。
登录 API 网关控制台。
在左侧导航栏选择 插件管理 > 限流插件。
在限流插件页面,单击 创建插件,配置限流插件的参数。
配置项 | 说明 |
---|
生效级别 | 选择限流插件的生效级别,包括: - 实例级别:限流阈值在实例内生效,需要指定生效的目标实例。
- 路由级别:限流阈值在服务内生效,需要指定生效的目标实例、目标服务和目标路由。
|
备注 | 输入关于当前限流插件的备注信息,可以为空。 |
限流阈值 | 配置当前实例/路由在 1 个间隔周期内允许被访问的次数。超过目标次数后,访问请求将被拒绝,系统会返回错误码 429 Too Many Requests ,并提示 rate_limited 。 |
间隔周期 | 定义间隔周期的时长,包括:1s(1 秒)、1m(1 分钟)、1h(1 小时)和 1d(1 天)。 |
单击 确定,完成配置。
操作结果
- 配置完成后,在 限流插件 列表将生成一条新的限流插件记录。
- 在一个限流周期内,向开启限流插件的网关实例/路由发送请求。预期在目标配额内的请求可访问成功,超出目标配额的请求将被拒绝,并提示
rate_limited
。