El módulo de clúster es un módulo incorporado en Node.js que permite a los desarrolladores crear aplicaciones con múltiples subprocesos. Esto es particularmente útil cuando se trabaja con servidores con múltiples núcleos de CPU, ya que se puede aprovechar al máximo la potencia de procesamiento de todos los núcleos.
El módulo de clúster crea réplicas de la aplicación (llamadas “trabajadores”) que se ejecutan simultáneamente y comparten la misma conexión de servidor. Esto puede aumentar significativamente la eficiencia y la velocidad de la aplicación, especialmente para aplicaciones en tiempo real o con un alto tráfico.
Aquí hay un ejemplo de cómo usarlo:
```javascript
var cluster = require(‘cluster’);
var http = require(‘http’);
var numCPUs = require(‘os’).cpus().length;
if (cluster.isMaster) { console.log(‘Número de CPUs: ‘ + numCPUs);
// Crea un trabajador para cada CPU for (var i = 0; i < numCPUs; i++) { cluster.fork(); } } else { // Los trabajadores pueden compartir cualquier conexión TCP http.createServer(function(req, res) { res.writeHead(200); res.end(“Hola mundo, el proceso es: “ + process.pid); }).listen(8000); } ```En el anterior ejemplo, si la aplicación se encuentra en el proceso maestro (cluster.isMaster), se creará un trabajador para cada núcleo de la CPU disponible. Cada trabajador ejecuta su propia instancia del servidor HTTP en el puerto 8000.
Cuando la aplicación recibe una solicitud HTTP, uno de los trabajadores la maneja. Node.js utiliza de manera predeterminada una estrategia de balanceo de carga de round-robin para decidir qué trabajador debe manejar la solicitud, aunque esto puede ser personalizado.