2014-02-11 2 views
0

나는 매우 일반적인 질문을 가지고 있으며 올바른 방향으로 일반적인 지점을 찾고 있습니다. 여러 대의 컴퓨터에서 실행될 수 있지만 각 프로그램이 다른 컴퓨터와 작동하도록하는 프로그램을 만들고 싶다면 어떻게해야합니까?클라우드를 통한 애플리케이션 간 통신?

Ex. 시카고 일리노이 기계 A는

기계 B 휴스턴 TX

기계 C 그들은 모두가 얻을 수있는 팀으로 그것을 하나 개의 기능 만 작업을 제공

CA

샌디에고에서 실행에서 실행되는

를 실행 빨리 끝냈다.

머신 A가 켜지고 사용할 준비가되었지만 머신 B와 C가 준비되었는지 확인해야합니다. 모든 기계가 켜지고 서로 점검하면 시작됩니다. 그들 모두가 작업을 선택하고 완료하는 몇 가지 유형의 대기열이 있습니다. 거기에 그들은 다른 컴퓨터/스레드가 이미 작업하고있는 일을하지 말아야 만합니다.

팀 간 페어링을 할 때 컴퓨터 간 통신을 다루지 않으므로 어디서부터 시작해야할지 모릅니다. 나는 그들이 모두 체크인 할 수있는 클라우드 데이터베이스를 가지고 있다고 생각하고 있었고 어떤 머신이 어떤 일을하고 있는지에 대한 정보를 유지하고 있지만, 매우 까다 롭습니다. 더 좋은 방법이있을 것이라고 확신합니다.

답변

0

여기 두 가지가 필요합니다. 당신은 펍/서브 또는 주제 (http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)를 모두 정기적으로 체크하고 싶습니다 ... 누군가가 매 x 분/초를 체크하지 않으면 그들은 일을 멈 춥니 다 (당신이 멈추고 싶어한다고 가정 할 때, 그 요구 사항을 확인해야 함). 간단한 메시지 대기열 (http://en.wikipedia.org/wiki/Message_queue)을 사용하여 작업을 중단 할 수도 있습니다.

작업을 시작하기 전에 모두 실제로 실행해야하는지 다시 확인합니다. 나는 그들을 지리적으로 분리하지 않을 것이다. 파이프 라인의 단계에 불과하다면 대기열을 여러 개 만들면 작업이 부족할 때마다 잠들 수 있습니다. 이것이 메시지 기반 아키텍처의 장점입니다. 서로 잠재적으로 지연되는 프로세스를 분리합니다. 고도로 의존적 인 작업을 함께 배치하십시오.