【问题标题】:Should I call 20 external APIs in parrallel?我应该并行调用 20 个外部 API 吗?
【发布时间】:2022-12-01 05:04:21
【问题描述】:

我正在帮助设计一个 spring boot 项目/服务,它调用 20 个外部 API,聚合该数据并返回一个 json

我们正在使用使用 Flux/Mono 的反应模型。我们应该并行调用它们还是会引入处理资源的问题。或者我们应该异步调用它们

任何帮助,将不胜感激

【问题讨论】:

  • 信息点。我很确定并行和异步在这种情况下意味着同样的事情。

标签: java spring-boot api parallel-processing spring-webflux


【解决方案1】:

这个答案是基于以下假设:

  • 返回的单个json字符串可以缓存。
  • 对于出错的外部 API,可以返回默认/错误值。
  • 返回的外部 api 具有不同的服务级别协议(这意味着您不能一遍又一遍地发出 100 次请求)。

长话短说

以异步方式发出请求。

更长的答案

我会考虑将每个单独的外部 api 作为其自己的对象/类。希望您可以为这些对象使用单一接口,但通常每个对象都是它自己的对象。这是因为您很可能与每个外部 API 有不同的服务级别协议。这将包括您每秒/分钟/小时/等可以发出多少请求……会有不同的 api 密钥或用户名/密码。所有这些外部 api 都会有相似或不同的错误处理行为、缓存策略、默认/错误返回值。

然后应该有一个聚合类/对象位于所有外部 api 对象的前面,它将创建表示单个 json 字符串的对象。

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2016-11-11
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2011-02-25
    • 2014-03-18
    相关资源
    最近更新 更多