반응형
<특징>
- 비동기식 이벤트 처리 : 비동기식으로 동시에 처리가 된다.
- 그래서 multi thread인가 찾아보니 node 내부적으로 여러 thread를 가지고 있지만 javascript 자체가 싱글스레드 기반이기 때문에 일반적으로 node도 single thread라고 한다고 함
- 즉 이벤트 IO들을 비동기로 처리하여 빠르게 처리하지만 Single thread 기반으로 함으로써 Multi thread가 가지는 문제로부터 자유롭다고 할 수 있음 - 코드 처리가 상당히 빠르다.
- 데이터를 주고 받을 때 버퍼링 방식을 사용하지 않기 때문에 거치는 곳이 없어 더 빠르게 처리 가능하다.
- 비동기 이벤트 처리 원리 :
- node.js의 비동기 처리는 이벤트 방식으로 풀어낸다. 클라이언트 리퀘스트를 비동기로 처리하기 위해 이벤트로 처리하며 서버 내부에서 메시지 형태로 전달된다. 이 메시지는 Event Loop가 처리하고 이 Loop가 처리하는 동안 제어권은 다음 요청으로 넘어가게 되고 기존 요청의 처리가 완료 되면 Callback을 호출하여 처리 완료를 호출측에 알려준다.
- 이 때 내부적으로 여러 Thread를 사용하는데 Nob-blocking IO 또는 내부 처리를 위해서만 사용되지 요청 처리들 자체에 대해 thread를 구분하여 사용하지 않기 때문에 Single thread라고 사실상 불리는 거임
즉 1개의 요청 처리 = 1개의 Thread - 이러한 원리이기 때문에 하나의 처리가 오래걸리게 된다면 서버 전체에 영향을 주게 된다.
- 각각의 처리 작업이 짧으면 node의 장점을 극대화 할 수 있지만 처리 작업이 CPU를 많이 잡아먹는 작업이 있다면 node의 성능은 뚝 떨어지게 된다.
반응형
'서버' 카테고리의 다른 글
Webpack부터 Kubernetes까지 (1) - Stream과 Node (0) | 2021.03.11 |
---|---|
Node Express Module (0) | 2021.03.09 |
[DRF] REST & REST API (0) | 2020.01.19 |
Web Server 그리고 WAS (0) | 2019.11.18 |
쿠키(Cookie)&세션(Session)&캐시(Cashe) (0) | 2019.11.17 |