Node.js は、スケーラブルなアプリケーションを開発するための人気のあるプラットフォームですが、そのシングルスレッド アーキテクチャが高負荷の状況ではボトルネックになる可能性があります。 Node.js の能力を最大限に活用するために、クラスタリングは複数の CPU コアの使用を可能にし、アプリケーションのパフォーマンスと応答性を向上させる効果的な手法です。
まず、プロジェクト用に新しいディレクトリを作成し、新しい Node.js プロジェクトを開始します。
mkdir node-cluster
cd node-cluster
npm init -y
このチュートリアルでは、Node.js 自体のみが必要ですが、Express を使用して単純な HTTP サーバーを作成します。次のコマンドを使用して Express をインストールします:
npm install express
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 コアよりも多くのワーカーを使用すると過負荷やパフォーマンスの低下につながる可能性があり、一方、使用するワーカーが少ないとリソースが十分に活用されない可能性があります。パフォーマンスとリソース使用率の理想的なバランスを見つけるために、さまざまな構成をテストすることをお勧めします。
これで、アプリケーションを実行できるようになります。次のコマンドを使用します:
node server.js
この例に従うと、ターミナルに次のようなものが表示されます:
Master 12345 is running Worker 12346 started Worker 12347 started Worker 12348 started
curl を使用してローカル サーバーの / ルートをテストするには、次のコマンドを使用できます:
curl http://localhost:3000/
ターミナルで上記のコマンドを実行すると、次のような応答が返されるはずです。
Soma: 49999995000000, Processado pelo Worker: 12348
以上がNode.js アプリケーションでのクラスタリングの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。