外观
接口限流拦截器 🚦
功能介绍 💡
WARNING
接口限流拦截器就像一个智能红绿灯系统,通过令牌桶算法来控制接口访问流量,支持集群限流。它能有效防止系统被过度访问,保护系统稳定运行。
限流方式 🔄
限流类型 | 类型值 | 说明 | 应用场景 |
---|---|---|---|
全局限流 | ALL | 针对所有请求进行限流 | 控制系统总体访问量 |
令牌限流 | AUTHORIZATION | 基于用户令牌的限流 | 控制单个用户访问频率 |
IP限流 | IP | 基于访问者IP的限流 | 防止单IP频繁访问 |
商户限流 | MERCHANT | 基于商户身份的限流 | 控制商户API调用量 |
接口限流 | PATH | 基于接口路径的限流 | 保护特定接口不被滥用 |
详细配置说明 ⚙️
核心参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
enabled | boolean | 否 | false | 是否启用限流器 |
rules | array | 是 | - | 限流规则列表 |
限流规则配置详解 (rules)
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
type | array | 是 | - | 限流类型(可多选组合) |
urls | array | 是 | - | 需要限流的URL地址列表 |
replenish-rate | number | 否 | 1 | 令牌产生速率(个/秒) |
burst-capacity | number | 否 | 1 | 令牌桶容量 |
requested-tokens | number | 否 | 1 | 每次请求消耗令牌数 |
restore | boolean | 否 | false | 是否允许重置令牌(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次请求)
最佳实践 💡
限流策略选择
- 优先考虑业务场景需求
- 合理设置令牌生成速率
- 根据接口重要性设置不同策略
性能优化建议
- 避免过于频繁的限流检查
- 合理设置令牌桶容量
- 注意集群环境的同步问题
监控和告警
- 监控限流情况
- 设置限流告警阈值
- 定期分析限流日志
常见问题 ❓
请求被限流
- 检查当前限流规则配置
- 验证令牌桶容量是否合理
- 确认是否存在突发流量
限流不生效
- 确认限流器是否启用
- 检查URL匹配规则
- 验证限流类型配置
令牌消耗过快
- 检查令牌生成速率
- 优化请求频率
- 调整令牌桶容量
安全提示 ⚠️
CAUTION
- 合理配置限流阈值,避免影响正常业务
- 关注限流日志,及时发现异常访问
- 考虑设置限流告警机制
- 定期评估和调整限流策略