Dee*_*psy 16 cluster-computing multiprocessing node.js express
我正在尝试构建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
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:每当一个用户点击随机节点实例或者例如他第一次打开页面并点击节点N4并且直到他的会话到期时,他会在每次请求时命中节点N4?对于那些不理解我的问题的人,我会尝试解释我担心的问题:用户进入我的页面,他登录节点N3,然后我将req.session.userdata设置为随机数据,他刷新了页面,他点击节点N4,我将能够从不同的节点访问req.session.userdata?这意味着用户有机会随机退出,或者我只是不了解如何使用快递进行聚类?
Dan*_*ohn 13
您是正确的,Connect/Express中的内存会话存储不适合支持多个实例.解决方案是使用后备数据库实现会话存储.我的建议是connect-redis,示例代码在Session Undefined - 使用Connect-Redis/ExpressJS/Node
但是有很多选择.
| 归档时间: |
|
| 查看次数: |
8128 次 |
| 最近记录: |