Javascript 将Node.js群集应用迁移到StrongLoop ProcessManager
我正在多个实例上运行Node.js express web应用程序和api,使用NodeJavascript 将Node.js群集应用迁移到StrongLoop ProcessManager,javascript,node.js,web-applications,strongloop,Javascript,Node.js,Web Applications,Strongloop,我正在多个实例上运行Node.js express web应用程序和api,使用Nodecluster 我的集群启动文件是典型的 'use strict'; (function() { /// node clustering const cluster = require('cluster'); const numCPUs = require('os').cpus().length; var clusterConfig=require('./config/clusterconfig.json'
cluster
我的集群启动文件是典型的
'use strict';
(function() {
/// node clustering
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
var clusterConfig=require('./config/clusterconfig.json');
if (cluster.isMaster) { // master node
// process=master
console.log(`Master ${process.pid} is running`);
// Fork workers.
var maxCPUs = clusterConfig.master.workers;
maxCPUs=(maxCPUs>=numCPUs)?numCPUs:maxCPUs;
for (let i = 0; i < maxCPUs; i++) {
const worker=cluster.fork();
}
var masterConfig=require('./config/masterconfig.json');
// configuration override
if( process.env.MASTER_PORT ) { // override master port
masterConfig.http.options.port = process.env.MASTER_PORT;
}
if( process.env.NODE_ID ) { // override node identifier
masterConfig.pubsub.node = process.env.NODE_ID;
}
var MasterNode=require('./lib/master');
var master= new MasterNode(masterConfig);
master.start()
.then(done=> {
console.log(`master ${process.pid} started`);
})
.catch(error=> {
console.error("master error",error);
});
}
else if (cluster.isWorker) { // worker node
// process=worker
console.log(`Worker ${process.pid} started`);
var workerConfig=require('./config/workerconfig.json');
// configuration override
if( process.env.WORKER_PORT ) { // override worker port
workerConfig.http.options.port = process.env.WORKER_PORT;
}
if( process.env.NODE_ID ) { // override node identifier
workerConfig.pubsub.node = process.env.NODE_ID;
}
var WorkerNode=require('./lib/worker');
var worker= new WorkerNode(workerConfig);
worker.start()
.then(done=> {
console.log(`worker ${process.pid} started`);
})
.catch(error=> {
console.error(`worker ${process.pid} error`,error);
});
}
}).call(this);
“严格使用”;
(功能(){
///节点聚类
const cluster=require('cluster');
const numpus=require('os').cpus().length;
var clusterConfig=require('./config/clusterConfig.json');
if(cluster.isMaster){//master节点
//进程=主进程
log(`Master${process.pid}正在运行`);
//叉工。
var maxCPUs=clusterConfig.master.workers;
maxCPU=(maxCPU>=numpus)?numpus:maxCPU;
for(设i=0;i{
log(`master${process.pid}已启动`);
})
.catch(错误=>{
控制台错误(“主错误”,错误);
});
}
else if(cluster.isWorker){//worker节点
//过程=工人
log(`Worker${process.pid}已启动`);
var workerConfig=require('./config/workerConfig.json');
//配置覆盖
if(process.env.WORKER_PORT){//覆盖工作端口
workerConfig.http.options.port=process.env.WORKER\u端口;
}
if(process.env.NODE_ID){//重写节点标识符
workerConfig.pubsub.node=process.env.node\u ID;
}
var WorkerNode=require('./lib/worker');
var worker=新WorkerNode(workerConfig);
worker.start()
。然后(完成=>{
log(`worker${process.pid}已启动`);
})
.catch(错误=>{
错误(`worker${process.pid}error`,error);
});
}
}).打电话(这个);
其中,我根据服务器上的CPU数量和配置运行指定数量的工作进程
在我的web应用程序逻辑中,master
节点加载一些共享资源一次,而worker
节点处理api,即当需要这些共享资源时,通过本地调用将传入响应从worker api进程路由到master节点进程
使用StrongLoop时,群集逻辑位于process manager中,但我不确定如何将共享资源逻辑从节点群集
模型迁移到StrongLoop模型