메인 스레드를 차단하지 않고 동기식 작업을 처리하는 방법
동기식 작업이 실행되는 동안 이벤트 루프는 어떤 작업도 수행할 수 없습니다.
방법1. 더 많은 노드(리소스) 투입하기
Node.js 의 기능 중 하나는 클러스터를 통한 손쉬운 수평 확장을 지원한다.
여러 서버를 병렬로 실행하여서 한 서버가 사용중일 경우 다른 서버가 들어오는 요청을 처리할 수 있도록 한다.
구현은 간단하지만, 이벤트 루프를 차단하지 않고 단순히 더 추가할 뿐이다.
방법2. 비동기적으로 수행하도록 리팩터링 하기
비동기 작업은 일반적으로 CPU에 종속되지 않는다. ex) 파일을 읽는데 10ms 가 걸리는 경우 - 1ms 미만은 CPU 대기 시간이고 나머지는 디스크 대기 시간일 경우가 많다.
동기 실행 블록 사이에 간격을 추가하여 알고리즘이 실행되는 동안 이벤트 루프가 실행될 수 있도록 하는 것
1) 프로미스화 하기 Promisfy
이벤트 루프로 넘어갈 코드 부분을 Promise로 분리하는 것이다.
동기화 코드를 Promise로 전환한다고 해서 코드가 비동기화되지는 않는다. 코드가 비동기적이 되려면 이벤트 루프에서 호출되어야 한다. setImmediate는 콜백을 받아 수행한다.
참고
728x90
반응형
'개발공부 > NodeJS' 카테고리의 다른 글
NodeJS20에서의 변경 사항 (0) | 2024.01.24 |
---|---|
[공유/번역] Concise 간결한 Typescript Book (0) | 2023.08.05 |
Nodejs 싱글스레드 (0) | 2023.06.07 |
마이크로서비스와 Nodejs (0) | 2023.06.06 |
Nodejs 환경에서 Artillery로 부하테스트 하기 (0) | 2023.05.29 |
댓글