首頁 > web前端 > js教程 > 主體

在 Node.js 應用程式中建立集群

DDD
發布: 2024-11-02 09:37:02
原創
343 人瀏覽過

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!