Maison > interface Web > js tutoriel > le corps du texte

Création de clustering dans les applications Node.js

DDD
Libérer: 2024-11-02 09:37:02
original
343 Les gens l'ont consulté

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

Node.js est une plateforme populaire pour développer des applications évolutives, mais son architecture monothread peut devenir un goulot d'étranglement dans les situations de charge élevée. Pour tirer le meilleur parti de la puissance de Node.js, le clustering est une technique efficace qui vous permet d'utiliser plusieurs cœurs CPU, améliorant ainsi les performances et la réactivité de votre application.

Conditions préalables

  • Node.js installé sur votre machine. Vous pouvez télécharger la dernière version depuis nodejs.
  • Connaissance de base de JavaScript et de Node.js.

Étape 1 : Créer un nouveau projet Node.js

Tout d'abord, créez un nouveau répertoire pour votre projet et démarrez un nouveau projet Node.js :

mkdir node-cluster
Copier après la connexion
cd node-cluster
Copier après la connexion
npm init -y
Copier après la connexion

Étape 2 : Installer les dépendances

Pour ce tutoriel, vous n'aurez besoin que de Node.js lui-même, mais nous utiliserons express pour créer un simple serveur HTTP. Installez express avec la commande suivante :

npm install express
Copier après la connexion

Étape 3 : Créer le serveur avec clustering

Créez un fichier appelé server.js et ajoutez le code suivant :

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`);
  });
}
Copier après la connexion

La configuration du cluster doit se faire en fonction du nombre de CPU disponibles sur votre machine ou serveur. Par exemple, si votre serveur dispose de 6 CPU, l'idéal est de créer 6 Workers pour tirer le meilleur parti des ressources disponibles. L'utilisation de plus de nœuds de calcul que de cœurs de processeur peut entraîner une surcharge et une diminution des performances, tandis que l'utilisation de moins de nœuds de calcul peut entraîner une sous-utilisation des ressources. Il est recommandé de tester différentes configurations pour trouver l'équilibre idéal entre performances et utilisation des ressources.

Étape 4 : Exécutez l'application

Vous pouvez maintenant exécuter votre application. Utilisez la commande suivante :

node server.js
Copier après la connexion

Si vous suivez l'exemple, vous verrez quelque chose de similaire à :
dans votre terminal

Master 12345 is running
Worker 12346 started
Worker 12347 started
Worker 12348 started
Copier après la connexion

Étape 5 : tester l'application

Pour tester la route / de votre serveur local à l'aide de curl, vous pouvez utiliser la commande suivante :

curl http://localhost:3000/
Copier après la connexion

Lorsque vous exécutez la commande ci-dessus dans le terminal, vous devriez recevoir une réponse similaire à celle-ci :

Soma: 49999995000000, Processado pelo Worker: 12348
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!