मैं Socket.io को native load balancing ("क्लस्टर") के साथ बहु-थ्रेड किए जाने के लिए Node.js v.0.6.0 और बाद में काम करने के लिए देख रहा हूं।Node.js, बहु-थ्रेडिंग और सॉकेट.io
जो मैं समझता हूं उससे, सॉकेट.ओ अपने आंतरिक डेटा को स्टोर करने के लिए रेडिस का उपयोग करता है। मेरी समझ यह है: प्रत्येक कार्यकर्ता के लिए एक नया रेडिस उदाहरण पैदा करने के बजाय, हम मजदूरों को उसी रेडिस इंस्टेंस को मास्टर के रूप में उपयोग करने के लिए मजबूर करना चाहते हैं। इस प्रकार, कनेक्शन डेटा सभी श्रमिकों में साझा किया जाएगा। मास्टर में
कुछ इस तरह:
RedisInstance = new io.RedisStore;
हम किसी भी तरह श्रमिकों को RedisInstance
गुजरती हैं और निम्न करना होगा: वर्ष, 3 पार्टी क्लस्टर मॉड्यूल का उपयोग कर this implementation द्वारा
io.set('store', RedisInstance);
प्रेरित होकर , मेरे पास निम्नलिखित गैर-कार्यशील कार्यान्वयन है:
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
var sio = require('socket.io')
, RedisStore = sio.RedisStore
, io = sio.listen(8080, options);
// Somehow pass this information to the workers
io.set('store', new RedisStore);
} else {
// Do the work here
io.sockets.on('connection', function (socket) {
socket.on('chat', function (data) {
socket.broadcast.emit('chat', data);
})
});
}
विचार? मैं पूरी तरह गलत दिशा में जा रहा हूं, कोई भी कुछ विचारों को इंगित कर सकता है?
मुझे आश्चर्य है कि क्या दृष्टिकोण आप उपयोग कर अंत। –