Я пытаюсь создать распределенное приложение на Java с несколькими серверами и несколькими менеджерами (мониторинг приложений и настройка серверов). Большая часть трафика между серверами и менеджерами будет запрашиваться менеджерами на серверах, но серверы должны иметь возможность уведомлять менеджеров, когда что-то происходит. Менеджеры не заботятся друг о друге, а серверы не заботятся друг о друге, но менеджеры должны управлять всеми запущенными серверами, а серверы должны управляться всеми запущенными менеджерами.
Я не хочу, чтобы каждый запрос проходил через центральный объект.
Каков наилучший способ установить связь между ними?
О чем я думал:
RESTful API: однонаправленная связь, поэтому нам нужен опрос, который менее отзывчив и тратит много ресурсов.
Открытие сокета между каждой парой сервер / менеджер: мне кажется, это лучший способ, но я чувствую, что я бы заново изобрел колесо ...
Java RMI: выглядит хорошо, но для этого нужен центральный объект (rmiregistry). Кроме того, я застрял с Java, если я его использую, и, похоже, он более приспособлен для связи точка-точка.
JMS: То же самое, ему нужен центральный объект (JMS-провайдер), и это только Java ...
Спасибо!