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中文网其他相关文章!