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 중국어 웹사이트의 기타 관련 기사를 참조하세요!