我需要开发一些服务并向一些第三方公开 API。在这些服务中,我可能需要获取/插入/更新/删除涉及一些复杂计算的数据(不仅仅是简单的 CRUD)。我打算使用 Spring 和 MyBatis。
但真正的挑战是会有多个具有相同数据的数据库节点(一些外部设置将负责使它们保持同步)。当我收到一些数据的请求时,我需要随机选择一个数据库节点并查询它并返回结果。如果所选数据库无法访问或有一些网络问题或一些未知问题,那么我需要尝试连接到其他一些数据库节点。
我知道 Spring 的 AbstractRoutingDataSource。但是在哪里注入数据库连接重试逻辑呢?如果我动态切换数据源,Spring 会正确处理事务吗?
或者我应该避免 Spring 和 MyBatis 开箱即用的集成并使用 MyBatis 自己进行事务管理?
你们有什么建议?