【发布时间】:2019-06-30 07:17:49
【问题描述】:
我正在实现一项服务,该服务在内部调用一些第三方 rest API 来获取数据并对其进行处理。 API调用可以根据不同的用户输入数据进行N次,因此它可以调用API 100次或10000次,平均每个API调用需要1-2秒,这将增加整个过程的总时间。
我想了解是否有任何最好的方法可以顺利处理此类问题? 我计划并发 API 调用大约 100 次或 1000 次(使用@async spring boot 方法运行的线程)但是这个线程数的执行速度将取决于它运行的系统。
您的回复将很有帮助,在此先感谢。
【问题讨论】:
-
如果瓶颈是第三方api的响应时间,总会遇到时间问题。这不仅是线程的执行,您还必须提供一个线程池,我猜您提到的线程数量可能会在多个服务副本上扩展,这总是会导致问题。你不能分裂你的逻辑吗?也许看看 restTemplate 规范来调用另一个服务。
-
首先您必须开发一个最小的工作解决方案并收集指标。这将让您了解瓶颈在哪里以及如何优化性能。在我看来,这看起来像是您无法垂直扩展的东西,您需要通过抛出更多节点/集群/服务器实例来水平扩展它来进行计算。
标签: java rest spring-boot