Node.js Nodejs集群模块-侦听套接字时的工作方式

Node.js Nodejs集群模块-侦听套接字时的工作方式,node.js,worker,Node.js,Worker,我在理解这段代码时有些困难: const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`Master ${process.pid} is running`); // Fork workers. for (let i = 0; i < num

我在理解这段代码时有些困难:

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // 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
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}
const cluster=require('cluster');
const http=require('http');
const numpus=require('os').cpus().length;
if(cluster.isMaster){
log(`Master${process.pid}正在运行`);
//叉工。
for(设i=0;i{
log(`worker${worker.process.pid}`);
});
}否则{
//工作者可以共享任何TCP连接
//在本例中,它是一个HTTP服务器
http.createServer((req,res)=>{
书面记录(200);
res.end('hello world\n');
}).听(8000);
log(`Worker${process.pid}已启动`);
}
我不明白父母和工人之间的关系。父进程生成子进程并等待它们,但如何在工作进程(子进程)之间分配负载


在子进程中,多个进程如何可能绑定到同一端口?

我不确定您是否读过这篇文章。有一个很好的解释。

简单地说,集群模块将处理这个问题。你不必为此担心

多个进程未绑定到同一端口

方法1(循环法-默认值,windows除外):
主设备绑定到端口,侦听并接受传入连接,它将工作分配给从设备,并通过ipc套接字进行通信
在这里,每一个奴隶都有平等的工作机会

方法2(不平衡法):
主进程绑定到端口(请记住,它不接受连接),侦听套接字共享给从进程。
现在,从属服务器负责接受连接并处理请求。
在这里,由底层操作系统在各个进程之间分配工作。这是由操作系统完成的公平调度。如果工作很小,大多数时候都是同一个奴隶做的工作