Двунаправленный обмен данными между клиентами и серверами Java - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь создать распределенное приложение на Java с несколькими серверами и несколькими менеджерами (мониторинг приложений и настройка серверов). Большая часть трафика между серверами и менеджерами будет запрашиваться менеджерами на серверах, но серверы должны иметь возможность уведомлять менеджеров, когда что-то происходит. Менеджеры не заботятся друг о друге, а серверы не заботятся друг о друге, но менеджеры должны управлять всеми запущенными серверами, а серверы должны управляться всеми запущенными менеджерами. Я не хочу, чтобы каждый запрос проходил через центральный объект.

Каков наилучший способ установить связь между ними?

О чем я думал:

  • RESTful API: однонаправленная связь, поэтому нам нужен опрос, который менее отзывчив и тратит много ресурсов.

  • Открытие сокета между каждой парой сервер / менеджер: мне кажется, это лучший способ, но я чувствую, что я бы заново изобрел колесо ...

  • Java RMI: выглядит хорошо, но для этого нужен центральный объект (rmiregistry). Кроме того, я застрял с Java, если я его использую, и, похоже, он более приспособлен для связи точка-точка.

  • JMS: То же самое, ему нужен центральный объект (JMS-провайдер), и это только Java ...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

JMS-брокер - только Java, но клиенты могут быть любыми.

Если вам не нужна центральная сущность, у вас может быть встроенный брокер или брокер, выделенный для каждого сервера.

Я бы использовал ActiveMQ, потому что он один из самых простых для запуска (быстро)

0 голосов
/ 28 июня 2011

Посмотрите на AMPQ / RabbitMQ

  1. RabbitMQ может быть сгруппирован - см. http://www.rabbitmq.com/clustering.html
  2. У него есть привязки для большинства языков программирования

а также очень быстрый, масштабируемый и стабильный

...