2010-08-05 2 views
1

현재 다양한 이벤트를 감지하기 위해 분산 컴퓨팅을 사용하는 소프트웨어 개발에 참여하고 있습니다.Boost :: 네트워크를 통한 캡슐화

현재 접근 방식은입니다. 서로 다른 (실제) 컴퓨터에서 12 개의 스레드가 동시에 실행되고 있습니다. 각 이벤트에는 번호가 지정됩니다. 모든 스레드는 감지 된 이벤트를 다른 이벤트로 브로드 캐스팅하고 들어오는 스트림에서 관련 이벤트를 필터링합니다.

매우 심하게 느껴지므로 유지 관리가 어려우며 시스템을 업그레이드 할 때 성능 문제가 발생할 수 있으므로 매우 좋지 않습니다.

그래서이 IPC를 처리하기위한 유연하고 우아한 방법을 찾고 있는데, Boost :: Signals가 좋은 후보라고 생각합니다. 하지만 결코 사용하지 않았고 네트워크 통신을위한 캡슐화를 제공 할 수 있는지 여부를 알고 싶습니다.

답변

1

OpenMPI 이외의 OpenMPI를 수행 할 해결책이 없으므로 먼저 메시지 컨테이너로 Google's Protocol Buffer을 사용합니다. 이를 사용하여 source, dest, type, id 등의 항목으로 추상 기본 메시지를 작성할 수 있습니다. 그런 다음 Boost ASIO을 사용하여 네트워크 전체 또는 로컬 메시지의 명명 된 PIPE/루프백을 통해 배포합니다. 아마도 각 물리적 컴퓨터에서 전용 프로세스가 배포 용으로 실행될 수 있습니다. 각 스레드는 관심있는 메시지 유형과 명명 된 파이프가 호출되는 대상을 등록합니다. 이 프로세스는 다른 모든 서비스의 IP를 알 수 있습니다.

0

네트워크를 통해 IPC가 필요한 경우 boost :: signals은 적어도 자체적으로 전체적으로는 도움이되지 않습니다.

Open MPI을 사용해보세요.

+0

답변 해 주셔서 감사합니다. 아직 Open MPI는 제 문제 때문에 상당히 큰 것처럼 보입니다. 아마 내 질문을 넓힐 수 있습니다 : 다른 네트워크 프로토콜을 통해 스레드 통신을 래핑하는 (오픈 소스) 일반 라이브러리를 알고 있습니까? – Nielk

+0

아니요,하지만 다른 제안으로 다른 답을 추가하겠습니다. – Gianni

관련 문제