Skip to content

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`);
}

Released under the MIT License.