Javascript Node.js群集与多个Docker容器

Javascript Node.js群集与多个Docker容器,javascript,node.js,multithreading,docker,load-balancing,Javascript,Node.js,Multithreading,Docker,Load Balancing,据我所知,Docker容器使用多个线程,Node.js应用程序只使用一个线程。通过运行Node.js集群,我可以利用Docker容器可用的所有核心 这是否意味着通过集群Node.js进程,我可以更好地利用每个Docker实例?如果是这样的话,这难道不比每个容器只运行一个单线程Node.js实例更好吗 一个值得关注的问题是,Docker容器可能会增加或减少其运行的CPU数量,从而产生副作用。首先,运行节点群集基本上不需要pm2。node内置了一个多核机器。此外,除非对工作人员的数量进行硬编码,否则

据我所知,Docker容器使用多个线程,Node.js应用程序只使用一个线程。通过运行Node.js集群,我可以利用Docker容器可用的所有核心

这是否意味着通过集群Node.js进程,我可以更好地利用每个Docker实例?如果是这样的话,这难道不比每个容器只运行一个单线程Node.js实例更好吗


一个值得关注的问题是,Docker容器可能会增加或减少其运行的CPU数量,从而产生副作用。

首先,运行节点群集基本上不需要pm2。node内置了一个多核机器。此外,除非对工作人员的数量进行硬编码,否则缩小实例并不会产生真正的影响。请参阅“群集”模块中的示例代码,了解如何使用群集生成Worker。

直截了当地说,多个容器的性能似乎比支持群集的单个容器要好得多。这不是结论,但请检查:。

如果您谈论的是在另一个docker组件中集群NodeJ,我认为这不会给您带来额外的提升。就像你说的NodeJ在一个线程中运行,所以无论是pm2(我实际上使用它)还是docker在分配负载方面都会有相同的效果

NodeJS有一个web工作者的概念来处理它如何处理传入的请求,但即使不是很快的服务器也会处理数百个请求,因为它是一个非阻塞架构

我认识到我仍然需要深入研究Docker,我想这样做,但我没有时间,但我要做的是每个服务器(虚拟或物理)有一个Docker映像,然后让pm2在其中运行多个节点实例


这是因为我希望Docker为我处理依赖关系,我希望pm2为我处理集群管理,因为它有一些很酷的功能,比如当内存到达目标时自动重启,或者重启出错的节点

我认为问题在于集群与多个Docker容器,而不是应用集群本身-pm2只是一个例子:-)你所说的“NodeJS有一个web workers的概念”是什么意思?也许web workers不是最好的术语,但我指的是可以配置的maxSockets:http.globalAgent.maxSockets应该注意的是,最好的选项明确表示支持集群的多个容器,例如,多个docker容器,其中每个容器中都有一个节点群集在运行(每个容器中有4个进程)。@stefanobaldo您提供的链接只是指向另一个问题,没有任何证据,而且该问题已经过时,因为没有提及dock compose scale选项或kubernetes