稳定性: 2 - 稳定
单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去处理负载任务。
cluster 模块可以创建共享服务器端口的子进程。
const cluster = require('cluster');const http = require('http');const numCPUs = require('os').cpus().length;if (cluster.isMaster) {console.log(`主进程 ${process.pid} 正在运行`);// 衍生工作进程。for (let i = 0; i < numCPUs; i++) {cluster.fork();}cluster.on('exit', (worker, code, signal) => {console.log(`工作进程 ${worker.process.pid} 已退出`);});} else {// 工作进程可以共享任何 TCP 连接。// 在本例子中,共享的是 HTTP 服务器。http.createServer((req, res) => {res.writeHead(200);res.end('你好世界\n');}).listen(8000);console.log(`工作进程 ${process.pid} 已启动`);}
运行代码,则工作进程会共享 8000 端口:
$ node server.js主进程 3596 正在运行工作进程 4324 已启动工作进程 4520 已启动工作进程 6056 已启动工作进程 5644 已启动
在 Windows 上,尚无法在工作进程中设置命名管道服务器。
