JAVA全系列 教程
3762个小节阅读:7092k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
本案例使用Atomikos框架实现XA强一致性分布式事务,模拟跨库转账的业务场景。不同账户之间的转账操作通过同一个项目程序完成。
说明:
转账服务不会直接连接数据库进行转账操作,而是通过Atomikos框架对数据库连接进行封装,通过Atomikos框架操作不同的数据库。由于Atomikos框架内部实现了XA分布式事务协议,因此转账服务的逻辑处理不用关心分布式事务是如何实现的,只需要关注具体的业务逻辑。
框架名字 | 版本 | 备注 |
---|---|---|
MySQL | 5.7 | |
JDK | 1.8 | |
微服务框架 | SpringBoot 2.6.3 | |
分布式事务框架 | Atomikos | |
持久层框架 | Mybatis plus |
字段名称 | 字段类型 | 字段说明 |
---|---|---|
account_no | varchar(64) | 账号编号 |
account_name | varchar(64) | 账号名称 |
account_balance | decimal(10,2) | 账户余额 |
设计完数据表后,在192.168.66.100服务器创建2个数据库,分别为tx-xa-01和tx-xa-02,分别在2个数据库中创建转出金额数据库。
xxxxxxxxxx
DROP TABLE IF EXISTS `user_account`;
CREATE TABLE `user_account` (
`account_no` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '账户编号',
`account_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '账户名称',
`account_balance` decimal(10, 2) NULL DEFAULT NULL COMMENT '账户余额',
PRIMARY KEY (`account_no`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
tx-xa-01库中添加数据。
xxxxxxxxxx
INSERT INTO `user_account` VALUES ('1001', '张三', 10000.00);
tx-xa-02库中添加数据。
xxxxxxxxxx
INSERT INTO `user_account` VALUES ('1002', '李四', 10000.00);