Node.js中的cluster和workerthreads如何工作?

时间:2019-06-18 20:19:13

标签: node.js process v8 core clusterize

  • 我是否正确理解:如果我使用cluster软件包,是否表示 为每个创建的工作人员创建一个新的节点实例吗?

  • clusterworker_threads软件包之间有什么区别?

1 个答案:

答案 0 :(得分:0)

有效地,您与众不同之处是基于基于进程的与基于基于线程的。线程共享内存(例如SharedArrayBuffer),而进程不共享。从本质上讲,它们绝对是同一回事。

cluster

  • 每个CPU上启动一个进程,并且可以通过IPC进行通信。
  • 每个进程都有自己的内存以及自己的Node(v8)实例。大量创建它们可能会导致内存问题。
  • 非常适用于产生许多共享同一端口b / c的HTTP服务器,主进程会将请求复用到子进程。

worker threads

  • 总共一个进程
  • 创建多个线程,每个线程具有一个Node实例(一个事件循环,一个JS引擎)。除少数几个线程外,大多数Node API都可用于每个线程。因此,本质上Node是在嵌入自身并创建一个新线程。
  • 与其他线程(例如SharedArrayBuffer)共享内存
  • 非常适合CPU密集型任务,例如处理数据或访问文件系统。由于NodeJS是单线程的,因此可以通过工作程序使同步任务更高效