谈谈分布式事务的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,如果我的分享对你有帮助。关注我,面试不再难!

相关文章
|
2月前
|
存储 SQL 微服务
常用的分布式事务解决方案(三)
常用的分布式事务解决方案(三)
|
2月前
|
关系型数据库 MySQL
常见分布式事务的解决方案(一)
常见分布式事务的解决方案(一)
|
2月前
|
消息中间件 中间件 关系型数据库
常用的分布式事务解决方案(四)
常用的分布式事务解决方案(四)
|
2月前
常用的分布式事务解决方案(二)
常用的分布式事务解决方案(二)
|
3月前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
|
3月前
|
存储 监控 数据可视化
性能监控之JMeter分布式压测轻量日志解决方案
【8月更文挑战第11天】性能监控之JMeter分布式压测轻量日志解决方案
94 0
性能监控之JMeter分布式压测轻量日志解决方案
|
4月前
|
存储 NoSQL 算法
实现分布式锁的Java解决方案
实现分布式锁的Java解决方案
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。
【7月更文挑战第3天】PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。通过数据分片和水平扩展支持微服务弹性,保证高可用性,且兼容MySQL协议,简化集成。示例展示了如何使用Spring Boot配置PolarDB,实现服务动态扩展。PolarDB缓解了微服务数据库挑战,加速了开发部署,为云原生应用奠定基础。
294 3
|
4月前
|
负载均衡 Java 开发者
Spring Cloud实战:构建分布式系统解决方案
Spring Cloud实战:构建分布式系统解决方案
|
4月前
|
存储 数据管理 数据库
现代数据库技术中的分布式一致性问题与解决方案探讨
分布式系统在现代数据库技术中扮演着重要角色,但分布式环境下的数据一致性问题始终是挑战之一。本文深入探讨了分布式一致性的核心概念、各种一致性模型的特点及其在实际应用中的优缺点,旨在为技术从业者提供全面的视角和实用的解决方案。

热门文章

最新文章