将Node.js群集应用程序迁移到StrongLoop ProcessManager

我在多个实例上运行Node.js express web应用程序和api使用节点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); 

根据服务器上的cpus数量和configuration,我正在运行指定数量的工作人员。

在我的networking应用程序逻辑中, master节点加载一次共享资源,而worker节点处理apis,即,当需要这些共享资源时,传入响应将从worker api进程路由到主节点进程,通过本地呼叫。

当使用StrongLoop时,在进程pipe理器中实现了集群逻辑,但我不确定如何将共享资源逻辑从我的节点cluster模型迁移到StrongLoop。