仅四步教你快速接入Seata分布式事务

简介:

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

本篇文章将以视频与文字介绍的形式,指引你如何整合Seata

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

注:本篇内容使用的是file配置中心,最简单的入门.如果您想深入了解请访问官网.starter使用file配置中心时默认开启数据源自动代理,数据库使用的是mysql,如若是其它数据库,请访问seata-samples的示例项目,如若没有请加钉钉/qq/微信群交流沟通,springboot支持版本为2.x


特性:

首先我们用到的是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日志以及程序日志进行调试即可.

Guess you like

Origin blog.csdn.net/lgxzzz/article/details/121311579