Запуск режима гибернации в кластерном режиме

#spring-boot #hibernate #spring-data-jpa #microservices

Вопрос:

Я планирую использовать Spring Data JPA вместе с Spring Boot с сервером MySQL. Каковы проблемы, соображения и рекомендации при рассмотрении возможности запуска нескольких экземпляров приложений Spring Boot, подключающихся к базе данных.

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

Ответ №1:

Режим гибернации можно использовать для микросервисов, когда ни в одной службе приложения не поддерживается локальное состояние. Состояние может использовать кэш второго уровня спящего режима. Если вы хотите использовать кэш второго уровня, убедитесь, что он централизован и доступен для всех служб приложения.

На самом деле это шаблон общей базы данных, и использование этого шаблона в архитектуре микросервисов абсолютно нормально. Это обсуждается в шаблонах архитектуры микросервисов https://microservices.io/patterns/data/shared-database.html

Комментарии:

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

2. Кэш первого уровня или сеанса ограничен уровнем транзакции. В случае, если двум разным службам необходимо обновить одну и ту же запись, рекомендуется загрузить запись с явной блокировкой. Это заставило бы второго абонента ждать, пока не завершится первый. Эта ссылка содержит подробные сведения об управлении параллелизмом baeldung.com/jpa-pessimistic-locking

Ответ №2:

Hibernate является JPA реализацией и Spring Data JPA представляет собой абстракцию доступа к данным JPA. Hibernate обеспечивает эталонную реализацию Java Persistence API , что делает его отличным выбором в качестве инструмента ORM с преимуществами слабой связи…

вещи не меняются в Spring Data JPA сравнении Hibernate . Spring Data JPA у вас есть собственный метод для простой работы с Crud JpaRepository ,но вы можете запустить запрос для сложной работы в реляционной базе данных(mysql,postgresql, azure…и т. Д.) и собственной базе данных jpa JPQL