速率限制
本文档详细介绍 Zanbara API 的速率限制机制,包括限制规则、响应头信息、超限处理以及优化建议。
速率限制概述
Zanbara 实施速率限制以确保:
系统稳定性: 防止单个用户占用过多资源
公平性: 保证所有用户获得公平的服务质量
安全性: 防止 DDoS 攻击和恶意请求
速率限制同时基于 IP 地址和 API Key 进行计算。
限制规则
基础限制
公开端点 - 市场数据
IP
60 请求
N/A
1 分钟
公开端点 - 系统信息
IP
20 请求
N/A
1 分钟
私有端点 - 查询类
IP + Key
120 请求
600 请求
1 分钟
私有端点 - 交易类
IP + Key
30 请求
120 请求
1 分钟
私有端点 - 批量操作
IP + Key
10 请求
30 请求
1 分钟
端点分类详情
公开端点 - 市场数据
限制: 60 请求/分钟 (IP)
包含以下端点:
建议: 使用 WebSocket API 订阅实时数据,避免频繁轮询。
公开端点 - 系统信息
限制: 20 请求/分钟 (IP)
包含以下端点:
私有端点 - 查询类
限制:
IP: 120 请求/分钟
API Key: 600 请求/分钟
包含以下端点:
私有端点 - 交易类
限制:
IP: 30 请求/分钟
API Key: 120 请求/分钟
包含以下端点:
私有端点 - 批量操作
限制:
IP: 10 请求/分钟
API Key: 30 请求/分钟
包含以下端点:
提示: 批量操作虽然限制更严格,但单次请求可处理多个对象,总体效率更高。
VIP 用户限制
VIP 用户享有更高的速率限制:
VIP 1
2x
2x
2x
VIP 2
5x
3x
3x
VIP 3
10x
5x
5x
VIP 做市商
20x
10x
10x
示例: VIP 2 用户的查询类限制为 3000 请求/分钟 (600 × 5)。
如需升级 VIP 等级,请联系 [email protected]。
速率限制响应头
每个 API 响应都包含速率限制信息的响应头:
响应头详解
X-RateLimit-Limit
当前时间窗口的请求上限。
示例:
表示当前端点在 1 分钟内最多允许 120 次请求。
X-RateLimit-Remaining
当前时间窗口剩余可用请求次数。
示例:
表示当前时间窗口内还可以发送 95 次请求。
监控建议:
X-RateLimit-Reset
速率限制重置时间 (Unix 时间戳,秒)。
示例:
表示速率限制将在 1696752060 (Unix 时间戳) 重置。
计算剩余时间:
X-RateLimit-Type
当前限制类型,可能值:
ip- 基于 IP 地址的限制api_key- 基于 API Key 的限制
示例:
说明: 当同时存在 IP 和 API Key 限制时,返回更严格的那个限制类型。
超过限制的处理
当超过速率限制时,API 返回 HTTP 429 Too Many Requests。
响应示例
响应头
Retry-After: 建议的重试等待时间 (秒)。
错误字段说明
code: 错误代码RATE_LIMIT_EXCEEDEDmessage: 人类可读的错误描述retry_after: 建议的重试等待时间 (秒)limit: 当前限制值reset_at: 限制重置时间 (Unix 时间戳)
重试策略
基础重试
指数退避重试
智能重试 (推荐)
优化建议
1. 使用 WebSocket 代替轮询
不推荐 (浪费速率限制):
推荐 (使用 WebSocket):
2. 批量操作
不推荐 (多次请求):
推荐 (批量请求):
3. 本地缓存
缓存不经常变化的数据:
4. 请求合并
合并短时间内的多个相同请求:
5. 监控剩余配额
6. 错峰请求
避免在整点发送大量请求:
企业级解决方案
分布式速率限制
使用 Redis 实现多实例速率限制:
多 API Key 负载均衡
特殊场景处理
做市商高频交易
做市商需要频繁下单/撤单,建议:
申请 VIP 做市商权限: 获得 10-20 倍速率限制
使用批量 API: 单次请求处理多个订单
WebSocket 推送: 接收实时成交、订单簿更新
本地订单簿维护: 减少查询请求
数据分析与回测
大量历史数据查询时:
使用数据导出 API: 一次性导出大量数据
分页查询: 避免单次请求数据量过大
本地缓存: 已查询的数据缓存到本地
监控与告警
Prometheus 指标
Zanbara 提供 Prometheus 格式的速率限制指标:
告警规则
常见问题
Q: 为什么我的 VIP 等级没有生效?
A: VIP 等级仅对 API Key 限制生效,IP 限制保持不变。确认您使用的是通过 API Key 认证的请求。
Q: 测试环境有速率限制吗?
A: 测试环境的速率限制相对宽松:
公开端点: 200 请求/分钟
私有端点: 500 请求/分钟
但仍建议合理使用,避免影响其他开发者。
Q: 可以申请提高速率限制吗?
A: 可以。请通过 [email protected] 联系我们,说明您的使用场景和需求。我们将评估后调整您的限制。
Q: 速率限制是全局的还是按端点的?
A: 按端点分类计算。不同类型的端点有不同的限制,互不影响。
相关文档
文档版本: v1.0.0 最后更新: 2025-10-07 维护: Zanbara API Team
Last updated