2015-10-27 2 views
2

Я запускаю свое приложение с кластерами. У моего мастера есть какое-то кэширование с переменной, которую нужно разделить между моими работниками. Могу ли я сделать это следующим образом, поскольку использование физического хранилища данных для меня не представляется возможным?Как распределить переменную среди кластеров в nodejs?

if (cluster.isMaster) { 
    // Create a worker for each CPU 
    global.my_cache_variable = 'xyz'; 
    console.log("Number of cpu cores", cCPUs); 
    for (var i = 0; i < cCPUs; i++) { 
     cluster.fork(); 
    } 

    cluster.on('online', function (worker) { 
     console.log('Worker ' + worker.process.pid + ' is online.'); 
    }); 
    cluster.on('exit', function (worker, code, signal) { 
     console.log('worker ' + worker.process.pid + ' died.'); 
     cluster.fork(); 
    }); 
} else { 
    //create server code here 
    // and access the global cache variable with the workers 
} 

ответ

2

Несмотря на то, что вы можете осуществлять межпроцессное общение, мне нелегко и может быть не то, что вы хотите (обмен переменной между процессами).
Ваш лучший вариант, вероятно, заключается в экстернализации хранилища кеша, например. хранилище Redis, доступ к которому доступны всем кластерам. Он может быть на той же машине или другой. Это также поможет, если вам нужно масштабировать горизонтально, так как он будет использоваться несколькими машинами.

Смежные вопросы