加载中...
限流是在流量超过系统处理能力时主动丢弃或延迟部分请求的技术手段,防止过载导致整体崩溃。常见算法包括令牌桶、漏桶和固定窗口计数器,广泛应用于 API 网关、数据库连接池和操作系统内核。

| 类型 | 流量控制技术 |
| 常用实现 | Redis + Lua、Nginx limit_req、Sentinel |
| HTTP 标准响应码 | 429 Too Many Requests |
限流算法的选择很大程度上决定了系统在突发流量下的表现:
单机限流实现简单,分布式系统的限流要复杂得多。假设限制某个用户每秒 100 次 API 调用,但服务有 10 个实例,每个实例只能感知自己的流量,单机计数无法全局生效。
常见解决方案是用 Redis 做集中计数:所有实例把计数器写到同一个 Redis key,原子自增并设过期时间。Redis 官方提供了基于此思路的 INCR + EXPIRE 脚本方案,以及更精细的 Redis Cell 模块(实现了 GCRA 通用信元速率算法)。Stripe、GitHub、Cloudflare 公开分享过各自的分布式限流实现细节。

| 类型 | 流量控制技术 |
| 常用实现 | Redis + Lua、Nginx limit_req、Sentinel |
| HTTP 标准响应码 | 429 Too Many Requests |
登录 后参与讨论
暂无讨论,来发表第一条评论吧