阿里云为保障云服务的稳定以及云资源的公平使用,云服务器ECS开启了API访问的流量控制,以防止恶意攻击和滥用API。本文介绍如何查看云服务器ECS API的流量控制,并提供API流量控制的合理化建议。
查看API流量控制
您可以通过API速率配额找到并单击云服务器 ECS,查看不同的云服务器ECS API的流量控制阈值。
云服务器ECS目前仅支持查询部分API的流量控制阈值。
流量控制范围说明
云服务器ECS的API访问流量受到严格的控制和限制。所有的API都启用了访问流量控制机制,并根据地域和具体的API接口进行划分和区分。不同地域和不同接口会有不同的流量控制阈值。
对于同一个阿里云账号,在不同地域内调用特定接口的访问流量不能超过系统设定的阈值。如果超出阈值,API调用请求会在单位时间内被系统拒绝。
访问流量包括来自ECS控制台、RAM用户、基于阿里云账号的自建平台以及IaaS(Infrastructure as a Service)编排平台(如Terraform、Ansible)的数据流量。
流量控制规则说明
API访问流量控制的规则说明如下:
不同接口的流量控制各自独立计算,单个接口达到流量控制阈值时不会影响其他接口的调用,也不会影响该接口在其他地域下的正常使用。
如果某一接口在第T分钟时被流量控制,则该接口需要在第T+1分钟时才会被允许继续调用。
如果使用SDK或CLI等运维方式调用API时被流量控制并报错,相应的功能在云服务控制台操作中也会受到流量控制。
ECS的创建实例操作接口(如RunInstances和CreateInstance),除去API级别的流量控制外,还存在创建资源数量的限制。即同一个阿里云账号,在一分钟内创建ECS实例请求的数量不能大于5000台(不包括已创建并处于运行的ECS实例数量),且实际在一分钟内提交创建实例操作的请求,可能需要超过一分钟的时间才能完成实例的交付(即实例达到运行状态)。
调用合理化建议
当调用云服务器ECS API的请求达到流量控制阈值时,系统会报Throttling
错误码且请求不会被系统正确处理。因此,在构建IaaS架构时,需要考虑调用API的合理性。主要建议如下:
请求聚合
ECS中部分查询类和操作类的API支持批量的查询或操作,在使用这类接口时尽可能批量完成资源的查询或操作。
调用频率
在需要检查资源状态的流程中,注意每次调用API的请求间隔,您可以采用固定间隔或者反向退避的方式。例如:
常见的状态检查(资源的启动、停止等状态)间隔时间为1s~2s。
反向退避是指您可以在资源操作后的若干秒内不进行状态检查,然后逐渐增加检查频率,直到达到固定的1s~2s间隔时间。
退避策略
在调用接口并返回流量控制的错误码后,相同的接口请求需要退避策略。在退避时,同一阿里云账号的同一接口调用可以采取1 QPS的速度进行可用性探测。