首页 > 解决方案 > 编排中的线程与容器

问题描述

我正在重新设计一个现有的 Spring Boot 应用程序,该应用程序试图自动执行公司目前由其员工手动完成的一系列工作。它有一个主应用程序,几乎可以作为一个编排应用程序工作,因为它是一个服务,它将调用其他应用程序来完成整个工作。它调用了 7 个子系统,其中 3 个系统需要以某种形式的顺序调用并在调用其他 4 个之前完成,但它们可以异步调用。

所有这些子系统现在都已移至 Spring Microservices 并且我正在处理的应用程序必须调用这些微服务(有些是按顺序调用的,有些是异步的),我的应用程序可能会同时被多次调用所以我需要考虑每个子系统可能需要多个容器。我已经实现了 Open-Feign 来调用每个微服务。

他们还计划在不久的将来将其转移到 AWS ECS/Fargate,但目前它将在 Linux 虚拟机中运行,并且容器在同一个专用网络上创建以进行通信。我想知道我是否应该完全删除 ThreadPoolTask​​Executor 并为对我的应用程序的每个同时请求调用一个新容器,但是我读过一个进程上的线程仍然更快并且比在容器上创建一个进程的开销更少并考虑不会同时调用很多容器我对最佳方法感到困惑。

任何意见,将不胜感激。

标签: amazon-web-servicesspring-bootdockerkubernetesorchestration

解决方案


除非每个请求将应用程序中的内存消耗线性地增加至少 1Gb(那么新的 pod 基本内存不会与它相比那么多),否则为每个请求启动一个新的 pod 是一种过度杀伤力……它每个请求需要 200Mb 的额外内存,我看不到好处也没有必要。


推荐阅读