微服务中应该使用多线程吗?

问题描述 投票:0回答:4

如果微服务具有可扩展性,例如部署为 AWS 上的 ECS,是否应该在微服务开发中使用并行编程?

如果是,一个实例消耗更多资源与 N 个实例消耗相同资源相比有什么好处?

并行编程如何搭配https://12factor.net/

附注更具体地说 - 我应该在概念上使用并行流而不是简单流吗?

java multithreading parallel-processing scalability 12factor
4个回答
5
投票

基本上您提供的链接也已经提供了您问题的答案

这并不排除各个进程通过运行时 VM 内的线程或 EventMachine、Twisted 或 Node.js 等工具中的异步/事件模型来处理自己的内部多路复用。但单个虚拟机只能增长到这么大(垂直规模),因此应用程序还必须能够跨越在多台物理机上运行的多个进程。

https://12factor.net/concurrency


4
投票

当手头的任务是互斥的并且可以并行完成时,必须使用并行流。然而,并行编程会带来使用更多资源的开销。因此,根据手头的任务,您需要权衡做出最适合您的决定。


0
投票

晚了几年,但答案是肯定的,而且实际上它的使用频率比表面上看到的要多。 Java 世界中的微服务主要是用 Spring 等框架编写的,框架本身依赖于多线程。您可能会感到困惑的是,微服务应该是无状态的,以便可扩展,但这并不能阻止我们使用线程。例如,向其他微服务发送请求通常总是在另一个线程上完成(不需要每个请求) 反应式编程是微服务中常用的一个例子


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.