Nodejs Clustering et sessions expressjs

J’essaie de créer une application nodejs qui tirera parti des machines multicœurs (ou clustering) et j’ai une question à propos des sessions. Mon code ressemble à ceci:

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 } 

Ma question est la suivante: chaque fois qu’un utilisateur frappe une instance de noeud aléatoire ou, par exemple, la première fois qu’il ouvre la page, frappe le noeud N4 et jusqu’à l’expiration de sa session, frappe-t-il le noeud N4 à chaque requête? Pour ceux qui n’ont pas compris ma question, je vais essayer d’expliquer ce qui m’inquiète: un utilisateur entre dans ma page, il se connecte au noeud N3, puis je règle req.session.userdata sur une donnée aléatoire, il rafraîchit la et il a frappé le nœud N4, pourrai-je accéder à req.session.userdata à partir d’un nœud différent? Cela signifie-t-il qu’il existe une chance pour l’utilisateur de se déconnecter de manière aléatoire ou que je ne comprends tout simplement pas comment le clustering avec express fonctionne?

Vous avez raison de dire que le magasin de sessions en mémoire dans Connect / Express ne convient pas pour prendre en charge plusieurs instances. La solution consiste à implémenter un magasin de session avec une firebase database de sauvegarde. Ma recommandation est connect-redis et l’exemple de code est dans Session indéfinie – Utilisation de Connect-Redis / ExpressJS / Node

Mais il existe des dizaines d’options.