Seata接入分布式事务

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

 

本文使用的测试用例是springboot+dubbo整合seata1.1版本,如果您使用的是springcloud请把文中与视频所说的seata-spring-boot-starter版本切换为spring-cloud-alibaba-seata 2.2.0(目前仅支持1.0的seata)版本即可.


 

特性:

首先我们用到的是Seata的AT模式,该模式的特点就是对业务无入侵式,分二阶段提交.

一阶段: 业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。

二阶段: 提交异步化,非常快速.回滚通过一阶段的回滚日志进行反向补偿

更多介绍请访问:seata.io

 


 

正文:

 

第一步:

首先访问:https://seata.io/zh-cn/blog/download.html

下载我们需要使用的seata服务并启动.

第二步:

在你的数据库中加入undo_log这张表

-- for AT mode you must to init this sql for you business database. the seata server not need it.CREATE TABLE IF NOT EXISTS `undo_log`(    `id`            BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT 'increment id',    `branch_id`     BIGINT(20)   NOT NULL COMMENT 'branch transaction id',    `xid`           VARCHAR(100) NOT NULL COMMENT 'global transaction id',    `context`       VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',    `rollback_info` LONGBLOB     NOT NULL COMMENT 'rollback info',    `log_status`    INT(11)      NOT NULL COMMENT '0:normal status,1:defense status',    `log_created`   DATETIME     NOT NULL COMMENT 'create datetime',    `log_modified`  DATETIME     NOT NULL COMMENT 'modify datetime',    PRIMARY KEY (`id`),    UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)) ENGINE = InnoDB  AUTO_INCREMENT = 1  DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';

第三步:

在你的项目中引入seata依赖(注:1.1.0版本目前需通过oss远程仓库发布,等正式版发布即可直接使用,或者可通过拉取1.1.0的源码进行本地打包使用.)

oss远程仓库:

https://oss.sonatype.org/index.html#view-repositories;snapshots~browsestorage~seata

    <!-- 教程根据快照版录制,正式版发布后请切换正式版依赖 -->    <dependency>      <groupId>io.seata</groupId>      <artifactId>seata-spring-boot-starter</artifactId>      <version>1.1.0</version>    </dependency>

并在你参与其中的项目的application.yml中都加入如下配置(视频内容不方便修改,在配置上请参考图文内容)

seata:   enabled: true   application-id: test  #可自定义   tx-service-group: my_test_tx_group #可自定义#  enable-auto-data-source-proxy: true  #  use-jdk-proxy: false    service:      vgroup-mapping:         my_test_tx_group: default      grouplist:         default: 127.0.0.1:8091#     disable-global-transaction: false   config:      type: file      file:         name: file.conf   registry:      type: file

 

application.properties参考如下:

seata.enabled=trueseata.application-id=testseata.tx-service-group=my_test_tx_group# seata.enable-auto-data-source-proxy=true# seata.use-jdk-proxy=falseseata.service.vgroup-mapping.my_test_tx_group=defaultseata.service.grouplist.default=127.0.0.1:8091seata.service.enable-degrade=false# seata.service.disable-global-transaction=falseseata.config.type=fileseata.config.file.name=file.confseata.registry.type=file

注:starter1.1.0的自动代理支持属性配置和注解@EnableAutoDataSourceProxy两种方式

 

第四步:

在您的发起者的接口上加入@GlobalTransactional,并查看server日志以及程序日志进行调试即可.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

对雪书空武

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

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

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

打赏作者

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

抵扣说明:

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

余额充值