首页 Node.js核心模块手册

模块说明


1.cluster模块底层使用child_process.fork()
2.多核 CPU 环境负载均衡,根据 CPU 核数衍生多次主应用进程
3.扩展性克隆,主进程通过调度轮询算法去选择一个工作进程
4.搭配os模块方法,cpus()获取cpu核心数,来决定开多少进程

 


属性 描述
isMaster 布尔,true:当前进程是主进程
isWorker 布尔,true:当前进程是子进程
workers

数组,fork()方法创建的所有子进程

注:第一个进程从1开始,例:workers[1]

   

方法 描述
fork() 创建进程,每调用一次创建一个进程,默认当前文件,可指定文件
   
on() 绑定事件
setupMaster() 修改fork()方法默认运行文件
   

示例:多进程服务器


主进程:文件名 a.js
var cluster = require("cluster");
var os = require("os");
var cpu_num = os.cpus().length;  //获取CPU核心数

cluster.on("exit", function(worker){   //子进程关闭时触发
  console.log("子进程关闭" + worker.id);
});

cluster.on("fork", function(worker){  //监听所有子进程返回消息
  worker.on("message", function(data){
    console.log(data.s);
  });
});

cluster.setupMaster({exec:"b.js"});  //设置子进程运行文件
for(var i = 0; i<cpu_num; i++) cluster.fork();  //根据CPU核心数,开启子进程




子进程:文件名 b.js
process.send({s: "我是子进程" + process.pid});  //向主进程发送数据
process.exit(0);  //关闭子进程