¿Qué es clustering?
Clustering permite crear múltiples procesos Node.js (workers) que comparten el mismo puerto. Así aprovechas todos los núcleos de la CPU.
Ejemplo con cluster
const cluster = require('cluster');
const os = require('os');
const express = require('express');
if (cluster.isPrimary) {
const cpus = os.cpus().length;
for (let i = 0; i < cpus; i++) cluster.fork();
cluster.on('exit', (worker) => {
console.log('Worker muerto:', worker.process.pid);
cluster.fork();
});
} else {
const app = express();
app.get('/', (req, res) => res.send('Hola'));
app.listen(3000);
}
Balanceo y sticky sessions
Para WebSockets o sesiones, puedes necesitar sticky sessions para que un cliente siempre llegue al mismo worker.
Alternativas
- • PM2 cluster mode
- • Docker + orquestadores
- • Load balancers externos