Steata分布式事务的使用

Steata分布式事务的使用场景是并发量不是很大的后台管理系统。
steate介绍和使用官网:http://seata.io/zh-cn/docs/overview/what-is-seata.html
我们这里使用的分布式事务解决方案是AT模式也即是2pc模式
我们所使用的是0.7.1版本,不同版本可能使用的方式有点区别。

  • seata 要控制分布式事务

  • 1)、每一个微服务的数据库必须创建uodo_log表
    – 注意此处0.7.1+ 增加字段 context
    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,
    PRIMARY KEY (id),
    UNIQUE KEY ux_undo_log (xid,branch_id)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    在这里插入图片描述

  • 2)、安装事务协调器 seata-server https://github.com/seata.seata/releases
    在这里插入图片描述
    registry.conf 注册中心配置 修改registry type=nacos,地址改为nacos的连接地址。
    在这里插入图片描述
    然后启动服务

  • 3)、整合
    1、导入依赖 spring-cloud-starter-alibaba-seata | seata-all-0.7.1

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
  • 3、所有想要用到分布式事务的微服务使用seata DataSourceProxy
@Configuration
public class MySeataConfig {

    @Autowired
    DataSourceProperties dataSourceProperties;

    @Bean
    public DataSource dataSource(DataSourceProperties dataSourceProperties) {
        HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
        if (StringUtils.hasText(dataSourceProperties.getName())) {
            dataSource.setPoolName(dataSourceProperties.getName());
        }
        return new DataSourceProxy(dataSource);
    }
}

  • 4、每个服务都导入
    registry.conf, file.conf
    在这里插入图片描述
    file.conf 的 service.vgroup_mapping 配置必须和spring.application.name一致
    设置:vgroup_mapping.gulimall-order-fescar-service-group = “default”,也可以通过配置 spring.cloud.alibaba.seata.tx-service-group修改后缀,但是必须和file.conf中的配置保持一致
    在这里插入图片描述
  • 5、大事务:@GlobalTransactional
  • 6、远程小事务:@Transactional
    入口处就使用@GlobalTransactional,而其他的远程调用开启事务的是就使用本地事务@Transactional即可
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化接口stockapi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值