Nodejs集群和expressjs会话



我正在尝试构建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
}

我的问题是:每次单个用户点击随机节点实例,或者例如,他第一次打开页面并点击节点N4,直到他的会话到期,他在每个请求中都点击节点N4?对于那些不理解我问题的人,我会尽力解释我担心的是什么:一个用户进入我的页面,登录节点N3,然后我将req.session.userdata设置为随机数据,他刷新页面并点击节点N4,我能从不同的节点访问req.sessiion.userdata吗?这意味着用户有机会随机注销,或者我只是不明白使用express集群是如何工作的?

Connect/Express中的内存会话存储不适合支持多个实例,这是正确的。解决方案是实现一个带有后台数据库的会话存储。我的建议是连接redis,示例代码在Session Undefined-Using connect redis/ExpressJS/Node

但有几十种选择。

最新更新