API速率限制

IBM® NS1 Connect® 使用 API 速率限制来控制每个账户在一段时间内发出的 API 请求数量。

这样做可以公平分配资源,确保所有平台用户都能获得高性能。 API限制实施是灵活的,基于令牌桶算法,允许在一定时间内进行一定数量的请求。 可用代币的使用速度取决于您的自动化系统发送请求的速度。 该平台采用自动滥用阈值来保护平台。

代币的补充速度等于每个时间段允许的请求数量除以该时间段内的秒数。 当用户向 NS1 Connect 发送 API 请求时,响应会包含附加标头,提供精确的 API 速率限制信息,包括

  • 端点每个速率限制周期的令牌数量
  • 速率限制周期内的秒数
  • 当前期间剩余代币数量
注意: 自动滥用阈值是为了保护平台,如果平台观察到请求数量超过阈值,则这些机制可能会进行严格的速率限制。

每个时间段允许的请求数量可能因API端点而异。 例如,一个简单的 GET 请求最多可以给用户900个令牌(允许的请求),速率限制为300秒。 用户可以根据需要尽快使用完900个代币的限额。 每提出一个请求,剩余金额就会减少一个代币。 这条路线的补给速度为900/300=3个代币/秒。 这样,用户就可以调整应用程序的节奏,在避免达到限制的同时稳定地发出请求,或者一次提交多个请求,等待令牌补充。

其他路由,例如 POSTPUT ,计算成本更高,因此速率限制更低。 POST 例如,请求的速率限制可能接近每300秒300个请求;因此,令牌只能以每秒一个请求的速度恢复到帐户中。 最好从战略角度开发应用程序,使其与这种实施方式兼容,避免在更改时出现中断。

当前所有请求的速率限制数据可在每个API响应中找到,只需在您的 cURL 命令中包含 -v 标记即可。 例如,以下请求包含 -v 标记,用于在响应中包含此端点的速率限制:
curl -v -X GET -H "X-NSONE-Key: ${NSONE_API_KEY}' https://api.nsone.net/v1/monitoring/regions

示例回复:

> GET /v1/monitoring/regions HTTP/1.1
< HTTP/1.1 200 OK
...
< x-ratelimit-by: customer
< x-ratelimit-limit: 100
< x-ratelimit-period: 1
< x-ratelimit-remaining: 99