seata 分布式事务 配置

下载

官方github

在这里我下载的是0.9.0windows需要注意的是客户端和服务端版本最好一致

修改服务端配置

我们下载的是服务端,即"事务总控端",先修改下他的配置

image-20200819201419430

1.修改conf目录下的file.conf

先修改 全局事务组(自定义)

image-20200819201525709

修改 全局存储为db

image-20200819201554846

最后配置数据库

image-20200819201729504

2.修改registry.conf

修改注册中心为nacos (用什么选什么,我用的是nacos)

并且配置 nacos服务地址

image-20200819201856244

3.创建数据库

在conf目录下有两个sql脚本

image-20200819202034982

db_store.sql是 需要我们创建seata 数据库的脚本,直接恢复数据即可

下面的db_undo_log.sql打开,第一句sql是删除undo_log表(防止先前存在该表,出现错误),如果没有这个表,直接复制下面sql的创建表即可

-- the table to store seata xid data
-- 0.7.0+ add context
-- you must to init this sql for you business databese. the seata server not need it.
-- 此脚本必须初始化在你当前的业务数据库中,用于AT 模式XID记录。与server端无关(注:业务数据库)
-- 注意此处0.3.0+ 增加唯一索引 ux_undo_log


drop table `undo_log`;
CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

这个脚本是在每个服务的数据库都要创建一个undo_log

比如我这里有 一个订单服务 一个仓储服务 一个账户服务的数据库,要实现分布式事务,要创建的数据库或者表 为:

image-20200819202927678

启动seata服务端

在这里我们是将 seata注册进 nacos

所以需要先启动 nacos 再启动seata

image-20200819205006896

客户端配置

1.首先是 pom依赖

image-20200819203151971

剔除starter的seata 防止版本不统一出现错误,导入 同seata服务端版本的 seata 依赖

2.yml

image-20200819203410857

3. copy 配置文件到resource目录

将之前修改好的 seata服务端的 file.confregistry.conf 文件复制到涉及同一事务的分布式服务的resource目录下

image-20200819203808406

但是!! 要修改一个地方:

修改 file.conf (只有此处与seata服务端配置不一样)

image-20200819203723029

客户端如何使用

假设我们再这里 有三个服务: 订单服务 仓储服务 支付服务

用户下一个订单,订单服务先调用仓储服务,然后再调用支付服务,我们就需要早业务的发起者(订单服务)标记@GlobalTransactional注解即可

image-20200819204255659

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值