Cluster
Node.js进程群集可用于运行多个 Node.js 实例,这些实例可以在其应用程序线程之间分配工作负载
js
const cluster = require('node:cluster')
const http = require('node:http')
// 获取电脑 cpu 数量
const numCPUs = require('node:os').cpus().length
// 进程实例,获取进程信息
const process = require('node:process')
// 如果进程是主进程,则为 True
if(cluster.isPrimary) {
console.log(`Primary ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
// 创建 工作进程
cluster.fork();
}
// 当任何工作线程死亡时,集群模块将发出该 'exit' 事件
// 这可用于通过再次调用 .fork() 来重新启动工作线程
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
})
} else {
http.createServer((req, res) => {
res.writeHead(200)
res.end('hello world\n123')
}).listen(8000)
console.log(`Worker ${process.pid} started`);
}