adong搬砖

导航

cluster

//cluster模块子进程内置共享端口

const express = require('express')


const cluster = require('cluster')


if (cluster.isMaster) {
  //处理主进程逻辑


  console.log(`主进程 ${process.pid} 启动,开始分配任务`)




  // 创建工作进程 
  for (let i = 0; i < require('os').cpus().length; i++) {
    cluster.fork()
  }


  // 监听子进程退出事件  
  cluster.on('exit', (worker, code, signal) => {
    console.log(`****子工作进程 ${worker.process.pid} 已退出,现在进程数为${Object.keys(cluster.workers).length},将开启新的进程****`)
    cluster.fork()
  })


  // 监听子进程消息  
  // cluster.on('message', (worker, message) => {
  //   if (message.type === 'taskCompleted') {
  //     console.log(`子进程${message.pid}已完成`);
  //   }
  // })
} else {
  //处理子进程逻辑
  childProcess();
}




function childProcess () {
  //process.send({ type: 'taskCompleted', pid: process.pid });向主进程发送消息

  const app = express()

  //搭建一级路由
  app.use('/', (req, res) => {
    res.header('Access-Control-Allow-Origin', '*')//解决跨域
    console.log(process.pid + '子进程正在处理服务')
    res.send({ msg: 'eeee' })
  })

  //设置端口
  app.listen(3000, () => {
    console.log(process.pid + '  express服务启动成功')
  })

}

 

posted on 2024-04-21 00:05  adong搬砖  阅读(139)  评论(0)    收藏  举报