您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

什么是“分布式事务”?这回彻底懂了

时间:2019-12-02 16:02:50  来源:  作者:

在如今的分布式盛行的时代,分布式事务永远都是绕不开的一个话题,今天就谈谈分布式事务相关的一致性与实战解决方案。

01 为什么需要分布式事务 

由于近十年互联网的发展非常迅速,很多网站的访问越来越大,集中式环境已经不能满足业务的需要了,只能按照业务为单位进行数据拆分(包含:垂直拆分与水平拆分),以及按照业务为单位提供服务,从早期的集中式转变为面向服务架构的分布式应用环境。

举一个典型的例子,阿里的淘宝网站随着访问量越来越大,只能按照商品、订单、用户、店铺等业务为单位进行数据库拆分,以及按照业务为单位提供服务接口。

什么是“分布式事务”?这回彻底懂了

 

这个时候 为了完成一个简单的业务功能,比如:购买商品后扣款,有可能需要横跨多个服务,涉及用户订单、商品库存、支付等多个数据库,而这些操作又需要在同一个事务中完,这就涉及到到了分布式事务。

本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。

02 分布式的一致性理论 

最早加州大学伯克利分校 Eric Brewer教授提出一个分布式系统特性的CAP理论。

1.CAP 理论的不可能三角

什么是“分布式事务”?这回彻底懂了

 

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容错性(Partition tolerance)

在分布式系统中,是不存在同时满足一致性 Consistency、可用性 Availability和分区容错性 Partition Tolerance三者的。

一句话总结:一致性、可用性和分区容错在分布式事务中不可兼得。

在绝大多数的场景,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证最终一致性。

这也是是后来发展出的BASE理论的基础。

2.BASE 理论

什么是“分布式事务”?这回彻底懂了

 

  • Basically Available(基本可用)
  • Soft state(柔软状态)
  • Eventually consistent(最终一致性)三个短语的简写。

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

 

03 分布式事务的解决方案 

1.基于XA协议的两阶段提交 2PC(2-phase commit protocol)

XA是一个分布式事务协议,XA中大致分为两部分:事务管理器和本地资源管理器,其中本地资源管理器往往由数据库实现,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。

什么是“分布式事务”?这回彻底懂了

 

大致的流程:

  • 第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;
  • 第二阶段是执行阶段,协调者根据所有参与者的反馈,通知所有参与者,步调一致地在所有分支上提交或者回滚。

优缺点

尽量保证了数据的强一致,实现成本较低,在各大主流数据库都有自己实现,存在单点故障问题、性能问题、跨数据库问题。

2.事务补偿TCC模式

TCC方案其实是两阶段提交的一种改进,将整个业务逻辑的每个分支显式的分成了Try、Confirm、Cancel三个操作。

Try部分完成业务的准备工作,confirm部分完成业务的提交,cancel部分完成事务的回滚,基本原理如下图所示:

什么是“分布式事务”?这回彻底懂了

 

优缺点

对代码有侵入性,降低了锁冲突,提高了吞吐量,缺点是有时候并没有那么好实现。

案例

蚂蚁金服的DTS(prepare、commit、rollback)

3.消息队列最终一致性方案

通过异步解耦的方式,通过第三方中间件

什么是“分布式事务”?这回彻底懂了

 


案例

RocketMQ RabbitMQ等均可实现,RocketMQ 还有专门的事务型消息,新版的kafka也有。

总之,分布式系统中事务更多的是对CAP权衡,在实际应用中,根据业务要求、开发人员情况以及所用框架不同进行调整。

本文转载于:https://youzhixueyuan.com/distributed-transaction.html



Tags:分布式事务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。 Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。...【详细内容】
2021-03-31  Tags: 分布式事务  点击:(405)  评论:(0)  加入收藏
分布式事务以及分布式锁是分布式中难点,分布式事务一篇文章可能写不完,我的习惯时从基本概念出发,一步一步开始介绍,前面会先梳理事务中一些基本概念,对基本概念十分清楚的话可以直接看"一致性讨论"以及后面的部分...【详细内容】
2021-02-25  Tags: 分布式事务  点击:(154)  评论:(0)  加入收藏
感谢朋友们一路以来的支持,让大家久等了。在这一个版本中,我们团队重构了整个项目,合理的划分功能模块,新增配置中心,调整底层存储结构,解决疑难bug,以及其他新功能的支持,也吸收了更多开源社区的优秀人才的加入。...【详细内容】
2020-09-29  Tags: 分布式事务  点击:(248)  评论:(0)  加入收藏
作者:人月神话,新浪博客同名简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践在微服务架构下,我们最容易遇到的一个问题就是分布式事务处理问题,当你微服务...【详细内容】
2020-08-18  Tags: 分布式事务  点击:(71)  评论:(0)  加入收藏
前言不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交...【详细内容】
2020-07-12  Tags: 分布式事务  点击:(64)  评论:(0)  加入收藏
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元;事务的ACID特性事务应该具有4个属性:原子性、一致性、隔离性、持续性原子性(atomicity)。一个事务是...【详细内容】
2020-05-12  Tags: 分布式事务  点击:(159)  评论:(0)  加入收藏
最近看了几篇有关于分布式事务的博文,做了一下笔记,并总结出这篇文章。 图片来自 Pexels 数据库事务数据库事务(简称:事务),是数据库管理系统执行过程中的一个逻辑单位,由一个有...【详细内容】
2020-03-18  Tags: 分布式事务  点击:(46)  评论:(0)  加入收藏
在如今的分布式盛行的时代,分布式事务永远都是绕不开的一个话题,今天就谈谈分布式事务相关的一致性与实战解决方案。01 为什么需要分布式事务 由于近十年互联网的发展非常迅速...【详细内容】
2019-12-02  Tags: 分布式事务  点击:(98)  评论:(0)  加入收藏
腾讯计费平台部托管着公司90%以上的虚拟账户,如QB、Q点、包月服务、游戏的二级账户等,为了保证能顺畅支撑公司各大业务的实时在线交易,并且在各种灾难场景下数据是一致并且可用...【详细内容】
2019-11-12  Tags: 分布式事务  点击:(111)  评论:(0)  加入收藏
一个复杂的系统往往都是从一个小而简的系统发展衍化而来,为了满足日益增长的业务需求,不断的增加系统的复杂度,从单体架构逐步发展为分布式架构,而分布式系统架构的设计主要关注...【详细内容】
2019-10-25  Tags: 分布式事务  点击:(63)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条