对分布式事务的见解

分布式事务的本质上就是保证不同数据库的数据一致性。简单来说,就是一次全局性质的事务由不同的几个小事务完成,当然这些小事务都是分布在不同的服务器上并且是不同的系统,分布式事务就是保证这些小事务要么全部成功,要么全部取消。

分布式事务的三种解决方案

基于XA协议的两阶段提交

XA协议分为两个步骤:事务管理器和本地资源管理器。

第一阶段是准备阶段,就是所有的事务参与者准备执行事务并且锁定资源的时候,向事务管理器发送就绪状态。

第二阶段为提交阶段,此时事务管理器确认所有事务参与者全部为就绪状态后,向所有参与者发送提交命令。

缺点:效率低下,准备阶段的成本持久,全局事务状态的成本持久,性能与本地事务相差10倍左右;
提交前,出现故障难以恢复和隔离问题。
 

消息事务+最终一致性

消息事务就是基于消息中间件的两段提交,单条消息的事务就不说了,有兴趣的同学可以看一些消息确认机制。当A系统接受到请求后,在处理完请求后发送一条MQ消息,B系统再监听MQ消息,并更改为手动消息确认,此时会变相的实现A、B系统的分布式事务。

由于A、B系统不是严格一致性,而是最终一致性的,牺牲了一致性。

优点:提高了处理性能。

缺点:如果B系统一直执行不成功,那一致性就会被破坏。

 

TCC编程模式

TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题。

TCC是服务化的两阶段编程模型,其中Try,Confirm,Cancel3个方法均由业务编码实现;

其中Try操作第一阶段,资源的检查和预留,

Confirm操作第二阶段,提交操作,执行真正的业务。

Cancel是预留资源的取消。

个人感觉就是XA的加强版,具体描述如下图:640?wx_fmt=png

LCN框架实现了springCloud 分布式事务的TCC编程模式,详情请查看链接:https://blog.youkuaiyun.com/gaowenhui2008/article/details/83824280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值