Hello World
这是你的 cluster.js
:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
require('./server.js')();
}
这是你的主要内容 2:
const http = require('http');
function startServer() {
const server = http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello Http');
});
server.listen(3000);
}
if(!module.parent) {
// Start server if file is run directly
startServer();
} else {
// Export server, if file is referenced via cluster
module.exports = startServer;
}
在这个例子中,我们托管一个基本的 Web 服务器,但是,我们使用内置的集群模块来启动 worker(子进程)。进程数量取决于可用的 CPU 核心数。这使得 Node.js 应用程序可以利用多核 CPU,因为 Node.js 的单个实例在单个线程中运行。现在,应用程序将在所有进程中共享端口 8000。默认情况下,使用 Round-Robin 方法会自动在工作人员之间分配负载。