Node.js アプリケーションでのクラスタリングの作成

DDD
リリース: 2024-11-02 09:37:02
オリジナル
414 人が閲覧しました

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

Node.js は、スケーラブルなアプリケーションを開発するための人気のあるプラットフォームですが、そのシングルスレッド アーキテクチャが高負荷の状況ではボトルネックになる可能性があります。 Node.js の能力を最大限に活用するために、クラスタリングは複数の CPU コアの使用を可能にし、アプリケーションのパフォーマンスと応答性を向上させる効果的な手法です。

前提条件

  • Node.js がマシンにインストールされています。最新バージョンは、nodejs からダウンロードできます。
  • JavaScript と Node.js に関する基本的な知識があること。

ステップ 1: 新しい Node.js プロジェクトを作成する

まず、プロジェクト用に新しいディレクトリを作成し、新しい Node.js プロジェクトを開始します。

mkdir node-cluster
ログイン後にコピー
cd node-cluster
ログイン後にコピー
npm init -y
ログイン後にコピー

ステップ 2: 依存関係をインストールする

このチュートリアルでは、Node.js 自体のみが必要ですが、Express を使用して単純な HTTP サーバーを作成します。次のコマンドを使用して Express をインストールします:

npm install express
ログイン後にコピー

ステップ 3: クラスタリングを使用してサーバーを作成する

server.js というファイルを作成し、次のコードを追加します。

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`);
  });
}
ログイン後にコピー

クラスター構成は、マシンまたはサーバーで使用可能な CPU の数に応じて実行する必要があります。たとえば、サーバーに 6 つの CPU がある場合、利用可能なリソースを最大限に活用するには 6 つのワーカーを作成するのが理想的です。 CPU コアよりも多くのワーカーを使用すると過負荷やパフォーマンスの低下につながる可能性があり、一方、使用するワーカーが少ないとリソースが十分に活用されない可能性があります。パフォーマンスとリソース使用率の理想的なバランスを見つけるために、さまざまな構成をテストすることをお勧めします。

ステップ 4: アプリケーションを実行する

これで、アプリケーションを実行できるようになります。次のコマンドを使用します:

node server.js
ログイン後にコピー

この例に従うと、ターミナルに次のようなものが表示されます:

Master 12345 is running
Worker 12346 started
Worker 12347 started
Worker 12348 started
ログイン後にコピー

ステップ 5: アプリケーションをテストする

curl を使用してローカル サーバーの / ルートをテストするには、次のコマンドを使用できます:

curl http://localhost:3000/
ログイン後にコピー

ターミナルで上記のコマンドを実行すると、次のような応答が返されるはずです。

Soma: 49999995000000, Processado pelo Worker: 12348
ログイン後にコピー

以上がNode.js アプリケーションでのクラスタリングの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート