2014-06-12 5 views
0

안녕이 멍청한 놈 질문의 약간 될 수도 있지만 나는 다음과 같은 사용 사례에 대한 적절한 솔루션을 찾을 수 없습니다 : 우리가 서비스 x 개의 VM의 분산이분산 이벤트 처리

백엔드에를 각각은 동일한 서비스를 제공합니다 (분산 복제). 이러한 서비스는 모두 분산 된 이벤트 버스 (예 : Hazelcast)에서 수신 대기합니다.

이벤트가 도착하면 GetDataA는 EventBus 인프라 스트럭처에서 각 백엔드 서비스로 이벤트를 한 번에 하나씩 보냅니다. 서비스가 이벤트 처리를 결정하면 EventBus를 통해 이벤트 게시자에게 데이터를 반환합니다.

서비스가 이벤트를 처리하려고 결정하면

는 다음 EventBus는 (서비스) 다른 청취자에게 해당 이벤트 전송을 중지하고, 다음 이벤트 라우팅을 계속해야한다 (즉, 그것이 있어야 비 차단) 그래서

이 솔루션을 사용하려면 비동기 적으로 실행되는 일종의 요청/응답 분산 이벤트 아키텍처가 필요합니다.

이 공간에서 확장 가능한 솔루션을 아는 사람이 있습니까? 저는 Hazelcast를 살펴 보았습니다.하지만 이벤트 메커니즘은 모든 청취자가 이벤트를 가져올 것임을 의미합니다. Executor 서비스를 살펴 보았지만 다른 노드에 코드를 전송하는 반면 다른 단일 노드가 요청을 처리하기를 원합니다.

답변

3

Hazelcast IExecutorService로이 작업을 수행 할 수 있습니다.

  • 이 모든 구성원에게 보낼 멤버의 하위 집합에 보내 당신의 임무는 모든 회원에게
    • 보내

      를 전송하는 것입니다 방법에 대한 세밀한 제어가있다 (상관하지 않는 한)
    • 특정 구성원에게 보내기
    • 특정 파티션을 소유 한 구성원에게 보내기.

    미래를 사용할 수있는 옵션도 있으며 차단하고 싶지 않다면 미래를 비동기식 콜백 메커니즘과 결합 할 수 있습니다. 그리고 집행자는 노드에 코드를 전송하지 않습니다. 코드 (바이트 코드)가 이미 있습니다. 그래서 당신은 단지 데이터를 보내고 있습니다.

    다른 옵션은 모든 사람에게 알리지 않고 특정 회원에게만 알리려면 지점 간 솔루션을 만드는 것입니다. 이것은 IQueue를 사용하여 수행 할 수 있습니다.