node.js集群如何工作?

时间:2015-01-14 01:55:40

标签: node.js multicore

我正在尝试理解以下用于创建多个服务器以使用多核cpu的代码。

 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 个答案:

答案 0 :(得分:1)

在节点v0.10中,OS内核始终选择哪个子节点获取请求。在节点v0.11 +和io.js v1.0.0 +中,使用手动循环调度(目前在Windows上除外)。可以通过设置环境变量来配置此默认行为。