Sentinel vs Guava RateLimiter vs Nginx 限流:三方案压测数据全公开
一、引言 限流是高并发系统的核心保障手段。面对突发流量,如何选择合适的限流方案? 今天我要对比三种主流限流方案:Guava RateLimiter(应用级令牌桶)、Sentinel(分布式滑动窗口)、Nginx limit_req(网关层漏桶)。通过真实压测数据,告诉你哪种方案最适合你的场景。 二、限流算法原理 2.1 三种算法对比 算法核心思想突发处理适用场景 令牌桶固定速率生成令牌,请求消耗令牌允许突发(桶内累积令牌)API 限流、削峰填谷 漏桶请求入队列,固定速率流出平滑输出,拒绝突发网关限流、流量整形 滑动窗口时间窗口内计数,动态调整精确控制,平滑过渡分布式限流、热点参数 2.2 算法图示 令牌桶算法 (Token Bucket) ┌──────────────────────────┐ │ 令牌桶 │ │ ┌──────────────────┐ │ │ │ ● ● ● ● ● ● ● ● │ │ │ │ (令牌) │ │ │ └──────────────────┘ │ │ ↓ 生成速率 = 1000/s │ │ │ │ 请求 → 取令牌 → 通过/拒绝 │ ....