竹笋

首页 » 问答 » 灌水 » 一文详解SpringBoot多数据源中的
TUhjnbcbe - 2025/1/13 22:20:00
北京哪个医院治疗白癜风效果好 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/bdf/

作者

小涛

责编

maozz

虽然现在微服务越来越流行,我们的系统随之也拆分出来好多的模块功能。这样做的目的其实就是为了弥补单体架构中存在的不足。

随着微服务的拆分,肯定设计到分库分表,但这之中肯定设计到分布式事务。最典型的例子就是银行转账,比如银行A给银行B转账块钱,流程肯定是银行A-,银行B+,在这个过程要么都成功,要么都成仁。

首先银行A和银行B的数肯定是在不同的数据库,如果在转账的过程中,银行A首先-库钱之后,在银行B+的时候出现了问题,如果事务不回滚,那么就会出现块钱丢失的问题,也就是出现了事务一致性问题。

JTA+Atomikos解决分布式事务

JTA(javaTransactionAPI)是JavaEE13个开发规范之一。Java事务API,允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性。

Atomikos是一个为Java平台提供增值服务的并且开源类事务管理器。

工作原理:分布式事务包括事务管理器和支持XA的资源管理器。资源管理器就是我们的DB,事务管理器就是承担调节和控制所有参与DB所设计到的事务。

个人理解:Atomikos获取到数据库的连接之后,会屏蔽数据库底层事务控制,然后全部交给Atomikos,进行统一的调度和控制。

接下来,我们简单的做一个基于SpringBoot的分布式事务控制。

1、首先我们要引入需要引入的maven库

!--分布式事务--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jta-atomikos/artifactId/dependency

2、配置数据源

3、配置类

最主要的配置

Configuration

MapperScan(basePackages=
1
查看完整版本: 一文详解SpringBoot多数据源中的