Clustering in Node.js kan in principe uit vier basisstappen bestaan. Hier is een overzicht:
1. Node.js ingebouwd cluster module importeren.
U moet eerst Node.js’ ingebouwde cluster module in uw applicatie importeren. Dit kan u doen met de `require` functie:
```
const cluster = require(‘cluster’);
```
1. Aantal CPU’s bepalen.
Vervolgens kunt u het aantal CPU’s in uw systeem bepalen met behulp van de `os` module ook beschikbaar in Node.js. Dit zou kunnen klinken als een overdreven stap, maar het is cruciaal omdat het aantal werkers dat je maakt idealiter zou moeten overeenkomen met het aantal CPU’s.
```
const numCPUs = require(‘os’).cpus().length;
```
1. Master proces instellen.
De volgende stap is het instellen van de master proces. In de master proces, moet je ervoor zorgen dat er een nieuw worker proces wordt aangemaakt voor elk van de beschikbare CPU’s. Hiervoor kun je de `cluster.fork()` functie gebruiken.
```
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
1. Worker processen instellen.
Eindelijk, in de worker processen, moet u uw server daadwerkelijk implementeren. Dit is waar uw applicatie logica zou zitten.
```
else {
require(‘./server’);
console.log(`Worker ${process.pid} started`);
}
```
Dus, uw complete server implementatie code zou er ongeveer zo uitzien:
```
const cluster = require(‘cluster’);
const numCPUs = require(‘os’).cpus().length;
if (cluster.isMaster) { console.log(`Master ${process.pid} is running`);
// Fork workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on(‘exit’, (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); } else { // Workers can share any TCP connection // In this case it is an HTTP server require(‘./server’); console.log(`Worker ${process.pid} started`); } ``` Het is belangrijk om op te merken dat, terwijl de ingebouwde cluster module een goede plaats is om te beginnen, je uiteindelijk zou willen uitkijken naar meer robuuste oplossingen voor productie apps. PM2 is een van dergelijke geavanceerde proces managers voor Node.js die ook clustering als een van zijn vele functies aanbiedt.