Как работает кластеризация node.js?

Я пытаюсь понять следующий фрагмент кода, который используется для создания тысяч серверов, чтобы использовать многоядерный процессор.

 var cluster = require("cluster"); 
 var http = require("http"); 
 var numCPUs = require("os").cpus().length; 
 var port = parseInt(process.argv[2]); 

 if (cluster.isMaster) {
     for (var i = 0; i < numCPUs; i++) { 
         cluster.fork(); 
     } 

     cluster.on("exit", function(worker, code, signal) { 
         cluster.fork();
     }); 
 } else { 
     http.createServer(function(request, response) { 
         console.log("Request for: " + request.url); 
         response.writeHead(200); 
         response.end("hello world\n"); 
     }).listen(port); 
 }

У меня вопрос: если каждый созданный сервер прослушивает один и тот же порт, что гарантирует, что запрос не будет обслуживаться более чем одним сервером?

1 ответ

Решение

В узле v0.10 ядро ​​ОС всегда выбирает, какой дочерний элемент получает запрос. В узлах v0.11+ и io.js v1.0.0+ используется ручное циклическое планирование (за исключением Windows на данный момент). Это поведение по умолчанию настраивается путем установки переменной среды.

Другие вопросы по тегам