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.zyzy.cn/article/detail/4767/Node.js