谈谈分布式事务的3种解决方案

本文探讨了分布式事务的概念,重点介绍了强一致性(如XA协议)和弱一致性(如消息队列、TCC和Seata)的解决方案,以电商系统下单场景为例,阐述了如何在保证数据一致性的同时优化系统性能。
摘要由CSDN通过智能技术生成

前几天,有一位10多年经验的架构师在面试互联网大厂时被问到这样一个问题,说请你谈谈分布式事务的解决方案。那今天,我给大家分享一下我对这个问题的理解。

另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以关注我的个人简介!

1、什么是分布式事务
分布式事务是指事务的参与者和支持事务的服务器、资源服务器以及事务管理器,分别位于分布式系统的不同节点上,保证不同数据的一致性。

比如大型电商系统中的下单场景,会涉及到扣库存、优惠折扣计算、订单ID生成等这些服务,通常情况下库存、折扣、订单ID生成的服务都位于不同的服务器和数据库中,那么下单是否成功,不仅取决于本地节点的数据库操作,还需要依赖其他服务的执行结果结果,这个时候分布式事务就是保证这些操作要么全部成功,要么全部失败。

因此,本质上来说,分布式事务就是为了保证不同数据库数据的一致性。

2、分布式事务解决方案
基于CAP定理和Base理论,我们可以知道,对于上述情况产生的分布式问题,我们要么采用强一致性方案,要么采用弱一致性方案。

所谓强一致性方案,是指通过第三方事务管理器来协调多个节点的事务性,保证每一个节点的事务达到同时成功或者同时失败,为了实现这样一个需求。我们可以引入X/Open DTP模型提供的XA协议,基于2阶段提交或者3阶段提交的方式去实现,但是如果全局事务管理器中的多个节点,任意一个节点在进行事务提交确认的时候,由于网络通信延迟导致了阻塞,就会影响到所有节点的事务提交,而这个阻塞过程呢,也会影响到用户的请求线程,这对于用户体验以及整体的性能影响非常大。

而弱一致性方案就是针对强一致性方案所衍生出来的性能和数据一致性平衡的一个方案。简单来说就是损失掉强一致性,数据在某一个时刻会存在不一致的状态,但是最终这些数据会达成一致,这样的好处是提升了系统的性能。在弱一致性方案中,常见的解决方案有3种:

第1个:使用分布式消息队列来实现最终的一致性。

第2个:基于TCC事务,通过演进版本的2阶段提交去实现最终一致性。

第3个:使用Seata事务框架,它提供了多种事务模型。比如说 AT、XA 、Saga、TCC等,不同的模型提供的是强一致性或者弱一致性的支持。

以上就是我对分布式事务的理解。如果我的分享对你有帮助,请动动手指分享给更多的人。关注我,面试不再难!https://juejin.cn/post/7109284391624376327

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值