Node.js ist eine beliebte Plattform für die Entwicklung skalierbarer Anwendungen, aber seine Single-Threaded-Architektur kann in Hochlastsituationen zu einem Engpass werden. Um die Leistung von Node.js optimal zu nutzen, ist Clustering eine effektive Technik, die es Ihnen ermöglicht, mehrere CPU-Kerne zu verwenden und so die Leistung und Reaktionsfähigkeit Ihrer Anwendung zu verbessern.
Erstellen Sie zunächst ein neues Verzeichnis für Ihr Projekt und starten Sie ein neues Node.js-Projekt:
mkdir node-cluster
cd node-cluster
npm init -y
Für dieses Tutorial benötigen Sie nur Node.js selbst, aber wir verwenden Express, um einen einfachen HTTP-Server zu erstellen. Installieren Sie Express mit dem folgenden Befehl:
npm install express
Erstellen Sie eine Datei mit dem Namen server.js und fügen Sie den folgenden Code hinzu:
const cluster = require('cluster'); const express = require('express'); const http = require('http'); const os = require('os'); const app = express(); const numCPUs = os.cpus().length; // Middleware para simular processamento intenso app.get('/', (req, res) => { let sum = 0; for (let i = 0; i < 1e7; i++) { sum += i; } res.send(`Soma: ${sum}, Processado pelo Worker: ${process.pid}`); }); // Lógica de clusterização if (cluster.isMaster) { console.log(`Master ${process.pid} is running`); // Cria um worker para cada núcleo de CPU for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`Worker ${worker.process.pid} morreu`); }); } else { // Cada worker escuta na mesma porta const server = http.createServer(app); server.listen(3000, () => { console.log(`Worker ${process.pid} started`); }); }
Die Clusterkonfiguration muss entsprechend der Anzahl der auf Ihrem Computer oder Server verfügbaren CPUs erfolgen. Wenn Ihr Server beispielsweise über 6 CPUs verfügt, ist es ideal, 6 Worker zu erstellen, um die verfügbaren Ressourcen optimal zu nutzen. Die Verwendung von mehr Workern als CPU-Kernen kann zu Überlastung und Leistungseinbußen führen, während die Verwendung von weniger Workern zu einer Unterauslastung der Ressourcen führen kann. Es wird empfohlen, verschiedene Konfigurationen zu testen, um das ideale Gleichgewicht zwischen Leistung und Ressourcennutzung zu finden.
Jetzt können Sie Ihre Anwendung ausführen. Verwenden Sie den folgenden Befehl:
node server.js
Wenn Sie dem Beispiel folgen, sehen Sie in Ihrem Terminal etwas Ähnliches wie:
Master 12345 is running Worker 12346 started Worker 12347 started Worker 12348 started
Um die /-Route Ihres lokalen Servers mit Curl zu testen, können Sie den folgenden Befehl verwenden:
curl http://localhost:3000/
Wenn Sie den obigen Befehl im Terminal ausführen, sollten Sie eine Antwort ähnlich dieser erhalten:
Soma: 49999995000000, Processado pelo Worker: 12348
Das obige ist der detaillierte Inhalt vonClustering in Node.js-Anwendungen erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!