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

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

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

另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以扫描左侧二维码中找到。

1、什么是分布式事务

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

48a277e43d5a4adaa0e4c083bb4d872a.png

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

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

b229f8e869bbd1ebf202d92f7b340bd6.png

2、分布式事务解决方案

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

ac07c61847ebc11a079b68f5650e2ac0.png

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

26dfb6d2c9805d11039f13cd042465b6.png

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

ab1c3fd988e9ca9e0580d05e49ecf189.png

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

2b3532b5656595c4489d8405214c21e7.png

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

514430d69fdc6b21d9d0d842f6fad85b.png

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


我是被编程耽误的文艺Tom,如果我的分享对你有帮助。关注我,面试不再难!

相关文章
|
15天前
|
Oracle 关系型数据库 分布式数据库
分布式数据库集成解决方案
分布式数据库集成解决方案
214 0
|
15天前
|
Nacos 数据库
分布式事务解决方案Seata
分布式事务解决方案Seata
36 1
|
15天前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
221 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
15天前
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
95 0
|
8天前
|
程序员
深入解析:分布式一致性的终极解决方案——XA协议
本文介绍了分布式系统中的两种一致性协议:2PC(两阶段提交)和3PC(三阶段提交)。2PC分为准备和提交两个阶段,确保所有参与者在提交前达成一致。3PC则在2PC基础上增加了一个CanCommit阶段,提高容错性和可用性,参与者在超时后可自行中断事务。选择协议需依据业务需求和系统特点,高一致性要求可选3PC,注重性能则选2PC。
16 0
|
15天前
|
NoSQL 分布式数据库 MongoDB
【MongoDB 专栏】MongoDB 的分布式事务解决方案
【5月更文挑战第11天】本文探讨了MongoDB的分布式事务处理,涉及两阶段提交(2PC)、TCC补偿事务、分布式锁和幂等处理。2PC通过协调者与参与者确保数据一致性,而TCC提供更高性能和容错性。分布式锁解决并发冲突,幂等处理保证事务正确性。根据业务需求选择合适方案,并关注性能、可靠性和容错。
【MongoDB 专栏】MongoDB 的分布式事务解决方案
|
15天前
|
缓存 监控 数据库
分布式系统中缓存穿透问题与解决方案
在分布式系统中,缓存技术被广泛应用以提高系统性能和响应速度。然而,缓存穿透是一个常见而严重的问题,特别是在面对大规模请求时。本文将深入探讨缓存穿透的原因、影响以及一些有效的解决方案,以确保系统在面对这一问题时能够保持稳定和高效。
41 13
|
15天前
|
存储 缓存 算法
【专栏】探讨分布式限流所面临的挑战以及目前业界常用的解决方案
【4月更文挑战第27天】在互联网时代,分布式限流是应对高并发、保护系统稳定的关键。它面临数据一致性、算法准确性和系统可扩展性的挑战。常见限流算法有令牌桶、漏桶和滑动窗口。解决方案包括使用分布式存储同步状态、结合多种算法及动态调整阈值。定期压力测试确保策略有效性。随着系统规模增长,限流技术将持续发展,理解并应用限流原理对保障服务质量至关重要。
|
15天前
|
算法 微服务
分布式事务解决方案
分布式事务解决方案
28 0
|
15天前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
58 1
http://www.vxiaotou.com