2015-10-22 3 views
0
  1. У меня есть статическая переменная, которую я обновляю через консоль администратора, информация обновляется как в статической переменной, так и в БД.
  2. Проблема в том, что у нас несколько экземпляров сервера.
  3. Когда я обновляю информацию через один экземпляр сервера, он обновляет значение правильно, но проблема заключается в статических переменных.
  4. Статические переменные обновляются в экземпляре сервера, через который я добавил данные, но не в других экземплярах сервера.

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

Заранее спасибо :-)

+0

Почему вы не можете просматривать все свои серверы и обновлять переменные? – AlexR

+0

Вы не можете волшебным образом «ввести» обновление статической переменной в удаленной JVM. Вам потребуется создать на сервере некоторый интерфейс для перехвата команд обновления. Когда это на месте, вы просто зацикливаете на своих экземплярах сервера и отправляете команду для обновления рассматриваемой переменной на каждом сервере. – aioobe

ответ

0
  1. вы можете создать фоновый процесс в вашем приложении, что опросы DB для этого значения с заданным интервалом. Простейший и быстрый способ, но не эффективный.
  2. вы можете использовать механизм публикации/подписки, чтобы подтолкнуть это значение ко всем вашим серверам. В больших системах это может быть zookeeper или некоторые брокеры JMS. Если система не такая большая, вы можете найти какое-то встроенное решение для публикации/подписания.
+0

Простым решением является создание простого сервлета Java, но он предполагает, что каждый экземпляр знает других, чтобы вызвать сервлет. – jaudo

+0

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

+0

Я уже думал о первом методе решения этой проблемы, но поскольку он неэффективен, я решил не идти с ним. –

0

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

Обновите статическую переменную до DB напрямую, а затем перезагрузите кеш.

+0

Как другие экземпляры знают, что им нужно перезагрузить кеш? – jaudo

+0

Другие экземпляры сервера не должны знать перезагрузку кеша. Все экземпляры сервера извлекают это значение из кеша. Перезагрузите кеш после обновления БД. – user1461926

+0

Тогда возникает вопрос, как перезагрузить кеш? – jaudo

Смежные вопросы