Подтвердить что ты не робот

Классы Nodejs Clustering и expressjs

Я пытаюсь создать приложение nodejs, которое будет использовать многоядерные машины (кластеризация a.k.a.), и я задал вопрос о сеансах. Мой код выглядит следующим образом:

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, и до истечения срока его сеанса он нажимает node N4 на каждый запрос? Для тех, кто не понял мой вопрос, я попытаюсь объяснить, о чем я беспокоюсь: Пользователь вводит мою страницу, он входит в систему node N3, затем я устанавливаю req.session.userdata на случайные данные, он обновляет страницу, и он нажимает node N4, могу ли я получить доступ к req.session.userdata от разных Node? Это означает, что пользователь может случайно выйти из системы или я просто не понимаю, как работает кластеризация с помощью экспресс-функций?

4b9b3361

Ответ 1

Вы правы, что хранилище сеансов в памяти в Connect/Express не подходит для поддержки более одного экземпляра. Решением является создание хранилища сеансов с базой данных поддержки. Моя рекомендация - connect-redis, а пример кода - Session Undefined - Использование Connect-Redis/ExpressJS/Node

Но есть десятки вариантов.