限频设置
HTTP 访问服务提供了针对路由的限频功能。 您可以根据实际业务场景,通过设置限频策略,对您的后端资源进行保护。
限频设置说明
在云开发平台配置限频的步骤如下:
- 登录云开发平台
- 在左侧导航栏选择【环境配置】,进入【HTTP 访问服务】
- 在路由配置上,选择要配置的具体路由
- 根据需要配置限频规则:
- 资源维度限频:针对路由进行完全限频
- 客户端维度限频:针对路由及用户 ID 或客户端 IP 进行限频
- 点击【保存】应用配置
注意:
- 配置变更约1-2分钟生效
- 建议先在测试环境验证配置效果
- 过低的限频值可能影响正常业务
当前的限频设置包括两种维度:
- 资源维度限频 - 限制路由的整体调用频率
- 客户端维度限频 - 限制单个客户端调用频率
资源维度限频
资源维度限频限制了指定路由的总调用频率,防止路由被过度调用导致后端服务压力大或不可用。
配置说明
- 可配置范围:100 至环境最大 QPS
- 计算方式:每秒请求数(QPS) = 对指定路由的总请求数/秒
- 典型场景:
- 保护核心业务,不被突发流量打垮
- 限制第三方调用的频率
- 控制资源使用成本
配置建议
- 根据业务峰值流量设置合理阈值
- 预留 20%-30% 缓冲空间应对流量波动
- 配合监控告警及时发现限频情况
- 重要业务可考虑单独环境避免相互影响
示例:某路由平均QPS为80,峰值120,建议配置限频150 QPS
客户端维度限频
客户端维度限频用于限制单个客户端对指定资源的调用频率,防止恶意刷接口或用户过度使用资源。
配置说明
- 可配置范围:0 至 30 QPS
- 标识方式:
- UserID(云开发用户 ID /微信 openid ):基于云开发的用户 ID,或从小程序端请求时带有的用户 openid
- ClientIP(客户端 IP 地址):基于发起请求的客户端 IP 地址
- 选择建议:
- 有用户体系的业务选择 UserID
- 匿名访问场景选择 ClientIP
- 同一资源只能选择一种标识方式
- 典型场景:
- 防止用户频繁刷新页面
- 限制机器人爬虫行为
- 控制 API 调用配额
- 保护敏感接口不被爆破
配置示例
# UserID维度限频示例
路由: /userProfile
限频类型: UserID
阈值: 5 QPS
效果:
- UserID=123 限制为5 QPS
- UserID=456 限制为5 QPS
- 无UserID的请求不受限
# ClientIP维度限频示例
路由: /login
限频类型: ClientIP
阈值: 3 QPS
效果:
- IP=1.2.3.4 限制为3 QPS
- IP=5.6.7.8 限制为3 QPS
注意事项:
- UserID 方式需要请求携带用户身份信息,未带有 UserID 的请求会被忽略并放通
- ClientIP 可能误伤共享IP的用户
- 重要业务建议同时配置资源维度和客户端维度限频
最佳实践
分级限频策略
- 核心业务:设置较宽松的限频(如路由维度500 QPS + 客户端维度 10 QPS)
- 普通业务:中等限频(如路由维度 200 QPS + 客户端维度 5 QPS)
- 高风险接口:严格限频(如路由维度 100 QPS + 客户端维度 1 QPS)
测试验证
- 先在测试环境验证限频配置
- 使用压力测试工具模拟不同场景
- 逐步调整至最优配置
限频触发处理
- 返回429状态码和明确错误信息
- 客户端应实现指数退避重试机制
- 关键业务可考虑排队或降级方案
配置检查清单:
- 是否设置了合理的缓冲空间
- 是否考虑了业务峰值
- 是否配置了监控告警
- 是否测试验证过配置效果
- 是否有处理限频触发的方案