首页 > 解决方案 > NodeJS 集群和工作线程

问题描述

我正在为一个家庭项目做一些研究,我正在研究集群模块和工作线程。

我知道集群和工作线程之间的区别。

我的问题是:

在 NodeJS 中是否可以同时使用集群和工作线程?

标签: node.js

解决方案


当您提到“工作线程”时,我猜您正在考虑工作线程模块。我做了一个明确的区分,因为 NodeJS 运行时默认带有 4 个工作线程。cluster (module) 和worker_threads并行工作应该不会有任何问题,因为集群为您提供了多个独立的 NodeJS 实例,例如多个 NodeJS 进程,它们有自己的线程,如前所述。使用上述worker_threads模块产生更多工作线程会产生更多线程它们不是独立的(它们可以并且确实共享内存),如果您正在进行一些运算,这可能会很好,但它们都在单个 Node 进程下运行。进程可以使用 IPC 进行通信,Node 工作线程可以使用MessagePort同一模块中的类进行通信。

因此,是的,你可以这样做,我最好的猜测是,在“监督树”的顶部,如果你让它们充当服务器,你会产生几个 Node进程(使用模块)来分配负载(cluster不知道您的用例),然后对于每个进程,worker_threads如果需要,您可以使用该模块生成额外的线程(以加快一些繁重的处理等)。


推荐阅读