BaeBox

Node - Cluster Module 본문

개발 관련

Node - Cluster Module

배모씨. 2020. 3. 14. 20:47
반응형

Node

 

Node.js 의 Cluster Module 이라는 것을 알게 되어 그에 관한 글을 적어본다.

Cluster Module : Node를 MultiCore 환경에서 활용하기 위해 사용하는 모듈. 

현재까지 내가 파악한 바로는 Master라는 이름의 Balancer가 각각의 프로세스에 해당하는 worker들에게 일을 나누어 주는 형태이다. 

Listening 은 Master만 하고 있고 worker들에게 일을 넘겨주는 형태이다.

아래 링크에 들어가보면 매우 간단한 예제가 있다.

https://nodejs.org/api/cluster.html

 

Cluster | Node.js v13.11.0 Documentation

Cluster# A single instance of Node.js runs in a single thread. To take advantage of multi-core systems, the user will sometimes want to launch a cluster of Node.js processes to handle the load. The cluster module allows easy creation of child processes tha

nodejs.org

논리 프로세스의 수만큼의 프로세스를 띄우는 코드 
위의 코드를 실행하고 실행되고 있는 프로세스를 확인해보면 이렇다.

 

간단하쥬?

그런데 동일한 port를 listening 하고 있기 때문에 어떻게 사용할지에 대한 고민이 필요해 보인다.

같은 port를 listening 하고 있기 때문에 각각의 노드 서비스의 내용이 달라지는 것은 이상할테고, scheduler 같은 예약동작이 DB의 값을 업데이트하는 동작등을 한다면 여러번 동작할테니 그도 이상하다. 로그인을 세션으로 이용하는 것도 그렇고.

그렇다면, REST API 단위로 컴팩트하게 동작하는 서비스가 authentication/authorization을 token, jwt 방식을 이용하고, DB를 업데이트 하는 동작 등을 다른 서비스로 빼두면 현실적으로 고가용성 구성을 고려한 node 서비스가 되지 않을까 싶다.

여지껏 만들어본 것들은 이런걸 생각해보고 만든게 없어서 테스트하기 애매하니까 나중에 시간나면 해봐야징.


덤. 나도 cluster 모듈에 대해 찾아보며 알게 되었는데, node는 32bit 에서는 512mb, 64bit 에서는 1.5gb를 사용하도록 제한되어 있다고 한다. V8 엔진의 제한이라고 한다. 세상에 난 아는게 무엇인가.


https://programmingsummaries.tistory.com/384

 

[NodeJS] 클러스터(cluster)에 대한 정리

들어가며 node.js는 기본적으로 하나의 프로세스가 32bit에서는 512MB의 메모리, 64Bit에서는 1.5GB 메모리를 사용하도록 제한되어 있다. V8엔진의 제한을 그대로 반영한 것인데, 물론 설정으로 더 늘릴 수는 있지..

programmingsummaries.tistory.com

https://nodejs.org/api/cluster.html

 

Cluster | Node.js v13.11.0 Documentation

Cluster# A single instance of Node.js runs in a single thread. To take advantage of multi-core systems, the user will sometimes want to launch a cluster of Node.js processes to handle the load. The cluster module allows easy creation of child processes tha

nodejs.org

 

반응형
Comments