Skip to content

接口限流拦截器 🚦

功能介绍 💡

WARNING

接口限流拦截器就像一个智能红绿灯系统,通过令牌桶算法来控制接口访问流量,支持集群限流。它能有效防止系统被过度访问,保护系统稳定运行。

限流方式 🔄

限流类型类型值说明应用场景
全局限流ALL针对所有请求进行限流控制系统总体访问量
令牌限流AUTHORIZATION基于用户令牌的限流控制单个用户访问频率
IP限流IP基于访问者IP的限流防止单IP频繁访问
商户限流MERCHANT基于商户身份的限流控制商户API调用量
接口限流PATH基于接口路径的限流保护特定接口不被滥用

详细配置说明 ⚙️

核心参数说明

参数名类型必填默认值说明
enabledbooleanfalse是否启用限流器
rulesarray-限流规则列表

限流规则配置详解 (rules)

参数名类型必填默认值说明
typearray-限流类型(可多选组合)
urlsarray-需要限流的URL地址列表
replenish-ratenumber1令牌产生速率(个/秒)
burst-capacitynumber1令牌桶容量
requested-tokensnumber1每次请求消耗令牌数
restorebooleanfalse是否允许重置令牌(v1.4.0+)

配置示例 📋

1. 全局限流配置

yaml
wueasy:
  gateway:
    filter:
      request-rate-limiter:
        enabled: true
        rules: 
        - type:  # 全局限流
          - ALL
          urls:  # 限流路径
          - /demo/**
          replenish-rate: 1  # 每秒产生1个令牌
          burst-capacity: 1  # 令牌桶容量1个

2. 接口级别限流

yaml
wueasy:
  gateway:
    filter:
      request-rate-limiter:
        enabled: true
        rules: 
        - type:   # 按接口路径限流
          - PATH
          urls: 
          - /demo/**
          replenish-rate: 1  # 每个接口每秒1次请求
          burst-capacity: 1

3. 多维度组合限流

yaml
wueasy:
  gateway:
    filter:
      request-rate-limiter:
        enabled: true
        rules: 
        - type: 
          - PATH
          - AUTHORIZATION  # 同时按路径和令牌限流
          urls: 
          - /demo/**
          replenish-rate: 1
          burst-capacity: 1

4. 自定义时间窗口限流

yaml
wueasy:
  gateway:
    filter:
      request-rate-limiter:
        enabled: true
        rules: 
        - type: 
          - PATH
          - AUTHORIZATION
          urls: 
          - /demo/**
          replenish-rate: 1  # 每秒产生1个令牌
          burst-capacity: 60  # 最多存储60个令牌
          requested-tokens: 60  # 每次请求消耗60个令牌(相当于每分钟允许1次请求)

最佳实践 💡

  1. 限流策略选择

    • 优先考虑业务场景需求
    • 合理设置令牌生成速率
    • 根据接口重要性设置不同策略
  2. 性能优化建议

    • 避免过于频繁的限流检查
    • 合理设置令牌桶容量
    • 注意集群环境的同步问题
  3. 监控和告警

    • 监控限流情况
    • 设置限流告警阈值
    • 定期分析限流日志

常见问题 ❓

  1. 请求被限流

    • 检查当前限流规则配置
    • 验证令牌桶容量是否合理
    • 确认是否存在突发流量
  2. 限流不生效

    • 确认限流器是否启用
    • 检查URL匹配规则
    • 验证限流类型配置
  3. 令牌消耗过快

    • 检查令牌生成速率
    • 优化请求频率
    • 调整令牌桶容量

安全提示 ⚠️

CAUTION

  1. 合理配置限流阈值,避免影响正常业务
  2. 关注限流日志,及时发现异常访问
  3. 考虑设置限流告警机制
  4. 定期评估和调整限流策略

相关文档 📚