本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理 AWS Cloud Map DiscoverInstances API 请求限制
AWS Cloud Map 按区域限制每个 AWS 账户的 DiscoverInstancesAPI 请求。Throttling 有助于提高服务的性能,并有助于为所有 AWS Cloud Map 客户提供公平使用。限制可确保对 AWS Cloud Map DiscoverInstancesAPI 的调用不会超过允许的最大 DiscoverInstancesAPI 请求配额。DiscoverInstances来自以下任何来源的 API 调用均受请求配额的限制:
-
第三方应用程序
-
命令行工具
-
控制 AWS Cloud Map 台
如果您超过 API 节流配额,则会收到RequestLimitExceeded
错误代码。有关更多信息,请参阅 请求速率限制。
如何应用节流
AWS Cloud Map 使用令牌桶算法
请求速率限制
限制限制您可以发出的 DiscoverInstancesAPI 请求数量。每个请求都会从存储桶中删除一个令牌。例如,DiscoverInstancesAPI 操作的存储桶大小为 2,000 个令牌,因此您最多可以在一秒钟内发出 2,000 个DiscoverInstances请求。如果您在一秒钟内超过 2,000 个请求,则会被节流,而该秒内剩余的请求将失败。
存储桶会以设定的速率自动填充。如果存储桶容量不足,则每秒添加一定数量的令牌,直到存储桶达到容量。如果重填令牌到达时存储桶已满,这些令牌将被丢弃。DiscoverInstancesAPI 操作的存储桶大小为 2,000 个令牌,充值速率为每秒 1,000 个令牌。如果您在一秒钟内发DiscoverInstances出 2,000 个 API 请求,则存储桶会立即减少为零 (0) 个令牌。然后,该存储桶每秒最多可重填 1,000 个令牌,直至达到其 2,000 个令牌的最大容量。
您可以在令牌被添加到存储桶时使用这些令牌。在发出 API 请求之前,您无需等待存储桶达到最大容量。如果您在一秒钟内发出 2,000 个 DiscoverInstancesAPI 请求来耗尽存储桶,那么在此之后您仍然可以根据需要每秒发出 1,000 个 DiscoverInstancesAPI 请求。这意味着当重填令牌被添加到存储桶时,您可以立即使用这些令牌。只有当您每秒发出的 API 请求数少于重填速率时,存储桶才会开始重填到最大容量。
重试或批处理
如果 API 请求失败,您的应用程序可能需要重试该请求。要减少 API 请求数,请在连续的请求之间添加相应的睡眠间隔。为了获得最佳的效果,请使用递增或可变的睡眠间隔。
计算睡眠间隔
在需要轮询或重试 API 请求时,我们建议您使用指数回退算法计算 API 调用之间的睡眠间隔。通过在两次重试之间逐渐延长连续错误响应的等待时间,您可以减少失败请求的数量。有关此算法的更多信息和实现示例,请参阅 AWS SDK 和工具参考指南中的重试行为。
调整 API 节流配额
您可以申请增加账户的 API 限制配 AWS 额。要请求配额调整,请联系 AWS Support 中心