node.js 聚类是如何工作的?
how does node.js clustering work?
我正在尝试理解以下用于创建多服务器以利用多核的代码 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);
}
我的问题是,假设每个创建的服务器都在同一个端口上侦听,如何保证一个请求不会被多个服务器提供服务?
在节点 v0.10 中,OS 内核总是选择哪个子节点获得请求。在节点 v0.11+ 和 io.js v1.0.0+ 中,使用手动循环调度(目前 Windows 除外)。不过,此默认行为可通过设置环境变量进行配置。
我正在尝试理解以下用于创建多服务器以利用多核的代码 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);
}
我的问题是,假设每个创建的服务器都在同一个端口上侦听,如何保证一个请求不会被多个服务器提供服务?
在节点 v0.10 中,OS 内核总是选择哪个子节点获得请求。在节点 v0.11+ 和 io.js v1.0.0+ 中,使用手动循环调度(目前 Windows 除外)。不过,此默认行为可通过设置环境变量进行配置。