Приложения Java, реплицирующие состояние

У меня есть одно и то же приложение на стороне сервера, работающее на нескольких машинах.

Я хотел бы предоставить способ вносить изменения во все приложения. Меня больше интересуют изменения состояния/свойства самих объектов, а не столько репликация файлов и т.д.

Итак, я представляю себе консоль администратора, в которой я бы изменил какое-то свойство, и это изменение повлияло бы на состояние каждого приложения.

В настоящее время я изучаю JGroups, набор инструментов для надежной многоадресной связи. В этом случае каждое приложение будет прослушивать одну и ту же группу многоадресной рассылки, а консоль администратора будет отправлять изменения в группу.

Есть ли другие доступные решения/методы?


person Steve    schedule 25.02.2011    source источник


Ответы (4)


Существует множество методов, corba, rmi и т. д. Однако, если вам нужна полностью распределенная система без центрального сервера, я бы лично рекомендовал JGroups.

Если у вас есть центральный сервер, вы можете либо

  • Позвольте серверу передать изменения всем клиентам. Сервер должен знать обо всех клиентах либо напрямую, либо путем регистрации клиентов.
  • Разрешить клиентам опрашивать сервер.
person Johan Sjöberg    schedule 25.02.2011

Другие простые решения могут включать опрос центральной базы данных или центрального файла.

Быстрый поиск в Google показывает: http://www.hazelcast.com/product.jsp. Что выглядит многообещающе, но у меня нет опыта в этом.

person jzd    schedule 25.02.2011
comment
Я должен буду изучить ореховый каст. Спасибо. - person Steve; 25.02.2011

Для более сложных сценариев я не могу порекомендовать достаточно терракотовый. По сути, terracotta распределяет части вашей кучи по сети, а это означает, что ваши приложения совместно используют части кучи. Изменения, сделанные одним приложением в общей куче, будут видны другим приложениям, совместно использующим эту кучу. Основным недостатком является то, что терракоте нужен выделенный сервер, поскольку это центральная конструкция.

person Erik    schedule 25.02.2011

Apache ZooKeeper из проекта Hadoop также может быть интересен. У меня нет с этим опыта, но на веб-странице я делаю вывод, что он предлагает иерархическую модель данных. Каждое приложение, заинтересованное в изменениях, может следить за изменениями в определенном узле и действовать в соответствии с изменениями.

http://zookeeper.apache.org/doc/trunk/index.html

person Remco    schedule 25.02.2011