跳到主要内容

限频设置

HTTP 访问服务提供了针对路由的限频功能。 您可以根据实际业务场景,通过设置限频策略,对您的后端资源进行保护。

限频设置说明

在云开发平台配置限频的步骤如下:

  1. 登录云开发平台
  2. 在左侧导航栏选择【环境配置】,进入【HTTP 访问服务】
  3. 在路由配置上,选择要配置的具体路由
  4. 根据需要配置限频规则:
    • 资源维度限频:针对路由进行完全限频
    • 客户端维度限频:针对路由及用户 ID 或客户端 IP 进行限频
  5. 点击【保存】应用配置

注意

  • 配置变更约1-2分钟生效
  • 建议先在测试环境验证配置效果
  • 过低的限频值可能影响正常业务

当前的限频设置包括两种维度:

  • 资源维度限频 - 限制路由的整体调用频率
  • 客户端维度限频 - 限制单个客户端调用频率

资源维度限频

资源维度限频限制了指定路由的总调用频率,防止路由被过度调用导致后端服务压力大或不可用。

配置说明

  • 可配置范围:100 至环境最大 QPS
  • 计算方式:每秒请求数(QPS) = 对指定路由的总请求数/秒
  • 典型场景
    • 保护核心业务,不被突发流量打垮
    • 限制第三方调用的频率
    • 控制资源使用成本

配置建议

  1. 根据业务峰值流量设置合理阈值
  2. 预留 20%-30% 缓冲空间应对流量波动
  3. 配合监控告警及时发现限频情况
  4. 重要业务可考虑单独环境避免相互影响

示例:某路由平均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的用户
  • 重要业务建议同时配置资源维度和客户端维度限频

最佳实践

分级限频策略

  1. 核心业务:设置较宽松的限频(如路由维度500 QPS + 客户端维度 10 QPS)
  2. 普通业务:中等限频(如路由维度 200 QPS + 客户端维度 5 QPS)
  3. 高风险接口:严格限频(如路由维度 100 QPS + 客户端维度 1 QPS)

测试验证

  1. 先在测试环境验证限频配置
  2. 使用压力测试工具模拟不同场景
  3. 逐步调整至最优配置

限频触发处理

  • 返回429状态码和明确错误信息
  • 客户端应实现指数退避重试机制
  • 关键业务可考虑排队或降级方案

配置检查清单

  • 是否设置了合理的缓冲空间
  • 是否考虑了业务峰值
  • 是否配置了监控告警
  • 是否测试验证过配置效果
  • 是否有处理限频触发的方案