2013-10-31 2 views
0

확장 성, 보안 또는 다른 임의의 문제로 인해 다른 서버간에 응용 프로그램의 논리를 배포하는 것은 흔한 일입니다. 이러한 시나리오에서는 별도의 모듈이나 응용 프로그램간에 안정적인 통신 채널을 확보하는 것이 중요합니다.다른 서버에서 실행중인 Node.js 응용 프로그램 연결

실제적인 경우는 다음과 같이 수 :

  1. (서버 # 1) 당신은 DB 테이블을 처리해야 (테이블 항목의 형태로) 작업을 채우고 있습니다.
  2. (서버 # 2) 귀하는 이러한 작업을 하나씩 가져 와서 특정 방식으로 처리합니다.
  3. (서버 # 3- #n) 중재자로부터 작업을 받고 여러 결과를 다시 돌려주는 작업자 응용 프로그램이 여러 개 있습니다.

이제 모든 것이 Node.js로 프로그래밍되었다고 상상해보십시오. 더 많은 리소스가 필요할 때 작업자 서버를 생성하고 처리 부하가 적을 때 종료되도록 할 수 있습니다. 작업자 노드가 생성되면 작업을 수신 할 준비가되었음을 알리기 위해 중재자에게 다시 연결해야합니다.

작업자 노드를 중재자와 통신하는 데 사용할 수있는 옵션은 무엇입니까? 중재자가 새 작업자 노드가 연결되어 있고 둘 사이의 데이터가 언제 흐름을 시작할 수 있는지 감지 할 수 있습니다. 또는 다른 말로하면, 두 개의 원격 Node.js 응용 프로그램간에 안정적인 상태 - 전체 채널 통신을 만드는 방법은 무엇입니까?

답변

1

메시징 기술의 전쟁으로 변해서는 안되는 한, RabbitMQ가 또 다른 옵션입니다. 그들은 worker queuesremote procedure calls (rpc)에 대한 빠른 자습서를 가지고 있습니다.

이 튜토리얼은 파이썬이지만 그래도 쉽게 따라 할 수 있습니다 (인터넷 검색은 github에서 노드 번역을 찾을 것입니다).

상황에 따라 토끼는 특정 작업자에게 메시지를 보낼 수 있지만 귀하가 직접 스케일링 논리를 작성해야한다고 생각합니다.

+0

이 문제를 해결할 수있는 다양한 기술을 알고 있으면 좋지만,이 문제를 더 잘 해결할 수있는 패러다임을 설명하는 것이 좋습니다. 예를 들어 publish-subscribe 모델이이를 위해 작동합니까, 아니면 다른 아키텍처를 사용해야합니까? – UndeadKernel

+0

상황에 따라 작업자 대기열 또는 rpc 패러다임이 필요할 수 있습니다. pub/sub 방식에서는 단일 이벤트에 여러 명의 '근로자'가 가입 할 수 있습니다. 이는 각 근로자가 행사에 참여한다는 의미입니다. 이것은 작업자가 다른 작업을 수행하는 상황에서 좋지만 모든 작업자가 동일한 작업을 수행하는 것처럼 소리가 나고 확장 성을 위해 복제됩니다. RabbitMQ 사이트의 다양한 예제를 통해 각 유스 케이스가 무엇인지에 대해 설명하려고 시도합니다. –

관련 문제