java - Spring+MyBatis 多数据库支持故障转移的最佳方法

标签 java spring architecture mybatis

我需要开发一些服务并向一些第三方公开API。 在这些服务中,我可能需要获取/插入/更新/删除数据,并涉及一些复杂的计算(不仅仅是简单的 CRUD)。我打算使用 Spring 和 MyBatis。

但真正的挑战是会有多个数据库节点具有相同的数据(一些外部设置将负责保持它们同步)。当我收到对某些数据的请求时,我需要随机选择一个数据库节点并查询它并返回结果。如果所选数据库无法访问或存在一些网络问题或一些未知问题,那么我需要尝试连接到其他数据库节点。

我知道 Spring 的 AbstractRoutingDataSource。但是在哪里注入(inject)数据库连接重试逻辑呢?如果我动态切换数据源,Spring 能否正确处理事务?

或者我应该避免 Spring 和 MyBatis 开箱即用的集成并使用 MyBatis 自己进行事务管理?

你们有什么建议?

最佳答案

我建议您使用像 MongoDB 这样的 NoSQL 数据库。很容易聚类。例如,您可以配置使用 10 台服务器并复制数据 3 次。

这意味着如果您的 10 台服务器中的 2 台发生故障 - 您仍然可以保存数据。

NoSQL 数据库与 RDBS 相比有所不同,但它们可以为集群提供高性能。

此外,NoSQL 不支持事务 - 在进行财务操作时您必须手动执行。

实际上,在使用 NoSQL 进行开发时,您应该以不同的方式进行处理。

关于java - Spring+MyBatis 多数据库支持故障转移的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552107/

相关文章:

c# - 使用 JSON 序列化作为持久化机制而不是 RDB

java - 如何在 Spring xml 文件中使用多个属性占位符

database - 在 Spring JPA 应用程序中使用多个数据库

java - 将具有现有 pom.xml 的 maven 项目运行到 netbeans 时出现不同的错误

java - 服务层中的 hibernate/spring 验证

c# - 如何在两个 MVVM 对之间进行通信?

java - 如何仅在运行时从类路径嵌入 keystore 证书?

java - 迁移到 tomcat 后,将枚举值作为参数从 JSF 页面传递给 bean 方法失败

architecture - 流水线图,如果前一个 EX 使用相同的寄存器,ID 可以启动吗?

java - 从 FTP 下载文件