---

title: "API 网关与限流:令牌桶与熔断策略实战"

keywords:

  • 令牌桶
  • 熔断
  • 速率限制
  • 滑动窗口
  • API 网关

description: "结合令牌桶与熔断策略实现稳定的接口保护,给出可直接使用的中间件示例与验证要点。"

categories:

  • 文章资讯
  • 技术教程

---

API 网关与限流:令牌桶与熔断策略实战

Node.js 令牌桶中间件示例

const buckets = new Map();
function bucket(key, capacity = 100, refillRate = 50, intervalMs = 1000) {
  const b = buckets.get(key) || { tokens: capacity, last: Date.now() };
  const now = Date.now();
  const elapsed = now - b.last;
  const refill = Math.floor(elapsed / intervalMs) * refillRate;
  b.tokens = Math.min(capacity, b.tokens + Math.max(0, refill));
  b.last = now;
  buckets.set(key, b);
  if (b.tokens > 0) { b.tokens -= 1; return true; }
  return false;
}

function rateLimit(req, res, next) {
  const key = req.ip;
  if (bucket(key, 100, 50, 1000)) return next();
  res.status(429).json({ error: 'Too Many Requests' });
}

熔断策略要点

  • 对连续错误设置阈值与冷却时间
  • 失败快速返回,避免级联故障

验证

  • 通过压测观察 429 比例与响应时延
  • 结合日志确认限流与熔断的触发条件与恢复情况

总结

令牌桶适合稳定速率控制,熔断应对下游故障,两者结合提升系统韧性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部