2012-11-13 3 views
1

노드 네트워크가 있습니다. 노드는 서로 메시지를 보낼 수 있어야합니다. 메시지는 노드에서 노드로 만 전송됩니다 (즉, 브로드 캐스트 없음). 노드는 메시지를 보내야하는 노드의 주소를 알고 있습니다. 노드는 수신자를 반드시 알 필요는 없습니다. 일부 노드 (주 노드라고 함)는 아주 많은 수의 노드 (> 100k)와 메시지를주고받을 수 있습니다.Java에서 신뢰할 수없는 네트워크에 사용할 메시지 서비스

한 노드에서 다른 노드로 영구 메시지를 보내려합니다. 신뢰할 수없는 네트워크에서도 비동기 적으로 발생하기를 원합니다. 나는. 나는 메시지 서비스가 나를 위해 재전송, 승인 등을 처리하기를 원한다.

http://activemq.apache.org/networks-of-brokers.html에서 설명한대로 중개자의 정적 네트워크 (내 작은 설정에서는 2 노드 만)로 ActiveMQ를 사용해 보았습니다. 이것은 잘 작동하지만, 100k 노드가 하나의 단일 노드 (메인이라고 함)와 연결되어 100k 브로커가 실행되어 모든 관련 노드로 메시지를 전달할 수 있어야합니다. 모든 노드는 산발적으로 전송 될 수 있으며 주 노드는 다른 노드를 여러 번 (> 10k) 보내야 할 수도 있습니다 (주 : 모든 브로드 캐스트는 서로 다른 메시지를 수신하므로 아무런 브로드 캐스트가 없습니다).

내가 사용한 상상의 하나는이 그림 http://i154.photobucket.com/albums/s260/sheep_p/communication.png에서 볼 수 있습니다. 여기서 실린더는 대기열을 나타냅니다. 모든 노드에는 인바운드 및 아웃 바운드 큐가 있습니다.

이 기술을 구현하는 데 사용할 수있는 기술은 무엇이며 필요한 기술 구성은 무엇입니까?

기술은 Java와 함께 작동해야하며 무료 개인 또는 학술 라이센스가 있어야합니다.

+1

그래서 신뢰할 수없는 네트워크를 통해 안정적인 통신을 구축하고 높은 확장 성을 원하십니까? 네티티를 확인해 봤어? –

+0

@ nikolay-kuznetsov 코멘트를 주셔서 감사합니다. Netty를 확실히 볼 것입니다. 귀하의 질문에 대답하기 위해 : 아니, 전에 그것을 고려하지 않았습니다. – abondoa

답변

1

나는이 작업을 수행 할 수있는 기본 기술을 처음 접한 적이 없습니다.

해결 방법 중 하나는 일러스트레이션 에서처럼 대기열 (ActiveMQ)을 사용하고 Netty.io 또는 Jersey와 같은 서비스를 사용하여 API를 만들 수 있습니다 (Netty에 대한 경험이 없지만 Jersey 비슷한 용도로). 약간의 코딩 작업이 필요하지만,별로 좋지 않은가? :)

관련 문제