Node.js

Cluster 모듈

2023. 6. 10. 15:10
목차
  1. Cluster
  2. Cluster로 scaling

Cluster

  • 싱글스레도 방식으로 동작하는 노드를 여러개의 코어를 사용할 수 있도록 해주는 노드 내장모듈
  • 노드는 기본적으로 cpu 코어를 1개만 사용하는 싱글스레드 방식으로 동작함, 다른 코어는 놀고있음
  • 서버를 기본적으로 cpu의 코어의 갯수만큼 실행 하면 됨 ex) 4개의 코어 => 서버 4개실행, 효율적으로 서버 실행가능
  • 서버를 cpu코어 갯수만큼 실행하면 요청이 분산되어 서버에 무리가 덜감
  • 성능이 코어의 갯수만큼 배가되는 것은 아니지만 상향됨
  • 단점으로는 컴퓨터 자원(메모리, 세션)을 공유하지 못함 (로그인 한 상태로 새로 고침할때마다 로그인이 풀렸다 로그인했다를 반복함)
  • redis등 별도 서버로 해결가능
  • 워커쓰레드와 비슷한 동작방식 => 워커쓰레드는 쓰레드를 여러개만듬
  • 클러스터는 프로세스를 여러개만듬
  • 1개의 포트에서 6개의 서버를 동시에 띄울수 있음 ex) 3000번 포트에서 서버를 실행하면 3001 3002 포트를 실행하지않아도 cluster 모듈을 사용해 3000포트에만 여러개의 서버를 실행할 수 있음

Cluster로 scaling

  • cpu 코어수보다 1개적은 프로세서를 생성하여 각기다른 프로세스에서 코드가 실행되도록 함
  • isPrimary는 master process인지 알려주는 속성, 처음 실행된 프로세스는 무조건 마스터 프로세스 이기때무네 조건문이 실행됨
  • cluster.fork()메서드는 하위 프로세스들을 생성하는 로직 => 이 로직이 실행되면 다른 프로세스를 통해 해당 코드 전체를 다시 실행함 이때 다시 실행된 코드는 else문을 실행
import cluster from "cluster";
import { cpus } from "os";
import process from "process";

const numCPUs = cpus().length;

if (cluster.isPrimary) {
    console.log(`Primary ${process.pid} is running`);

    // Fork workers.
    for (let i = 0; i < numCPUs - 1; i++) {
        cluster.fork();
    }
} else {
    console.log(`Worker ${process.pid} started`);
}

 

'Node.js' 카테고리의 다른 글

Node.js 모듈  (0) 2023.07.27
Node.js 보안관련 문제  (0) 2023.07.25
Process 모듈  (0) 2023.06.10
dotenv 환경변수 설정하기  (0) 2023.05.04
Morgan 미들웨어  (0) 2023.04.28
  1. Cluster
  2. Cluster로 scaling
'Node.js' 카테고리의 다른 글
  • Node.js 모듈
  • Node.js 보안관련 문제
  • Process 모듈
  • dotenv 환경변수 설정하기
index.ys
index.ys
머리속에 떠도는 코드조각들을 맞추는 공간입니다.
index.ys
코린이 개발일지
index.ys
전체
오늘
어제

공지사항

블로그 메뉴

  • 홈
  • 방명록
  • Github
  • Notion
  • Figma
  • 타닥타닥 (235)
    • 개발일지 (124)
    • html , css (0)
    • Javascript (30)
    • Node.js (8)
    • React (2)
    • 네트워크 (1)
    • DB, SQL (5)
    • AWS (11)
    • CS (21)
    • 면접 (13)
    • 사진 (4)
    • 북로그 (3)
    • 머릿속 (5)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
index.ys
Cluster 모듈
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.