githubEdit

速率限制

本文档详细介绍 Zanbara API 的速率限制机制,包括限制规则、响应头信息、超限处理以及优化建议。

速率限制概述

Zanbara 实施速率限制以确保:

  • 系统稳定性: 防止单个用户占用过多资源

  • 公平性: 保证所有用户获得公平的服务质量

  • 安全性: 防止 DDoS 攻击和恶意请求

速率限制同时基于 IP 地址API Key 进行计算。

限制规则

基础限制

端点类型
限制维度
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 等级
查询类倍数
交易类倍数
批量操作倍数

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_EXCEEDED

  • message: 人类可读的错误描述

  • retry_after: 建议的重试等待时间 (秒)

  • limit: 当前限制值

  • reset_at: 限制重置时间 (Unix 时间戳)

重试策略

基础重试

指数退避重试

智能重试 (推荐)

优化建议

1. 使用 WebSocket 代替轮询

不推荐 (浪费速率限制):

推荐 (使用 WebSocket):

2. 批量操作

不推荐 (多次请求):

推荐 (批量请求):

3. 本地缓存

缓存不经常变化的数据:

4. 请求合并

合并短时间内的多个相同请求:

5. 监控剩余配额

6. 错峰请求

避免在整点发送大量请求:

企业级解决方案

分布式速率限制

使用 Redis 实现多实例速率限制:

多 API Key 负载均衡

特殊场景处理

做市商高频交易

做市商需要频繁下单/撤单,建议:

  1. 申请 VIP 做市商权限: 获得 10-20 倍速率限制

  2. 使用批量 API: 单次请求处理多个订单

  3. WebSocket 推送: 接收实时成交、订单簿更新

  4. 本地订单簿维护: 减少查询请求

数据分析与回测

大量历史数据查询时:

  1. 使用数据导出 API: 一次性导出大量数据

  2. 分页查询: 避免单次请求数据量过大

  3. 本地缓存: 已查询的数据缓存到本地

监控与告警

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