在 Node.js 中,可以使用集群(cluster)模块来创建多个进程,从而充分利用多核系统的性能。集群模块使得一个主进程(master)可以创建多个子进程(workers),每个子进程都可以独立运行 Node.js 应用程序的实例。以下是一个基本的 Node.js 集群示例:
const cluster = require('cluster');
const os = require('os');

// 如果是主进程
if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // 获取 CPU 核心数
  const numCPUs = os.cpus().length;

  // 创建子进程
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  // 监听子进程退出事件,如果有子进程退出,则创建一个新的子进程
  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
    cluster.fork();
  }
} else {
  // 如果是子进程
  console.log(`Worker ${process.pid} started`);

  // 在这里编写你的 Node.js 应用程序代码
  // 例如,创建 HTTP 服务器
  const http = require('http');
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello, World!\n');
  }).listen(3000);
}

在这个示例中,主进程(master)检测 CPU 的核心数,然后为每个核心创建一个子进程(worker)。每个子进程都独立地运行 Node.js 应用程序,可以监听不同的端口。如果某个子进程意外退出,主进程会检测到并重新创建一个新的子进程。

要运行这个示例,可以将代码保存到一个文件(例如 cluster.js),然后在终端中运行:
node cluster.js

这是一个简单的 Node.js 集群示例。在实际应用中,你可能需要更复杂的集群管理、进程间通信等功能,可以考虑使用专业的集群管理工具或框架,如 PM2、Node.js 的内置的 cluster 模块。


转载请注明出处:http://www.pingtaimeng.com/article/detail/4767/Node.js