Node.js Nodejs集群和expressjs会话

Node.js Nodejs集群和expressjs会话,node.js,express,multiprocessing,cluster-computing,Node.js,Express,Multiprocessing,Cluster Computing,我正在尝试构建nodejs应用程序,它将利用多核机器(也称为集群),我有一个关于会话的问题。我的代码如下所示: var cluster = exports.cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } clust

我正在尝试构建nodejs应用程序,它将利用多核机器(也称为集群),我有一个关于会话的问题。我的代码如下所示:

var cluster = exports.cluster = require('cluster');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {

  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died. Trying to respawn...');
    cluster.fork();
  });

} else {

//spawn express etc

}
var cluster=exports.cluster=require('cluster');
var numpus=require('os').cpus().length;
if(cluster.isMaster){
对于(变量i=0;i
我的问题是:每次单个用户点击随机节点实例,或者例如,当他第一次打开页面并点击节点N4时,直到会话到期,他在每个请求中都会点击节点N4?对于那些不理解我的问题的人,我将尝试解释我所担心的:
用户进入我的页面,他登录到节点N3,然后我将req.session.userdata设置为随机数据,他刷新页面并点击节点N4,我是否能够从不同的节点访问req.session.userdata?这意味着用户有可能被随机注销,或者我只是不了解使用express进行群集是如何工作的?

您是正确的,Connect/express中的内存会话存储不适合支持多个实例。解决方案是使用备份数据库实现会话存储。我的推荐是connect redis,示例代码位于


但是有几十种选择。

我只有一个问题,您应该将初始化和设置会话存储放在循环的主部分或工作案例(即else案例)的何处