Как реализовать синхронизацию кэша в кластерной среде Tomcat 6.0? - PullRequest
3 голосов
/ 19 августа 2010

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

Похоже, что на сервере Tomcat есть встроенная система обмена сообщениями. (Tribes) Мне интересно, могу ли я использовать этот обмен сообщениями для своей задачи и как заставить слушателя событий работать весь день.

с уважением Michael

Ответы [ 3 ]

0 голосов
/ 06 декабря 2010

Вы можете использовать тему Hazelcast. Это очень легкий паб / суб-сообщения. Каждый узел будет слушать тему. Когда пользователь сохраняет что-то на любом узле, просто добавьте сообщение «ОБНОВИТЬ» При получении каждый узел может делать все что угодно. Вот код для этого:

String REFRESH = "REFRESH";
ITopic<String> topic = Hazelcast.getTopic("myTopic");
topic.addMessageListener(new MessageListener<String>() {
        public void onMessage(String msg) {
          if(REFRESH.equals(msg){   
           //do refresh
          }
        }
    });

// когда пользователь сохраняет sth.
topic.publish (Refresh);

0 голосов
/ 16 декабря 2013

Если вы используете рукописный CACHE, чем вы можете синхронизировать кеш-память всех узлов кластера, используя широковещательную / приемную рассылку, для этого вы можете использовать JGROUP.

для ex: node Кэш обновлений, который просто передает сообщение на другой узел для пополнения (refresh) их кеша

0 голосов
/ 20 августа 2010

Можно использовать его, и нет необходимости запускать поток или тому подобное. Для отправки экземпляров классов требуется jar класса сообщений в каталоге lib tomcat.

веселит Michae

...