2013-08-21 1 views
0

노드에서 : 노드가 다중 스레드를 사용하지 않는 경우 한 번에 하나의 함수 만 실행할 수 있습니다. 많은 요청이 웹 서버에 동시에 도착할 때 어떻게 작동합니까?많은 요청이 웹 서버에 동시에 도착할 때 어떻게 작동합니까? NODEJS

스레드 및 프로세스에 대한 파노라마를 지울 수 있습니까 ??

+0

한 번에 하나씩입니다. about 페이지 읽기 : http://nodejs.org/about/ – WiredPrairie

답변

0

이론적으로 많은 요청이 같은 초에 발생하거나 각 요청이 하드 수학처럼 시간이 걸리는 작업을 수행해야하는 경우 서버가 다운 될 수 있습니다. 라인의 "끝"에있는 사람들 (늦은 밀리 세컨드)에 응답하지 않거나 노드가 라인의 "앞"에서 이러한 요청을 제공하기 위해해야 ​​할 일들을 끝내지 않아도됩니다.

일반적으로 Node 전략에 따르면 데이터베이스를 쿼리하는 것과 같은 긴 작업을 수행 할 경우 프로그램 실행을 기다릴 필요가 없지만 다른 함수로 "콜백 (call back)"해야합니다 결국 데이터베이스 쿼리가 완료됩니다.

나는 이것에 대해 another SO answer에 대해 더 자세히 이야기합니다. 당신은 당신이 말하고있는 것의 다른 예를 위해 구글 "node.js는 암"이 될 수 있습니다.

그러나이 전략의 보급은 노드와 다른 언어/프레임 워크 간의 주요 차이점 중 하나입니다. 바로 자바 스크립트가 어떻게 처리되는지입니다.

실제로, 실제로는 여러 가지 일이 발생합니다.

먼저 모든 프로덕션 노드 응용 프로그램은 실제로 클러스터 또는로드 균형 조정을 제공하는 일종의 솔루션으로 실행되어야합니다. 앱의 여러 프로세스가 작동하기 때문에 솔루션에서 한 번에 여러 가지 작업을 수행 할 수 있습니다.

둘째, 일반적으로 Node.js는 모든 것을 기다리지 않기 때문에 실제로 잘 유지됩니다. 그것은 당신의 서버를 바쁘게하는 대신, 뭔가를 기다리는 제트기를 냉각시키는 대신에 바쁘게 만듭니다.

셋째, 서버에서 수행하는 작업에주의해야합니다. 어떤 일이 너무 오래 걸리면 (데이터베이스의 모든 레코드를 수정하는 것) 일종의 작업자 대기열 시스템을 통해 백그라운드에서 수행하는 것이 현명 할 것입니다. "이봐,이 모든 사람의 사용자 이름을 모든 레코드에서 업데이트해야합니다. 데이터베이스에서 "다른 Node.js 프로세스가 작업자가 될 수 있습니다.

관련 문제