限频设置
限频设置提供了针对云开发资源的调用频率限制功能,可以有效防止资源被过度调用,保障服务稳定性。
支持资源类型
当前已支持配置限频的资源包括:
- 云函数
- 云托管服务
限频设置说明
在云开发平台配置限频的步骤如下:
- 登录云开发平台
- 在左侧导航栏选择【环境配置】,进入【安全管控】
- 选择要配置的资源类型(云函数限频/云托管限频)
- 根据需要配置限频规则:
- 具体资源(云函数/云托管服务)
- 资源维度限频
- 客户端维度限频
- 点击【保存】应用配置
注意:
- 配置变更约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维度限频示例
资源: loginAPI
限频类型: 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状态码和明确错误信息
- 客户端应实现指数退避重试机制
- 关键业务可考虑排队或降级方案
配置检查清单:
- 是否设置了合理的缓冲空间
- 是否考虑了业务峰值
- 是否配置了监控告警
- 是否测试验证过配置效果
- 是否有处理限频触发的方案