Node.js & MongoDB

Node.js 이벤트 모델 이해

Node.js의 블로킹 I/O

블로킹 I/O는 현재 스레드의 수행을 중단시키고 지속적으로 응답을 기다린다.

블로킹 I/O의 종류는 다음과 같다.

  • 파일 읽기
  • 데이터베이스 질의
  • 소켓 요청
  • 원격 서비스 접속

Node.js는 블로킹 I/O로 인한 지연을 피하고자 이벤트 콜백을 사용한다. Node.js는 백그라운드에서 스레드 풀을 구현한다. 이벤트 큐에서 이벤트나 블록 I/O 이벤트가 얻어지면 Node.js는 메인 이벤트 루프 스레드가 아닌, 스레드 풀에서 스레드 한 개를 꺼내어 해당 함수를 수행한다. 이런 구조로 인해 이벤트 큐 내에 모든 잔여 이벤트들의 블로킹 I/O를 방지할 수 있다.