Re: Кластеризация экспортированного сервиса.
От: Лобанов Игорь  
Дата: 05.03.09 11:04
Оценка:
Здравствуйте, Сеня Белдыев, Вы писали:

СБ>Всем бодрой ночи.


СБ>Хотелось бы выслушать мнение каким образом реализовать клиент серверную систему в локальной сетке на Яве со следующим требованиями.

СБ>Клиенты группируются и имеют общий ресурс (мапа с примитивами)
СБ>Клиенты шлют на сервер данные около 200 байт в секунду.
СБ>Сервер шлёт на клиенты одинаковую структуру каждую секунду. 4кб максимум
СБ>Минимум задержек.
СБ>Кластеризация серверной части (основной нод и запасной) с функцией fail-over на клиенте то есть по таймауту или резету соединения повторная попытка осуществляется уже к другому ноду.

СБ>Хотелось бы иметь интерфэйс и экспортировать его, как например это есть в Sprint Remoting но с функционалом push-callback


СБ>С уважением.


Вариант №1 "lightweight" с Jini поверх обычного Java RMI:
Запускается несколько экземпляров серверов. В сети присутствует экземпляр lookup service, в котором хранятся RMI-заглушки на экспортированные интерфейсы серверов. Клиенты находят lookup service через multicast discovery и запрашивают ссылку на работающий сервер. В случае ошибки коммуникации с основным сервером, клиент снова обращается к lookup service и получает ссылку на вторичный севрер. Сам lookup service также может дублироваться, так что SPOF не появляется. С callback к клиентам со стороны серверов тоже никаких проблем нет, так как всё peer-to-peer.

Вариант №2 "enterprise" c JMX:
Берётся реализация JMX, поддерживающая резервирование. Например, ActiveMQ. На клиентах прописываются параметры подключения к основному и резервному ActiveMQ. Для образной связи к клиентам можно тоже использовать JMX, например, временные очереди сообщений.

В этом варианте можно попробовать спрятать детали работы с JMX от клиентов с помощью Spring Integration, но это уже опционально.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.