<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ratelimit on Wilson Wu</title><link>https://wilsonwu.me/tags/ratelimit/</link><description>Recent content in Ratelimit on Wilson Wu</description><generator>Hugo -- 0.127.0</generator><language>zh-CN</language><lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://wilsonwu.me/tags/ratelimit/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Envoy Ratelimit 构建支持 RPM/TPM 的分布式 AI 限流服务器</title><link>https://wilsonwu.me/blog/2026/envoy-ai-ratelimit/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid>https://wilsonwu.me/blog/2026/envoy-ai-ratelimit/</guid><description>在普通 HTTP API 中，我们通常只需要限制“每分钟请求数”。但对于大模型接口，仅限制请求数量远远不够：一次请求可能只消耗几十个 Token，也可能消耗数万个 Token。
因此，一个实用的 AI 网关通常需要同时支持：
RPM（Requests Per Minute）：每分钟请求数。 TPM（Tokens Per Minute）：每分钟 Token 数。 按租户、API Key、模型或套餐分别计费。 多个 Envoy 实例共享同一份额度。 在高并发条件下避免各实例独立计数造成额度放大。 返回统一的 429 Too Many Requests 和剩余额度信息。 本文介绍如何使用 envoyproxy/ratelimit、Redis 和 Envoy 构建一套分布式 AI 限流系统。
为什么不能只使用 Envoy Local Rate Limit Envoy 提供了 Local Rate Limit Filter，但它的计数器默认位于当前 Envoy 进程中。
假设我们有 4 个 Envoy 实例，并为某个租户配置：
RPM = 100 如果每个 Envoy 都独立维护 100 RPM，那么整个集群实际上可能放行：
4 × 100 = 400 RPM 这显然不是我们想要的结果。</description></item></channel></rss>