Seata(分布式处理事务)

一个业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题;
解决:全局的数据一致性问题
官网:http://seata.io/zh-ch/


全局事务ID
1+3
TC:事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚
TM:控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议;
RM:控制分支事务,负责分支注册,状态汇报,并接收事务协调器的指令,驱动分支本地提交和回滚


过程:
1.TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID
2.XID在微服务调用链路的上下文中传播;
3.RM向TC注册分支事务,将其纳入XID对应全局事务的管辖
4. TM向TC发起针对XID的全局提交或回滚决议
5. TC调度XID下管辖的全部分支事务完成决议或回滚请求


安装:
下载地址:https://githun.com/seata/release
怎么玩:
本地@Transactional
全局@GlobalTransactional
下载完之后:
1.修改conf目录下的file.conf配置文件:自定会议事务组名称+事务日志存储模式为db+数据库连接信息
service模块(自定义事务组名称):将vgroup_mapping.my_test_tx_group = "default"改成
vgroup_mapping.my_test_tx_group = "fsp_tx_group(工程名字)”
stroe模块:mode="file"改成mode=“db”
db里面的数据库url,用户名与密码改成自己的
2.在mysql数据库新建库seata
3.在seata库里面见表:建表db_store.sql在\seata\conf目录里面db_store.sql复制黏贴即可
4。修改seata\conf目录下的registry.conf配置文件
type="file"改成type=“nacos”
nacos模块serverAddr = “localhost::8848”改成需要的注册中心
启动seata-server(先启动nacos)


在件业务数据库的表中加入一张表(seata\conf目录下的db_undo_log.sql)回滚记录配置


Module
pom:
nacos-discovery

<dependency>
	<groupId>com.alibaba.cloud<groupId>
	<artifactId>spring-cloud-starter-seata</artifactId>
    <exclusions>
           <exclusion>
                   <artifactId>seata-all</artifactId>
                   <groupId>io.seata<groupId>
            <exclusion>
     <exclusions>
<dependency>
<dependency>
       <artifactId>seata-all</artifactId>
         <groupId>io.seata<groupId>
         <version>0.9<version>
<dependency>

yml:

server:
   port:2001
spring:
   application:
      name:seata-order-service
   cloud:
      alibaba:
          seata:
             #自定义事务名称需要与seata-server中的对应
             tx-service-group:fsp_tx_group
      nacos:
         discovery:
            server-addr:localhost:8848
   datasource:
     driver-class-name:com.mysql.jdbc.Driver
     url:jdbc:mysql://localhost:3306/seata_order
     username:root
     password:123456
feign:
   hystrix:
      enabled:true                 
logging:
   level:
      io:
        seata:info
mybatis:
   mapperLocation:classpath:mapper/*.xml 

在resource下面创建file.conf文件
拷贝->server模块
vgroup_mapping.my_test_tx_group = "default"改成
vgroup_mapping.fsp_tx_group = "default”
db模块:
修改db-type=“mysql”
driver-class-name=
url=
user=
password=
即可


resource创建
registry.conf
registry模块:type=‘nacos’
nacos模块
serverAddr=“localhost:8848”
复制即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值