Rah*_*l D 5 java concurrency microservices
我正在开发一种微服务,其操作流程如下:
请求执行一些任务。经过一些预处理后,我知道我需要执行一些任务,比方说10。现在,这些任务彼此独立,因此可以并行执行。每个任务都有一些处理步骤和一些外部API调用。在完成所有任务后,需要返回合并的结果。
这是一个请求,因此很明显,此微服务也可以并行获得许多这样的请求。
在这里,API调用是最耗时的操作,相对而言,其他工作执行的时间要短得多。因此,我希望以一种可以并行执行许多任务的方式进行设计,因为对于API调用,大多数任务将被阻塞。
我看到的一个简单解决方案是使用一个使用ExecutorService的线程池,但这似乎不是理想的解决方案,因为假设我创建了一个包含32个线程的线程池,并获得60个任务。因此,即使这32个任务被阻止进行api调用并且不占用大量CPU时间,一次也只能执行32个任务。
是否可以在不破坏单个任务的情况下实现?
您将必须进行一些基准测试来找出最适合您的设置。您可能想要研究使用ThreadPoolExecutor它可以根据池中可用的线程数量来增加和减少线程数量。您可以在基准测试中调整一些参数,即corePoolSize和maximumPoolSize。
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |