【发布时间】:2016-03-01 07:41:33
【问题描述】:
我有一个 API 调用需要 18 秒分钟才能返回一堆数据。该数据是一个有多个键的对象。
是否可以将其分解为分别针对每个键的多次调用是否可以并被认为是一种更好的做法?
对于网络负载和服务器而言,发送一个需要很长时间才能返回的 API 调用是否比发送多个调用(5 分钟)更好?
【问题讨论】:
标签: performance api networking
我有一个 API 调用需要 18 秒分钟才能返回一堆数据。该数据是一个有多个键的对象。
是否可以将其分解为分别针对每个键的多次调用是否可以并被认为是一种更好的做法?
对于网络负载和服务器而言,发送一个需要很长时间才能返回的 API 调用是否比发送多个调用(5 分钟)更好?
【问题讨论】:
标签: performance api networking
首先为具有简单接口的 API 设计,如果加载成为问题,则在实现中解决该问题。
将单个对象分解为多个必须由用户重新组合的子对象的 API 调用会增加 API 用户的复杂性。从 API 设计的角度来看,这不好。
如果您的测试人员发现有必要解决网络负载问题,您可以在不更改接口的情况下在该 API 调用的实现中限制数据传输。例如:
您可以传输每个密钥,在密钥之间短暂暂停以允许 其他网络流量发生。这对用户来说是不可见的 您的 API,尽管他们可能会注意到这个特定的 API 调用 现在运行速度较慢。
或者您可以根据需要从服务器检索密钥。也就是说,在通过另一个 API 调用请求之前,不要将密钥检索到对象的本地副本中。同样,从 API 用户的角度来看,这将是不可见的,尽管每个密钥的初始加载会较慢(对已检索密钥的后续访问当然会很快)。
在这两个示例中,都需要增加整体设计的复杂性,但这种复杂性对 API 的用户是隐藏的。这是良好 API 设计的关键。
【讨论】: