Node.js 词条目录
前端Wiki/词条/cluster 集群

cluster 集群

定义内置的多进程管理模块,通过主从进程让 Node 应用利用多核 CPU

Node 主线程是单线程的,一个进程最多用满一个 CPU 核。cluster 让主进程 fork 出多个工作进程共享同一个服务器端口,由主进程以轮询方式把连接分发给各工作进程,从而把吞吐量成倍提升。工作进程崩溃时,主进程可以监听 exit 事件自动重建。

它本质上是对 child_process.fork 的上层封装,主从进程间通过 IPC 通信。与 PM2 这类进程管理器相比,cluster 需要自己处理重建、日志与平滑重启;在现代实践中,推荐直接用 PM2 的 cluster 模式,或改用 worker_threads 应对 CPU 密集任务,只有需要进程级隔离时才手写 cluster。

JavaScript
const cluster = require('cluster');
const http = require('http');
const os = require('os');

if (cluster.isMaster) {
  // 主进程:按 CPU 核数 fork 工作进程
  for (let i = 0; i < os.cpus().length; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker) => {
    console.log('工作进程退出,自动重建');
    cluster.fork();
  });
} else {
  // 工作进程:共享同一端口
  http.createServer((req, res) => {
    res.end('由进程 ' + process.pid + ' 处理');
  }).listen(3000);
}
⚠ 常见误区
🔗 相关词条事件驱动与非阻塞 I/OPM2 部署与守护
← 返回来源章节事件驱动与非阻塞 I/O