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。
我有一个 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。