2011-03-22 4 views
1

네트워크상의 여러 장치에서 실행될 프로그램이 있습니다. 이러한 프로그램은 지정된 장치 (모든 장치가 아님)간에 서로간에 데이터를 전송해야합니다.선택한 클라이언트에게 메시지를 보낼 수있는 네트워크 서비스를 찾고 있습니다.

server = server.Server('192.168.1.10') 

server.identify('device1') 
server.send('device2', 'this will be pickled and sent to device2') 

그건 내가해야 할 일을위한 몇 가지 기본적인 예제 코드입니다. 물론, 그것은 또한 받아야 할 것입니다.

나는 누군가가 나를 MPI의 방향으로 가리키고있을 때 Twisted를 사용하여 내 자신의 단순한 메시지 전달 서버를 구축하고 있었다. 이전에는 MPI 프로토콜에 대해 본 적이 없으며 그 웹 사이트는 다소 모호한 예를 보여줍니다.

MPI는 좋은 접근 방법입니까? 더 나은 대안이 있습니까?

+0

XMLRPC로 간단한 것을 사용할 수없는 이유는 무엇입니까? –

+0

저는 XMLRPC를 사용한 적이 없습니다. 나는 그것을 살펴볼 것이다. 건배. – dave

답변

2

이미 이런 종류의 자료를 처리하는 몇 가지 오픈 소스 메시지 브로커가 있으며 사용할 준비가 된 전체 API가 제공됩니다. 파이썬 테야 클라이언트를 가지고

당신은 스스로를 만들 수도 있지만 바퀴를 다시 만드는 것과 같을 것입니다. (그리고 사이드 노트에 : 저는 기존 솔루션을보기 시작하기 전에 메시지 중개자를 반쯤 짓는 것을 실제로 깨달았습니다. 하나는 많은 일을한다).

+0

나는 RabbitMQ에 대해 꽤 많이 들었다. 나는 나중에 그걸 가지고 놀 것이다. 건배 – dave

1

ZeroMQ과 같은 것을 사용해보십시오. 푸시/풀, 게시/구독 등 가장 유용한 메시징 관용구를 지원합니다. 질문에서 어느 하나가 필요성을 100 % 분명히 나타내지는 않지만, 답변을 찾을 수있을 것입니다.

이들은 모두 user guide here이며, Python bindings은 잘 발달되고 지원됩니다. 일부 코드 샘플은 are here입니다.

+0

꽤 광범위한 가이드입니다. 나는 나중에 그것을 읽어야 할 것이다. 건배 – dave

+0

@phil : 그것을 건너 뛰십시오 - 구현하려는 정확한 구성표에 대해 눈을 뗄 수없는 멋진 다이어그램이 있습니다 –

+2

전체 네트워크를 완전히 제어하지 않으면 신뢰할 수없는 당사자 인 ZeroMQ를 사용하고 싶지 않을 수 있습니다 쉽게 부서지기 쉽다. –

2

MPI는 클러스터에서 여러 대의 컴퓨터에 긴밀하게 연결된 프로그램을 실행하기위한 통신을 실제로 잘 수행합니다. 가끔씩 만 상호 작용하는 매우 느슨하게 결합 된 프로그램을 실행하고 있거나 LAN 주변에 산재 해있는 것처럼 클러스터 내에있는 시스템보다 분산되어있는 경우 MPI는 아마도 사용자가 원하는 것이 아닙니다.

0

다른 코드 간의 통신을 만들기 위해 MPI 기능을 구현할 수 있습니다. 이 경우 서버 프로그램은 서로 다른 ID를 가진 공개 "MPI 포트"여야합니다. 클라이언트는이 포트를 찾아 연결을 시도해야합니다. 서버 만 각 통신을 허용 할 수 있습니다. 통신이 안정되면 코드가 코드를 교환 할 수 있습니다.

다른 가능성은 다중 명령어 MPI 옵션에서 다른 프로그램을 실행하는 것입니다. 이 경우 모든 프로그램이 동시에 실행되므로 포트 커뮤니케이터를 만들 필요가 없습니다. 실행 된 후에는 선택한 프로그램 그룹간에 특정 커뮤니케이터를 만들 수 있습니다.

어떤 종류의 메소드가 필요한지 말해 주시고 기능을 구현하기 위해 C 코드를 제공 할 수 있습니다.

관련 문제