【问题标题】:How to handle multiple API Requests如何处理多个 API 请求
【发布时间】:2020-12-21 17:10:43
【问题描述】:

我正在使用Google Admin SDK to create Google Groups for my organization。创建群组时,我无法将成员添加到群组中,理想情况下,当我创建新群组时,我想添加大约 60 个成员。此外,可以在批量创建组后添加成员(批量请求)was deprecated August 2020。现在,在创建组后,我需要向 API 发出 Web 请求,以单独添加组的每个成员(大约 60 个成员)。

我正在使用 node.js 和 express,有没有一种好方法可以处理 60 个对 api 的 Web 请求?我不知道这会对我的服务器造成多大的影响。如果有人有任何资源可以分享,我可以在其中了解这将对 nodejs 服务器产生的影响。

幸运的是,这些群组并不经常创建,可能每月 15 个。

我的一个想法是将工作卸载到类似云功能的东西上,这样我的节点服务器就会向云功能发出一个请求,然后云功能会发出所有额外的请求以将成员添加到组中。我不能 100% 确定这是否有必要,我对其他方法很好奇。

【问题讨论】:

  • 您可以使用clusters 运行应用程序的多个实例,从而有效地处理负载。
  • 这是一个技术问题,还是您认为这不方便? App Engine、Cloud Functions 等应用程序的超时以秒/分钟为单位。在您的环境中调用 60 次 API 需要多长时间?发布您的代码、结果和错误以及您需要解决的问题。
  • 我不是在发表意见,我通常处理单个 api 请求。我正在尝试确定是否可以基本上循环遍历 api 调用列表并同步进行 60 次调用(或异步触发它们)。我不太了解这会给服务器带来的压力,我希望知道这是否是一种常见的可接受的做法,或者这是否是一种不好的做法,我应该考虑卸载请求、安排它们等。跨度>
  • 60 没问题。

标签: node.js express google-cloud-platform google-admin-sdk


【解决方案1】:

Limits and Quotas

请注意,添加群组成员可能需要 10 分钟才能传播。

Directory API 的速率限制是每个 IP 地址每 100 秒 3000 次查询。这可以达到每秒 30 次左右。 60 个请求并不是一个很大的请求,但是如果您尝试在几毫秒内将它们全部发送出去,系统可能会推断速率并认为它超过了限制,不过我不这么认为可能最好用你的系统和连接等来测试它。

Exponential Backoff

如果您确实需要提出很多请求,这是 Google 推荐的方法。它包括在请求失败时重复请求,然后以指数方式增加等待时间,直到达到 16 秒。您始终可以实现更长的等待重试。毕竟它只有 60 个请求。

Batch Requests

前面提到的方法对您来说应该没有问题,因为只有 60 个请求要发出,因此不会对系统造成任何“压力”。也就是说,处理对 Directory API 的许多请求的最高效方式是使用批处理请求。这使您可以将所有成员请求捆绑到一个大批次中,最多 1000 个呼叫。这也将为您提供一个很好的缓冲,以防您将来需要增加您的请求!

编辑 - 很抱歉,我错过了您提到不推荐使用批处理。仅不推荐使用 global 批处理。如果您向特定 API 发送批处理请求,仍然支持批处理。您不能再做的是将单个批处理请求发送到不同的 API,例如 Directory Sheets合二为一。

参考文献

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 2018-08-19
    • 2013-01-12
    • 2013-01-31
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多