2013-07-06 2 views
-1

내 웹 서버는 3-4 개의 웹 서비스를 호출해야합니다. Node.js에서 구현할 것이지만, 콜백 코드의 큰 팬이 아니기 때문에 gevent를 고려하고있었습니다. 녹색 스레드는 OS 스레드와 동작이 비슷하며 각 스레드는 다음 웹 서버를 호출하기 전에 하나의 웹 서비스에서 응답을 기다리는 것으로 이해합니다. 이 올바른지?여러 웹 서비스 호출 - Node.js와 녹색 스레드

예를 들어 웹 서비스 A, B, C, D를 호출 할 때 각각 1 초가 걸리면 노드는 병렬 호출로 인해 1 초에 4를 모두 마쳤지 만 gevent는 4 몇 초가 걸립니다.

답변

0

gevent에 대한 설명서에는 여러 작업이 동시에 실행될 수 있다고 명시되어 있습니다 (http://www.gevent.org/intro.html#example). 후드 아래에서 LibUV을 사용하고 유사한 메인 이벤트 펌프가 nodejs으로되어 있기 때문에 두 방법 모두 매우 유사하지만 다른 프로그래밍 환경과 구문으로 실행됩니다. 당신이 선호하는 것을 선택하십시오.

+0

답장을 보내 주셔서 감사합니다. 다른 녹색 스레드가 웹 서비스를 동시에 호출 할 수있는 방법을 이해합니다 (VM에 의한 스레드 스케줄링). 단일 녹색 스레드가 여러 호출을 병렬로 실행할 수있는 방법을 설명해 주시겠습니까? – tldr

+0

나는 '그린 쓰레드'라는 용어가 부적절하다고 여기고 있습니다. 계속되는 에뮬레이션이 없습니다. 이 프로세스는 운영 체제를 사용하므로 Windows에 익숙하므로 간단한 시스템 인 IOCP (입력/출력 완료 포트)를 설명합니다. 응용 프로그램은 OS에 자원을 검색하고 완료되면 메시지를 보냅니다. 메인 이벤트 펌프는 응용 프로그램이 제공하는 작업을 계속 실행하고 OS 메시지를 알게되면 처리 할 이벤트 펌프에 완료를 추가합니다. 따라서 여러 자원이 스케줄되며 하나의 스레드가 완료 이벤트를 처리 할 수 ​​있습니다. :-) –

+1

gevent는 실제로 libuv가 아닌 libev를 사용합니다. 라이브러리는 거의 똑같은 일을합니다. libuv는 Windows에서 더 잘 지원합니다. – Anorov