SHOPLINE API 速率限制
为了确保平台的稳定性并保证商家间的公平,在特定情况下,平台需要实施速率限制,以防止平台资源被滥用。因此,开发人员应该按照行业标准,有效地限制调用和合理地进行重试请求。
速率限制定义
- 速率限制是指一段时间内可以发送到服务器的请求数量限制。
- 所有风格的 SHOPLINE API 均使用漏桶算法进行管理,这种算法可以保证开发者以不太高频的方式随时间推移向平台发送无限的请求。
- 在漏桶算法的基础上不同风格的 API ,采用了不同的速率限制方法,具体可以参见本页的下文。
漏桶算法
关于漏桶算法,这个比喻可以帮助你进行理解:
- 针对每一个店铺,你的应用程序都会获得一个可以存放40个小球的存储空间。
- 当存储空间里存放了小球时,平台会按照每秒4个小球的最大速度从中取出小球,释放你的存储空间。
- 当你的存储空间存满了40个小球时,你继续发送请求(往存储空间投入小球),你就会收到速率限制的错误消息。
- 所以,你最多可以一次性向存储空间投入40个小球,但在这之后你就需要慢慢等待存储空间的小球被平台取出,或者控制自己在下一秒的请求小于平台取出小球的最大速度(每秒4个)。
漏桶算法适用于所有的 SHOPLINE API,但存储空间的计算方法会有所不同,下面是对3种速率限制方法的说明。
速率限制方法
基于请求数量的限制方法
这种方法限制了应用程序请求次数限制,比如:60秒内限制60个请求。不管返回资源的数据量是多少,都记为1次请求,所有的请求是等同计数的。
目前 REST API 采用了这种限制方法。
基于成本点的限制方法
这种方法按照请求的资源的复杂度计算请求成本,通过控制单位时间内的请求总成本进行请求限制。比如:60秒内1000个成本点。每一次请求会按照返回资源的类型和数量计算本次请求消耗的成本。
基于时间资源的限制方法
这种方法按照请求资源消耗的时间来计算请求成本,通过叠加同一个IP下每个请求消耗的响应时间总成本进行限制。比如:60秒的时间资源。每一次请求按照响应的时长叠加计算消耗的时间成本。
目前 Storefront API 采用了这种限制方法。
Tip
这个限制是对店铺客户的 IP
进行计算的,并不是按照店铺进行限制。
不同套餐的速率限制对比
以下是 SHOPLINE API 的限速方法,以及不同套餐的限制标准
API | 速率限制方法 | 标准限制 | Enterprise 限制 |
---|---|---|---|
REST Admin API | 基于请求数量 | 4 requests/second | *Unlimited |
GraphQL Admin API | 基于成本点计算 | 即将推出 | 即将推出 |
Storefront API | 基于时间资源 | 1 second/APP/IP | 1 second/APP/IP |
note
针对 Enterprise 客户的无限制速率意味着 Enterprise 组织内的店铺不会收到每单位时间请求数量的限制。但是仍然会存在基础物理设备的相关约束,这些约束可能会限制请求的最大吞吐量。
不限速API的优势
- 提高用户体验:使用第三方插件时,可以更快地获取数据,减少等待。
- 自由度高:可以更好地根据需要控制请求速率,不受单位时间限速约束。
- 增强稳定性:店铺可以更好地应对大量用户同时访问的场景,不用担心因为速率的限制带来的风险。
- 支持大规模操作:对于需要大量调用API的场景,比如数据同步、批量更新,不限速 API 可以提供更好的支持。
这篇文章对你有帮助吗?
Error loading component.