2013-11-04 2 views
0

나는 매우 node.js에 익숙하다. 그리고 나는 그것에 의해 사용되는 비동기 이벤트 루프 기반 실행 패턴과 실시간 웹 애플리케이션에서 얻을 수있는 결과에 깊은 인상을 받았다. 나는 node.js이 단일 스레드이기 때문에 멀티 코어 CPU에서 사용할 수있는 병렬 처리를 활용할 수있는 유일한 방법은 모든 코어에 대해 하나의 새로운 인스턴스를 생성하는 것입니다 (node.js에 대해 Cluster에 의해 사용 된 접근법). 진정한 평행법. 그러나 이제는 다른 질문에 흥미가 있습니다 :node.js 앱에 굶주림 방지하기

사용 가능한 각 CPU 코어에서 하나의 인스턴스를 실행한다고 가정하면 어떻게 응용 프로그램이 사용하는 배타적 잠금이 배고파를 일으키지 않는지 효과적으로 확인할 수 있습니까? 이 지침에 따르는 것이 무엇인지, 모범 사례가 있다면, 그리고이 문제에 대한 다른 도움은 매우 높이 평가됩니다. 미리 감사드립니다.

+1

모든 I/O 비동기 (값 비싼 부분)를 배치하여 병렬 처리를 구현합니다. * 모든 것은 코드를 제외하고는 병렬로 실행됩니다. http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ – bryanmac

답변

1

귀하의 진술에 동의합니다. 그러나 병렬 처리가 아닌 병렬 처리가 노드 개발자의 목표였습니다. 진정한 병렬 처리는 Apache 서버가 달성하는 것이며 우리는 그 문제를 알고 있습니다 (멀티 스레딩). 멀티 코어 CPU를 활용할 수 있도록 클러스터가 추가되었습니다.

질문에 답변하려면 노드가 라운드 로빈 스케줄러를 사용하십시오 (이 commit 참조). 들어오는 요청을 각 작업자에게 하나씩 분배합니다. 잠금에 관해서는, 노동자들이 평행하게 달리면 최선을 다할 것입니다. 서버에서 각 작업자는 다른 작업자와 독립적으로 작동합니다. 잠금 장치가 필요한 경우 유휴 상태가 아닌지 확인하십시오.

관련 문제