Альтернативы многоадресной рассылке - PullRequest
1 голос
/ 25 сентября 2011

В настоящее время я разрабатываю сервер (с использованием Java), который должен отправлять довольно часто (каждые 10–30 секунд) несколько байтов нескольким клиентам (10–100).Сначала я думал об использовании многоадресных дейтаграмм UDP (java.net.MulticastSocket), но подумал, что это не является хорошим решением из-за плохой поддержки многоадресной рассылки на большинстве маршрутизаторов.

Так что мне интереснобыло бы неплохо, если бы я отправлял все данные напрямую на хосты через одноадресную рассылку или вы знаете что-нибудь более элегантное / с меньшим трафиком?

Ответы [ 3 ]

3 голосов
/ 25 сентября 2011

Есть много преимуществ в использовании JMS, но большинство из них используют TCP, и вы тоже можете. Несколько байтов каждые 10-30 секунд для нескольких сотен клиентов малы даже в сетях с низкой пропускной способностью.

Допустим, вы отправляете 100-байтовое сообщение 100 клиентам каждые 10 секунд, то есть 1000 байтов в секунду или 8 Кбит / с Даже сети 3G будут легко поддерживать эту пропускную способность. то есть вы могли бы сделать это с помощью смартфона. ;)

Самый простой подход может состоять в том, чтобы иметь tcp-соединение от каждого клиента, которому сервер отправляет сообщения обновления по мере необходимости.

2 голосов
/ 25 сентября 2011

Рассматривали ли вы использование очереди сообщений, такой как Active MQ ? У них есть приятная особенность: вы пишете сообщение один раз в очередь, и у вас может быть столько читателей, сколько вам нравится читать очередь.

0 голосов
/ 18 октября 2012

Вы также можете использовать основанный на сплетнях протокол многоадресной передачи на уровне приложения. Например, NeEM легко масштабируется до 100 пунктов назначения, обеспечивая интерфейс, аналогичный MulticastSocket, и использует только TCP / IP, что обеспечивает совместимость с менее чем оптимальными сетевыми настройками.

...