跳到主要内容

入口限速

自 v1.5.0 起,Aidy Gateway 支持以租户为维度的入口限速能力。该能力基于动态配置中的 Tenant 定义,并通过路由字段 tenant_id 进行关联。启动前需要在静态配置中设置 rate-limit.redis,用于存储限速窗口。

配置步骤

  1. 在 Redis V2 动态配置中新增 tenant/<tenant-id> Field,内容为 Tenant 的 ProtoJSON。可参考:
{
"id": "tenant-a",
"inboundRateLimitQps": 120,
"detectRateLimitCpm": 2400
}
  1. 在对应路由的动态配置中设置 tenant_id: tenant-a,Aidy Gateway 会在运行时将该路由归属于 tenant-a 并应用其限速。

  2. (可选)在路由的 plugin_config.rate_limit 中设置 headers_mode,控制限速相关响应头的返回策略。

当限额字段未填写或为 0 时,表示未启用对应的限速项。

插件配置

入口限速由独立的 ratelimit-inbound 插件完成,运行在 Inbound 阶段。插件会自动根据路由绑定的租户 ID 调用 Redis 计数,并在达到上限时返回 429 Too Many Requests

plugin_config.rate_limit.headers_mode 支持以下取值:

说明
ALWAYS每次请求都返回限速相关响应头
ON_LIMIT默认值,仅在触发限速(返回 429)时返回响应头
NEVER不返回任何限速信息

插件使用的响应头包括:

  • X-RateLimit-Limit: 当前窗口允许的最大请求数(QPS)
  • X-RateLimit-Remaining: 剩余可用请求数
  • X-RateLimit-Reset: 当前窗口结束的剩余秒数
  • Retry-After: 触发限速时,建议客户端重试前等待的秒数(仅在 ALWAYS/ON_LIMIT 且被限速时返回)
  • Server: 当触发限速返回 429 时固定为 aidy

默认策略可通过静态配置的 rate-limit.headers_mode 指定,未设置时默认 on-limit

后续的限速执行逻辑会依赖租户级配置及插件行为执行业务侧的速率控制策略。