Spring分布式动态数据源+事务

本篇是一个真实案例,来源于与一位技术达人一起共同探讨,解决一个分布式事务中,如何动态管理,

切换数据库,适用于大型互联网,及分库管理系统。网上虽有很多相似问题,但却无可靠,有效之

解决方案。


1. 背景介绍 


背景简单介绍一下。一位技术达人(同学)碰到一个棘手问题,听来较为吸引,恰巧手中略空,就一

起研究一下,给自己2个半小时定位

案例来源于一中大型互联网项目,涉及多个分布式数据库(根据业务分拆的数据库,几十个之多MySQL),

使用Spring, MyBatis等流行技术,业务操作需要跨多个数据库,并且整个业务需要事务支持。听起来不错。



目前碰到问题,分布式事务选择开源轻量级Atomikos,动态管理数据源选择Spring的AbstractRoutingDataSource,

一切正常。问题出在当事务于动态切换数据源出现在一个服务中的时候,数据源无法动态切换了。


问题重现

问题描述至此,带着浓浓好奇心,我们开始了神奇之旅。2. 问题重现 听完达人描述好,好奇心突发,

苦于远程协助,只好先现场还原,问题重现了。
我们简单模拟一下了,模拟简单业务场景,在一个方法中需要动态连接两个数据库,并分别插入记录,

提交,整个过程需要事务支持。
定义2个MySQL数据库,Spring+Transaction, JDBC(简单起见)。

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值