seata初体验

Seata 是什么?

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

优点

对业务无侵入

Seata术语

  • TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
  • TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务
  • RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

在这里插入图片描述

实现流程

  • 获取事务的控制权
手写Java 类,实现Connection 接口,通过对Connection 接口的切面,手动替换为自己的手写实现类。
  • 事务的发起(TM)(服务调用链的起始方)
1:创建事务组,生成事务组ID(groupId)(xid)
2:创建分支事务(分支事务id,分支事务type:commit/rollback,所属组别)
  分支事务的type依赖于切面执行成功与否,成功则为commit
3:注册分支事务
4:提交全局事务
  tm根据分支事务的状态,决定组事务的成功与否,将此状态同步到子事务,完成最后的提交或者回滚,完成分布式事务的操作

事务的代理实现原理

private void transactionalProxy(){
		//判断是否存在事务注解
		Boolean flag = false;
		if (false){
			//不存在,直接执行原方法
			//返回
		}
		//存在,执行事务
		//设置事务为手动提交
		//开启事务
		try{
			//事务commit
		}catch (Exception exception){
			//事务rollback
		}
	}

目录说明

seata/conf

在这里插入图片描述

  • file.conf --> seata,事务信息保存位置
file、db、redis
  • registry.conf --> seata,集群配置中心
file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值