2013-07-13 7 views
13

मैं नोडजेस एप्लिकेशन बनाने की कोशिश कर रहा हूं जो मल्टीकोर मशीनों (ए.के.ए. क्लस्टरिंग) का लाभ उठाएगा और मुझे सत्रों के बारे में एक प्रश्न मिला। मेरे कोड इस तरह दिखता है:नोडज क्लस्टरिंग और एक्सप्रेसजेस सत्र

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 

} 

मेरा प्रश्न है: हर एक एकल उपयोगकर्ता यादृच्छिक नोड उदाहरण हिट या उदाहरण के लिए पहली बार उन्होंने पेज खुल जाता है और नोड एन 4 हिट और जब तक उसकी सत्र समाप्त हो जाता है कि वह नोड N4 पर मारा हर अनुरोध? उन लोगों के लिए जो मेरे प्रश्न को नहीं समझते हैं, मैं यह समझाने की कोशिश करूंगा कि मैं किस बारे में चिंतित हूं: कोई उपयोगकर्ता मेरे पृष्ठ में प्रवेश करता है, वह नोड एन 3 पर लॉगिन करता है, फिर मैंने req.session.userdata को यादृच्छिक डेटा पर सेट किया है, वह ताज़ा करता है पृष्ठ और उसने नोड एन 4 मारा, क्या मैं अलग-अलग नोड से req.session.userdata तक पहुंच पाऊंगा? इसका मतलब है कि उपयोगकर्ता को यादृच्छिक रूप से लॉग आउट करने का मौका है या मैं समझ नहीं पा रहा हूं कि एक्सप्रेस कार्यों के साथ क्लस्टरिंग कैसे होती है?

उत्तर

11

आप सही हैं कि कनेक्ट/एक्सप्रेस में मेमोरी सत्र स्टोर में एक से अधिक उदाहरणों का समर्थन करने के लिए अनुपयुक्त है। समाधान बैकिंग डेटाबेस के साथ एक सत्र स्टोर को लागू करना है। मेरी सिफारिश कनेक्ट-रेडिज़ है, और उदाहरण कोड Session Undefined - Using Connect-Redis/ExpressJS/Node

पर है लेकिन कई विकल्प हैं।

संबंधित मुद्दे