Clustering in Node.js ist eine Methode, die verwendet wird, um die volle Auslastung der CPU zu erreichen und die redundante Ausfallsicherung bei Fehlern zu verbessern. Selbst akute Ausfälle eines einzelnen Prozessionspfades führen nicht zu einer vollständigen Systemstörung.
Hier sind die Schritte zum Hinzufügen von Clustering zu einer Node.js-Anwendung:
1. Einfügen der Clustering-Bibliothek:
Zuerst müssen Sie das Cluster-Modul selbst importieren. Dies ist eine eingebaute Bibliothek in Node.js. Das Cluster-Modul ermöglicht es, kind-Worker-Prozesse zu erstellen und deren Lebenszyklus zu verwalten.
```js
const cluster = require(‘cluster’);
```
2. Den Code unterscheiden:
Dann müssen Sie entscheiden, welcher Code auf dem Master-Prozess läuft und welcher Code auf den Kinderprozessen läuft. Die Funktion `cluster.isMaster` ermöglicht es, diese Unterscheidung zu machen.
```js
if (cluster.isMaster) {
// Code für Master-Prozess
} else {
// Code für Kind-Prozesse
}
```
3. Master-Prozess:
Der Master-Prozess erstellt Kind-Prozesse. Die Anzahl der Kind-Prozesse hängt normalerweise von der Anzahl der CPU-Kerne ab.
```js
if (cluster.isMaster) {
const cpuCount = require(‘os’).cpus().length;
4. Kind-Prozesse:
Die Kind-Prozesse führen Ihre Anwendung aus. In einem Express-Server könnte das so aussehen:
```js
else {
const express = require(‘express’);
const app = express();
5. Zu guter Letzt müssen wir sicherstellen, dass, wenn ein Kindprozess stirbt, ein neuer gestartet wird.
```js
cluster.on(‘exit’, function(worker) {
console.log(‘Worker %d gestorben :(‘, worker.id);
cluster.fork();
});
```
Ihr gesamter Code könnte am Ende so aussehen:
```js
const cluster = require(‘cluster’);
const os = require(‘os’);
if (cluster.isMaster) { const cpuCount = os.cpus().length; for (let i = 0; i < cpuCount; i += 1) { cluster.fork(); }
cluster.on(‘exit’, function () { cluster.fork(); }); } else { const express = require(‘express’); const app = express(); app.get(‘/’, (req, res) => { res.send(‘Hallo Welt!’); }); app.listen(3000); } ```Diese Anwendung wird nun auf mehreren Prozessen laufen und somit ist sie bereit, viele eingehende Anfragen viel effizienter zu behandeln als vorher.