Search
Duplicate

Nodejs Cluster

Created
2022/06/29 05:10
tags
📟NodeJS
Nodejs는 싱글 프로세스로 작동하기 때문에 멀티 프로세스 사용을 위해서는 Cluster 모듈을 사용해야 한다. (Nodejs 자체 모듈 외에도 PM2 서드파티를 사용할 수도 있다.) Master - Worker(slave) 구조로 Master에서 여러 개의 Worker를 만들어내고 작업을 할당시켜 작동한다.
Cluster.isPrimary 값을 이용해 Master인지 Worker인지 구분할 수 있다. Cluster.fork() 함수를 이용해서 Worker을 만들 수 있다. 이 때, fork() 를 사용하여 Worker을 만들면 프로그램의 처음부터 다시 실행한다. 따라서 isPrimary 를 이용해 Master와 Worker의 역할을 나눠주어야 한다.
isPrimary 값은 Nodejs 16.5.0 버전에서 새로 생긴 것으로 이전 버전에서는 isMaster을 사용해야 한다.
Master와 Worker끼리 통신할 때에는 프로세스끼리 통신할 때 쓰는 IPC를 이용한다. Process.send() 를 통해 Master에 메세지를 전달할 수 있다. Cluster.on() 또는 Worker.on() 을 이용해 이벤트를 등록하여 받은 메세지를 처리할 수 있다.
Worker끼리 데이터 공유가 불가능하기 때문에 Redis을 이용해서 해결할 수 있다.