Heim > Web-Frontend > js-Tutorial > Clustering in Node.js-Anwendungen erstellen

Clustering in Node.js-Anwendungen erstellen

DDD
Freigeben: 2024-11-02 09:37:02
Original
444 Leute haben es durchsucht

Criando Clusterização em Aplicações Node.js

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.

Voraussetzungen

  • Node.js auf Ihrem Computer installiert. Sie können die neueste Version von nodejs herunterladen.
  • Grundlegende Vertrautheit mit JavaScript und Node.js.

Schritt 1: Erstellen Sie ein neues Node.js-Projekt

Erstellen Sie zunächst ein neues Verzeichnis für Ihr Projekt und starten Sie ein neues Node.js-Projekt:

mkdir node-cluster
Nach dem Login kopieren
cd node-cluster
Nach dem Login kopieren
npm init -y
Nach dem Login kopieren

Schritt 2: Abhängigkeiten installieren

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
Nach dem Login kopieren

Schritt 3: Erstellen Sie den Server mit Clustering

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`);
  });
}
Nach dem Login kopieren

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.

Schritt 4: Führen Sie die Anwendung aus

Jetzt können Sie Ihre Anwendung ausführen. Verwenden Sie den folgenden Befehl:

node server.js
Nach dem Login kopieren

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
Nach dem Login kopieren

Schritt 5: Testen Sie die Anwendung

Um die /-Route Ihres lokalen Servers mit Curl zu testen, können Sie den folgenden Befehl verwenden:

curl http://localhost:3000/
Nach dem Login kopieren

Wenn Sie den obigen Befehl im Terminal ausführen, sollten Sie eine Antwort ähnlich dieser erhalten:

Soma: 49999995000000, Processado pelo Worker: 12348
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage