Node.js 集群 - 是否自动安装了负载均衡器?

Node.js Clustering - Is there automatically a Load Balancer in place?

我有一个 4 核 CPU 和 8 个逻辑处理器,在此代码中创建了 8 个工作进程和 1 个主进程。当形成 socket 连接时,它倾向于连接到最后一个工作程序 CPU 8。使用此方法是否会自动添加 Load Balancer,还是我需要添加它?有没有办法测试 Load Balancer 是否正常工作?我尝试添加 100 个客户端,但它们都连接到 CPU 8 - 不确定是否可能,因为在这个实例中几乎没有任何进程处理

简单Node.js聚类

const os = require('os'),
  cluster = require('cluster'),
  cores = os.cpus();
var clusterCount = 0;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);
  // Fork workers
  for (let i = 0; i < cores.length; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
}
else {
  const http = require('http'),
    express = require('express'),
    socketio = require('socket.io'),
    process = require('process');;

  var cpu = cores[clusterCount];
  var app = express();
  var port = process.env.PORT || process.argv[2] || 8080;
  var server = app.listen(port);
  var io = socketio(server);

  io.adapter(socketioRedis({ host: config.redis_host, port: config.redis_port }));

  io.on('connection', (socket) => {
    console.log(`User ${socket.id} connected to worker ${process.pid}`);
  });

  console.log(`Worker ${process.pid} started on port: ${port} | ${cpu.model}`);
  clusterCount++;
}

这取决于几点。 https://nodejs.org/api/cluster.html#cluster_how_it_works

Does using this method automatically add a Load Balancer?

主节点将处理负载均衡。

sure if it could be because there is barely any process handling in this instance

可能是 CPU 8 不是那么忙,仍然可以处理负载。有两种策略也取决于您使用的OS。