- node.js에서 병렬처리를 위해 제공되는 모듈이다.
- 작업 하나의 단위를 worker라고 부른다.
- cluster 모듈 생성 후 fork 메서드를 호출하면 worker 하나가 생성되며 필요한만큼 worker를 생성해 병렬 처리를 하면된다.
- 보통 cpu 코어의 개수만큼 worker를 발생시켜 병렬처리를 한다.
쓰레드랑 worker의 차이점
이게 쓰레드랑 좀 다른 개념입니다. 쓰레드 같은 경우에는 하나의 코어가 여러 작업을 왔다 갔다하면서 작업을 하기 때문에 마치 동시에 처리 되는 것처럼 속이면서 작업을 하는게 쓰레드입니다. 세개의 작업이 있다고 가정을 했을 때, 첫번째 두번째 세번째 작업을 하는 것이 각각 1초 걸린다고 했을 때, 하나의 코어를 가지고 이 작업 3개를 왔다 갔다하면서 작업을 하기 때문에 총 3초가 걸립니다.
그런데 하지만 worker는 다릅니다. 만약 cpu에 작업이 3개가 있다고 했을 때, 코어 하나당 하나씩 담당을 해서 작업을 하게 됩니다. 그래서 3개가 각각 1초가 걸린다라고하면, 이것들을 다 수행하는데 1초가 걸리게 됩니다. 이런 기능들을 제공하여 병렬처리를 하기 위해서 사용하는게 worker라고 생각하시면 될 것 같습니다.
코드를 설명해주자면,
cluster.schedualingPolicy = cluster.SCHED__RR; <- 이 부분은 Round Robin 방식으로 스케쥴링하는 것입니다.
위에 if(cluster.isMaster == true)를 해주는 이유는 해당 코어가 마스터 클러스터로 동작해주기 위함입니다. 그래서 속도가 굉장히 빠르게 동작하게 되고 병렬 처리를 하게 됩니다.
cluster.fork() <- 이 부분은 하나의 워커가 발생해서 동작을 하게 됩니다. 만약 여러가지 일을 동시에 해주겠다 이러시면 fork()를 여러개 놓으시면 됩니다.
cluster.on() 이것은 이벤트 처리를 해주는 것입니다. 그래서 클러스터에 대해서 온라인이라는 사건이 발생하게 된다면 worker가 들어있는 함수를 호출하겠다라고 정의해준 것입니다.
결과
'IT-백엔드' 카테고리의 다른 글
node.js basic module2-Assert 모듈2 (0) | 2024.01.24 |
---|---|
node.js basic module3-Buffer 모듈2 (0) | 2024.01.24 |
node.js basic module5-Crypto Module (0) | 2024.01.24 |
node.js basic module6-DNS Module (0) | 2024.01.24 |
node.js basic module7-fs module (0) | 2024.01.24 |