Il modulo cluster in Node.js è uno strumento molto potente che consente alle applicazioni di essere eseguite su diversi processori paralleli o CPU all’interno dello stesso server. Questo è molto vantaggioso in termini di scalabilità e performance, poiché consente di sfruttare appieno la potenza di calcolo del server.
Ecco un esempio base di come utilizzare il modulo cluster in Node.js:
```
// include il modulo cluster
var cluster = require(‘cluster’);
var http = require(‘http’);
var numCPUs = require(‘os’).cpus().length;
if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); }
cluster.on(‘exit’, (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); } else { // I lavoratori possono condividere qualsiasi connessione TCP // In questo caso è un server HTTP http.createServer((req, res) => { res.writeHead(200); res.end(‘hello world\n’); }).listen(8000); } ```In questo esempio, il processo principale (o “master”) inizia varie nuove istanze di sé stesso – uno per ogni CPU sul server. Ogni processo figlio (o “worker”) esegue il codice del server web. Quindi, se avevi un server con 4 CPU, avresti 4 diverse istanze del tuo server web tutte in esecuzione contemporaneamente.
Il modulo cluster gestisce tutti i dettagli, come il bilanciamento del carico tra i vari worker e la gestione dei worker che si arrestano inaspettatamente.