# API 网关限流与熔断实践(令牌桶、漏桶、滑动窗口与阈值) ## 概述 限流与熔断是保护后端稳定性的关键。本文总结主流算法与阈值设计,并提供网关实现与验证手段。 ## 关键实践与参数 - 令牌桶(Token Bucket): - 速率 `r`(令牌/秒)与突发容量 `b`(桶大小)决定 QPS 与瞬时突发。 - 漏桶(Leaky Bucket): - 恒定出水速率,平滑突发;适合严格平滑流量场景。 - 滑动窗口(Sliding Window): - 按窗口统计请求数,常用于分布式限流计数。 - 熔断阈值: - 基于错误率(如 50x 比例)与平均延迟设定触发条件,含半开探测。 ## 实现示例(伪配置) ``` rate_limit: token_bucket: rate: 1000 # 每秒令牌生成 burst: 3000 # 最多瞬时突发 sliding_window: window_ms: 1000 max_requests: 1200 circuit_breaker: error_ratio_threshold: 0.2 latency_ms_threshold: 800 reset_timeout_ms: 30000 ``` ## 验证方法 - 压测观察 QPS、尾延迟与拒绝比例;验证半开探测恢复行为。 - 日志与指标上报:限流命中率、熔断触发次数、降级响应占比。 - 分布式计数一致性校验(滑动窗口在多副本下的精度)。 ## 注意事项 - 限流与重试需联动;避免同步重试导致雪崩。 - 区分用户级/接口级与全局级限流;优先保护关键后端。 - 熔断半开探测需渐进放量,防止抖动。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部