#java #spring
#java #весна
Вопрос:
В моем приложении java / spring запись базы данных извлекается при инициализации сервера и сохраняется как статическое поле. В настоящее время мы выполняем обновление mbean для обновления значений базы данных во всех экземплярах. Есть ли какой-либо другой способ программного обновления значения базы данных во всех экземплярах сервера? Я читаю об обновлении EntityManager.Будет ли это работать во всех экземплярах?Любая помощь будет принята с благодарностью.
Комментарии:
1. Просто для уточнения: у вас есть одна база данных и несколько экземпляров одного и того же приложения, подключенного к базе данных? Что является триггером для запуска перезагрузки? Обновляется ли оно периодически?
2. Привет, cmoetzing, это верно. одна база данных и много экземпляров. для перезагрузки текущая система использует команду загрузки mbean вручную. Я ищу варианты удаления mbean с помощью веб-команды отправить для перезагрузки или что-то в этом роде
3. это звучит как некоторый параметр конфигурации, который извлекается из базы данных и может быть изменен во время выполнения. в таком случае вы можете использовать cloud.spring.io/spring-cloud-static /. …
4. Область обновления звучит очень интересно. работает ли это для нескольких экземпляров?
Ответ №1:
Например, вы можете запланировать перезагрузку каждые 5 минут.
Или вы можете отправлять события, и все экземпляры реагируют на это событие.
Комментарии:
1. Добавляю еще одно сообщение для просмотра . Это сообщение Oracle об использовании событий базы данных для аннулирования кэша
Ответ №2:
До сих пор связь между базами данных и серверами была односторонней, т.Е. Сервер приложений запрашивает данные из базы данных. Обычно это приводит к проблеме, и, как вы упомянули, все серверы приложений не могут знать об изменении базы данных, если приложение выполняется в режиме кластера.
Текущее решение включает в себя обновление полей время от времени (метод, основанный на опросе).
Чтобы сделать эту модель на основе push, мы можем создавать API-интерфейсы-оболочки поверх баз данных и позволять этим API-интерфейсам-оболочкам передавать изменения на все серверы приложений.
Под этим я подразумеваю, что не обновляйте значения базы данных напрямую с одного сервера приложений, а вместо этого отправляйте этот запрос на изменение в другое приложение, которое отслеживает ваши серверы приложений и отправляет событие (через вызов API или очереди) для обновления переданной таблицы базы данных.
К счастью, если вы используете какую-то новую базу данных (например, MongoDB), они теперь предоставляют это обновление на серверы приложений из коробки.