【问题标题】:Running Hibernate in clustered mode在集群模式下运行 Hibernate
【发布时间】:2021-11-06 14:54:00
【问题描述】:

我计划将 Spring Data JPA 与 Spring Boot 与 MySQL 服务器一起使用。在考虑运行多个连接到数据库的 Spring Boot 应用程序实例时,有哪些挑战、注意事项和最佳实践。

据我所知,Hibernate 应该在完全拥有数据库的情况下考虑,这在构建单体应用程序的情况下是好的,但在运行多个实例(微服务)的情况下,每个实例将如何管理、更新状态.请指导我。

【问题讨论】:

    标签: spring-boot hibernate spring-data-jpa microservices


    【解决方案1】:

    HibernateJPA 实现,Spring Data JPA 是 JPA 数据访问抽象。 Hibernate 提供了 Java Persistence API 的参考实现,使其成为具有松散耦合优势的 ORM 工具的绝佳选择...

    Hibernate 相比,Spring Data JPA 没有变化。 Spring Data JPA 拥有使用 JpaRepository 进行简单 Crud 操作的自己的方法,但您可以在关系数据库(mysql、postgresql、azure...等)和 jpa 自己的数据库 JPQL...

    中触发查询以进行复杂操作

    【讨论】:

      【解决方案2】:

      当应用程序中的任何服务都没有维护本地状态时,Hibernate 可用于微服务。该状态可能正在使用休眠二级缓存。当您想要使用二级缓存时,请确保它是集中式的并且可用于应用程序中的所有服务。

      事实上,这是一种共享数据库模式,在微服务架构中使用这种模式绝对没问题。这在微服务架构模式 https://microservices.io/patterns/data/shared-database.html

      中进行了讨论

      【讨论】:

      • 由于Hibernate使用一级缓存,如果另一个实例在一级缓存更改刷新到数据库之前更新数据库,是否会导致任何问题。
      • 一级或会话缓存的范围为事务级别。如果两个不同的服务需要更新同一条记录,建议使用显式锁定加载记录。这将使第二个调用者等到第一个调用者完成。这个链接有详细的并发控制baeldung.com/jpa-pessimistic-locking
      猜你喜欢
      • 1970-01-01
      • 2018-02-19
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多