Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成
一、安装Seata-Server端
地址:https://github.com/seata/seata/releases
修改配置文件file.conf,新建数据库导入脚本,
脚本地址:https://github.com/seata/seata/tree/1.4.2/script/server/db
修改registry.conf,注册中心和配置中心使用nacos
用以下命令启动
cd /usr/local/seata/
sh seata-server.sh -p 8091 -h 127.0.0.1 &
二、项目集成
2.1 undo_log建表、配置参数
介绍:项目使用SpringCloud,多个服务多个库,每个业务库添加seata-client需要的undo_log脚本
脚本地址:https://github.com/seata/seata/blob/1.4.2/script/client/at/db/
2.2 项目添加依赖
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>最新版</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.2.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
2.3 代理数据源
@Primary
@Bean("dataSource")
public DataSource dataSource() {
//AT 代理 二选一
return new DataSourceProxy(routingDataSource());
// //XA 代理
// return new DataSourceProxyXA(druidDataSource)
}
三、测试项目
为示例业务创建表
DROP TABLE IF EXISTS `storage_tbl`;
CREATE TABLE `storage_tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`commodity_code` varchar(255) DEFAULT NULL,
`count` int(11) DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY (`commodity_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `order_tbl`;
CREATE TABLE `order_tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) DEFAULT NULL,
`commodity_code` varchar(255) DEFAULT NULL,
`count` int(11) DEFAULT 0,
`money` int(11) DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `account_tbl`;
CREATE TABLE `account_tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) DEFAULT NULL,
`money` int(11) DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以下为测试代码展示,业务入口处加入@GlobalTransactional,最终无论业务哪个地方模拟失败,几个库数据都回滚成功。
四、参考文档
1 官网:https://seata.io/zh-cn/
2 部署:https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html
3 样例: https://github.com/seata/seata-samples/tree/master/springcloud-nacos-seata
4 AT模式:https://seata.io/zh-cn/docs/dev/mode/at-mode.html
5.事务的暂停和恢复:https://seata.io/zh-cn/docs/user/api.html
6.参数配置:https://seata.io/zh-cn/docs/user/configurations.html
7.总结概括:https://baijiahao.baidu.com/s?id=1777717003459842931&wfr=spider&for=pc
版权属于:sunjianhua
本文链接:https://sunjianhua.cn/archives/seata-guide.html
转载时须注明出处及本声明,如果不小心侵犯了您的权益,请联系邮箱:NTA2MTkzNjQ1QHFxLmNvbQ==