2011-09-25 1 views
1

저는 현재 매우 자주 (10-30 초마다) 몇 바이트를 여러 클라이언트 (10-100)로 보내야하는 서버 (Java 사용)를 개발 중입니다. 처음에는 UDP 멀티 캐스트 데이터 그램 (java.net.MulticastSocket)을 사용하는 것을 생각했지만, 대부분의 라우터에서 멀티 캐스트에 대한 나쁜 지원 때문에 좋은 해결책이 아닌 것으로 생각했습니다.멀티 캐스트의 대안

유니 캐스트를 통해 모든 데이터를 호스트에 직접 보내거나 소통량이 적 으면 좋겠다고 생각하십니까?

+1

2011 년입니다.이 최적화에 대해 생각해 보면 트래픽에 지출하는 것보다 많은 비용이들 것입니다. –

+0

'잘못된 지원'? 멀티 캐스트는 지난 20 년 동안 대부분의 라우터에서 지원되지만 구성해야합니다. 하지만 Jochen은 20 ~ 30 초마다 100 ~ 몇 바이트의 클라이언트가 최적화를 시도하는 것에 대해 걱정할 필요가 없다고 동의합니다. 실시간으로 1 만 명의 고객에게 영화를 배포한다면 그렇습니다. 이건 아니야. – EJP

답변

3

JMS를 사용할 때 많은 이점이 있지만 대부분이 TCP를 사용하므로 사용자도 마찬가지입니다. 10 ~ 30 초에서 수백 개의 클라이언트까지 몇 바이트가 저 대역폭 네트워크에서도 작습니다.

10 초마다 100 개의 클라이언트에 100 바이트 메시지를 보내면 1000 바이트/초 또는 8Kbps/초입니다. 3G 네트워크조차도이 대역폭을 쉽게 지원할 것입니다. 즉 스마트 폰으로이 작업을 수행 할 수 있습니다. ;)

가장 간단한 방법은 서버가 필요에 따라 업데이트 메시지를 보내는 각 클라이언트에서 tcp 연결을 만드는 것입니다.

2

Active MQ과 같은 메시지 대기열을 사용 해본 적이 있습니까? 이것들은 여러분이 한 번 큐에 메시지를 쓰고 큐를 읽는 것처럼 많은 독자를 가질 수 있다는 좋은 특징이 있습니다.

+0

+1 : 멀티 캐스트와 같은 기능을 원하면 주제가 대기열보다 더 좋습니다. –

0

gossip-based 응용 프로그램 수준 멀티 캐스트 프로토콜을 사용할 수도 있습니다. 예를 들어, NeEM은 MulticastSocket과 유사한 인터페이스를 제공하고 TCP/IP 만 사용하므로 최적의 네트워크 설정과 호환되지 않으므로 쉽게 100 개의 대상으로 확장 할 수 있습니다.