2015-08-28 1 views
4

У меня есть два экземпляра tomcat, работающих на балансировочном кластере. У меня также есть приложение, которое работает на этих двух случаях, и у меня есть два сомнения:Есть ли способ обмениваться объектами между несколькими tomcat в кластере с балансировкой нагрузки?

  1. Когда объект изменяет свое состояние в экземпляре, он меняется на другой, то есть, сохраняя то же самое состояние (этого конкретного объекта) в обоих случаях?

  2. Если ответ отрицательный, то как я могу совместно использовать одно и то же состояние объекта для обоих экземпляров без использования базы данных?

+0

По умолчанию никакие изменения в объектах в памяти не будут доступны для разных серверов. –

+2

Возможный дубликат [кластера Tomcat 6 с общими объектами] (http://stackoverflow.com/questions/2188474/tomcat-6-cluster-with-shared-objects) –

ответ

3

Если это нормально, чтобы добавить некоторые зависимости к проекту, то, возможно, вам стоит подумать об использовании Hazelcast. Конфигурировать кластер довольно просто, и он предлагает IAtomicReference, который, кажется, подходит для ваших нужд.

Чтобы раскрутить узел в кластере Hazelcast в коде, вы просто запустите:

HazelcastInstance instance = Hazelcast.newHazelcastInstance(); 

Это создает экземпляр, читая некоторые конфигурации XML или с помощью настроек по умолчанию, если они не определены. Для того, чтобы создать и присвоить атомную ссылку, которая будет хранить и распространять свой объект, вы можете назвать что-то вроде:

IAtomicReference<Foo> ref = instance.getAtomicReference("terefere"); 
if(ref.isNull()){ 
    ref.set(new Foo()); 
} 

Вы можете изменить состояние связанного объекта путем применения функции к нему, как в:

ref.apply(foo -> foo.setBar(true)); 
+0

Спасибо, человек .. Я прочитаю его документы. Единственный возможный наивный вопрос: рассматривает ли Hazelcast экземпляры на разных компьютерах с разными IP-адресами, верно? – Paulo

+1

Да, Hazelcast автоматически выполняет поиск узлов по сети. – Apokralipsa

+1

Для тех, кто стартует в HazelCast, вы можете посмотреть видео здесь: http://hazelcast.org/getting-started/ – Paulo