> 웹 프론트엔드 > JS 튜토리얼 > Node.js 이벤트 중심 model_node.js를 빠르게 마스터하세요.

Node.js 이벤트 중심 model_node.js를 빠르게 마스터하세요.

WBOY
풀어 주다: 2016-05-16 15:09:57
원래의
1058명이 탐색했습니다.

1. 전통적인 스레드 네트워크 모델

Node.js 이벤트 중심 모델을 이해하기 전에 먼저 기존 스레드 네트워크 모델을 이해합니다. 요청이 웹 서버(IIS, Apache)에 들어간 후 스레드 풀에 스레드가 할당되어 요청 처리가 완료됩니다. 요청 처리가 완료되고 응답이 발행되며 완료 후 스레드 풀이 재활용될 때까지 선형 및 동기적으로 수행됩니다.

이로 인해 다음과 같은 문제가 발생합니다.

1. 스레드 풀의 스레드 수 제한으로 인해 빈번한 요청이 대기하게 되며 심한 경우 서버가 중단될 수도 있습니다

2. 높은 동시성을 위해 더티 데이터가 나타나는 것을 방지하기 위해 잠금이 사용됩니다. 일부 I/O 트랜잭션은 시간이 오래 걸릴 수 있으며 이로 인해 일부 스레드가 대기하게 되어 비효율적입니다.

2. 이벤트 중심 모델

1. Node.js에는 이벤트 큐가 있습니다. 각 작업은 이벤트 큐에 들어가고, 결과를 처리하기 위해 콜백 함수가 남습니다. (개인적으로는 RunLoop과 약간 비슷하다고 생각됩니다.) ios)는 콜백 함수가 더 이상 존재하지 않을 때까지 작업의 이벤트 대기열 작업을 처리합니다.

2. Non-Blocking의 경우 콜백과 함께 함수로 이벤트 큐에 들어가고, 이벤트 루프 스레드에서 추출되어 실행됩니다.

3. 실행 중(파일 읽기, 데이터베이스 쿼리, 소켓 요청, 원격 서비스 액세스 등) I/O 차단이 발생하면 이벤트 루프 스레드는 결과 대기를 멈추지 않지만 대기열을 계속 실행합니다. . 다음 작업은 이벤트 루프 스레드에서 실행되지 않습니다. 함수가 실행되면 Node.js는 콜백 함수를 이벤트 큐에 배치하고 함수의 순서는 함수가 얼마나 빨리 완료되는지에 따라 결정됩니다.

4. 1에서 언급한 것처럼 I/O 차단이 발생하면 루프 스레드는 결과를 기다리지 않고 대신 대기열의 다음 작업을 실행합니다.

Node.js는 이벤트 콜백을 사용하여 I/O 차단을 기다리지 않고 백그라운드에서 스레드 풀을 구현합니다. I/O 차단 작업이 발생하면 스레드 풀에서 스레드를 가져와 함수와 콜백을 넣습니다. 거기에서 실행되면 차단된 스레드에서 실행되는 콜백 함수는 여전히 이벤트 큐에 이벤트를 추가할 수 있습니다.

위 내용은 모두 Node.js 이벤트 중심 모델에 관한 것입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿