Node.js 애플리케이션에서 클러스터링 생성

DDD
풀어 주다: 2024-11-02 09:37:02
원래의
413명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿