Seata初探

Seata初探

最近在研究Seata,阿里的开源的分布式事务中间件,主要应用场景是微服务。

我先探究了AT(Automatic Transaction)模式,特点是0侵入

1.设计

定义 3 个组件来协议分布式事务的处理过程

FESCAR Model

  • Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。
  • Transaction Manager ™: 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
  • Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。

简单的说,就是TC负责全局协调,RM则是一个个分支事务,由对应的TM管理,而TM执行相应操作需要由TC批准

2.与XA的区别

最主要的区别在于RM,在XA中,RM归属于DB,而在Seata中,RM归属于APP,从微服务的角度来看,应用层不需要为本地事务和分布式事务两类不同场景来适配两套不同的数据库驱动。剥离了分布式事务方案对数据库在协议支持上的要求。

3.Seata的2PC

Seata-2PC

  • 分支事务中数据的 本地锁 由本地事务管理,在分支事务 Phase1 结束时释放。
  • 同时,随着本地事务结束,连接 也得以释放。
  • 分支事务中数据的 全局锁 在事务协调器侧管理,在决议 Phase2 全局提交时,全局锁马上可以释放。只有在决议全局回滚的情况下,全局锁 才被持有至分支的 Phase2 结束。

最主要的改变就是在不需要回滚的前提下节省了锁的时间

4.分支事务的回滚

业务数据的更新和回滚日志的写入在同一个 本地事务 中提交。

收到全局回滚的通知后,RM 收到协调器发来的回滚请求,通过 XID 和 Branch ID 找到相应的回滚日志记录,通过回滚记录生成反向的更新 SQL 并执行,以完成分支的回滚

参考资料

[https://github.com/seata/seata/wiki/概览](

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值