squad
这是一个封装cluster的库,由于cluster由一个master(主进程)以及多个worker(子进程)组成,所以这个库命名为spuad。
用法
const squad = require('squad').getSquad(4);
squad.stepWorker(()=>{
var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
})
squad.fork();
主要函数:
squad.get(path,callback) 用于监听squad.send(对应的请求);
squad.get('add',(number1,number2,callback)=>{
callback(number + number2)
});
squad.send('add',2,2 (val)=>{
console.log(val);
})
CF()能将函数转化于主进程于子进程通信的函数;
const add = CF(add(number1,number2,callback){
callback(number + number2)
})
add(1,2,(val)=>{
console.log(val);
})
CF()可以转包括promise类型的function
squad.worker_number设置子进程数
squad.fork(callback) 启动APP
squad.stepMaster(fn):设置master进程加载的数据,fn可以是Promise
squad.stepMaster(()=>{
return 'master'
});
squad.fork((values)=>{console.log(values)})
squad.stepWorker(fn):设置worker进程加载的数据,fn可以是Promise
squad.stepWorker(()=>{
....
})
squad.setRestartTime(date):设置重启的时间。该函数必须是在isMaster下运行的
squad.stepMaster(()=>{
var retime = new Date();
retime.setHours(retime.getHours + 1);
squad.setResartTime(Date.parse(retime)/1000);
setInterval(squad.resart.bind(squad), 60000);
});
squad.setBound(cpu, rss):设置重启的条件。该函数必须是在isMaster下运行的
squad.stepMaster(()=>{
squad.setBound(0.5,25600);
setInterval(squad.resart.bind(squad), 60000);
});