2015-01-14 2 views
0

Я пытаюсь понять следующий фрагмент кода, который используется для создания серверов miltiple для использования многоядерного процессора.Как работает кластеризация 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); 
} 

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

+0

Возможный дубликат [Node.js на многоядерных машинах] (http://stackoverflow.com/questions/2387724/node-js-on-multi-core-machines) –

ответ

1

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

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