【问题标题】:How to have data consistency in H2 database after scaling up the spring boot applicationspring boot应用扩容后如何在H2数据库中保持数据一致性
【发布时间】:2021-11-02 20:58:17
【问题描述】:

我有一个连接到内存 H2 数据库的 Spring Boot 应用程序。如果我必须使用 2-3 个并行实例(我正在使用 docker)水平扩展 Spring Boot 应用程序。我们如何才能实现各个实例的H2数据库之间的数据一致性。这样即使请求发送到任何实例,H2 数据库的所有 3 个实例中的数据也始终保持同步。

【问题讨论】:

  • 不要使用内存数据库,使用所有 Spring Boot 进程都连接到的单个数据库实例。
  • 除了@tgdavies 提到的你提到的是水平缩放而不是垂直缩放。垂直是您升级单个节点的规格以实现非功能目标的地方。
  • @DhrubajyotiGogoi 谢谢。垂直更正为水平。
  • 一重启,整个db就会消失
  • 你需要找出在memory DB中使用h2的原因是什么,并在你的问题中解释。

标签: java spring-boot docker redis h2


【解决方案1】:

H2是一个数据库,java写的,支持集群

https://www.h2database.com/html/advanced.html?highlight=clustering#clustering

但是当涉及到嵌入式 H2 时,它不支持集群。如果你想实现数据一致性,你可以在 spring 之外运行数据库,作为一个集群。或者,您可以在服务之间实现某种形式的分布式缓存,例如 Hazelcast。

如果这是您在 cmets 中编写的 POC,并且您正在使用 docker,我将删除 H2 并在 docker 容器中使用单个其他数据库,例如所有服务都连接到的 mongo、postgres、redis 等.会让你的生活更轻松。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2019-09-06
    • 2021-02-25
    • 1970-01-01
    • 2016-05-15
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多