多数据源事务问题

原使用Atomikos进行多数据源的事务管理,现需要支持tidb,发现是不支持XA事务的,因本就支持分布式事务,
现在在一个集群下建立了多个库,springboot程序连接多个数据源,通过aop做切换,如何适配?

Tidb 完美兼容mysql 应该不需要其他操作吧 Tidb是分布式数据库 根本也不需要分库分表的鸡肋设计了

1 个赞

1 个赞

用 tidb 就只有一个数据源了,只考虑这个的话就不需要 Atomikos 了

mysql, tidb, pg 那种混合数据源么?
setea 开源的分布式数据源可以支持,比较麻烦(AOP 可能没办法)

1 个赞

我也觉得很鸡肋,现状就是这样,且同一个集群下的两个库还会出现同样的表

现在是用的aop动态切换数据源的,用atomikos做的事务管理,考虑到setea可能改动的地方比较多,想看看还有没有其他改动少的方案

一个数据源,库名点表名这样用吗

业务上确实需要多个库做存储

技术上方式可行的,只要咱们的应用用户有权限。具体还是要参考咱们的应用具体怎么用表

单个tidb,就不需要 aop 了… 这样最简单 :tada: :tada:

业务上就是需要多个,有点麻烦

那就又回到那个经典分布式数据一致性问题了,不用数据库保证数据一致性,需要开发自己保证数据一致性

1 个赞

现在看起来只能借助其他中间件比如seata这样

1 个赞

seata还是挺重的,如果只需要最终一致性也可以考虑其他方案

还有什么其他办法吗?

我们是可能是同时写多个库的情况

用tcc方案的文章网上好多,之前我们是自己实现的,京东好像有个框架hmily,原理应该都是tcc

谢谢,我们了解下