gpt4 book ai didi

node.js - Nodejs 集群和 expressjs session

转载 作者:IT老高 更新时间:2023-10-28 23:01:34 26 4
gpt4 key购买 nike

我正在尝试构建 nodejs 应用程序,该应用程序将利用多核机器(又名集群),我有一个关于 session 的问题。我的代码如下所示:

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

}

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

最佳答案

您是正确的,Connect/Express 中的内存 session 存储不适合支持多个实例。解决方案是使用后备数据库实现 session 存储。我的推荐是connect-redis,示例代码在Session Undefined - Using Connect-Redis / ExpressJS / Node

但是有几十种选择。

关于node.js - Nodejs 集群和 expressjs session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com