分布式事物解决方案之tcc,二阶段提交,三阶段提交原理案例解析

【解决方案】分布式事务方案分析:两阶段和TCC方案(图+文) (1)两阶段分布式事务方案基于事务(数据库层面)的分布式方案,TCC分布式事务方案基于业务的分布式方案; (2)两阶段提交是强一致方案,但是仍有数据不一致的情况,统一事务管理器存在单点故障问题,导致整个系统不可用; (3)TCC是基于业务的方案,在业务层面,业务侵入性大,实现复杂; (4)提交:所有阶段均成功;回滚:任意阶段出现异常、失败等。 阅读详情

分布式事务

数据库事务要满足几个要求:ACID

Atomic(原子性) 事务必须是原子的工作单元

Consistent(一致性) 事务完成时,必须使所有数据都保持一致状态

Isolation(隔离性) 并发事务所做的修改必须和其他事务所做的修改是隔离的

Duration(持久性) 事务完成之后,对系统的影响是永久性的

Mysql里的事务处理过程

  1. 记录redo(记录数据修改之前原始记录)和undo log文件,确保日志在磁盘上的持久化

  2. 更新数据记录

  3. 提交事务 ,redo 写入commit记录

事物处理完删除undo文件,更新redo文件

分布式事务

原因

数据库分库分表

img

SOA化

拆分出来,每一个模块是独立的工程,能够缩短开发周期回归测试

img

​ 在分布式系统中,每一个机器节点虽然都能明确的知道自己执行的事务是成功还是失败,但是却无法知道其他分布式节点的事务执行情况。因此,当一个事务要跨越多个分布式节点的时候(比如,下单流程,下单系统和库存系统可能就是分别部署在不同的分布式节点中),为了保证该事务可以满足ACID,就要引入一个协调者(Cooradinator)。其他的节点被称为参与者(Participant)。协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务进行提交。

X/OpenDTP事务模型

X/Open Distributed Transaction Processing Reference Model

X/Open是一个组织机构,定义出的一套分布式事务标准, 定义了规范的API接口

2PC(two -phase-commit), 用来保证分布式事务的完整性

J2EE 遵循了X/open DTP规范,设计并实现了java里面的分布式事务编程接口规范-JTA

XA是X/Open DTP定义的中间件与数据库之间的接口规范。 XA接口函数由数据库厂商提供

X/OpenDTP 角色

image-20190318223350760

AP application :触发分布式事物指令 (应用程序)

RM resouces manager 资源管理器。 一般表示数据库,必须实现XA定义的接口

TM transaction manager 事务管理器,负责协调和事务管理

2PC(two -phase-commit)

  • 提交事务请求(投票)
  • 执行事务请求(提交或中断)

阶段一:提交事务请求(投票)

  1. TM向所有的AP发送事务内容,询问是否可以执行事务的提交操作,并等待各个AP的响应

  2. 执行事务

各个AP节点执行事务操作,将undo和redo信息记录到事务日志中,尽量把提交过程中所消耗时间的操作和准备都提前完成后确保后续

事务提交的成功率

  1. 各个AP向TM反馈事务询问的响应

各个AP成功执行了事务操作,那么反馈给TM yes的response;如果AP没有成功执行事务,就反馈TM no的response

阶段二:执行事务提交

详解

执行提交事务

img

​ 假设一个事务的提交过程总共需要30s, 其中prepare操作需要28(事务日志落地磁盘及各种io操作),而真正commit只需要2s

​ 那么,commit阶段发生错误的概率和prepare相比, 2/28 (<10%) .只要第一个阶段成功,那么commit阶段出现失败的概率就非常小

​ 大大增加了分布式事务的成功概率

中断事务提交

img

2pc的数据一致性问题

  • 数据不一致。在二阶段提交的阶段二中,当协调者向参与者发送commit请求之后,发生了局部网络异常或者在发送commit请求过程中协调者发生了故障,这回导致只有一部分参与者接受到了commit请求。而在这部分参与者接到commit请求之后就会执行commit操作。但是其他部分未接到commit请求的机器则无法执行事务提交。于是整个分布式系统便出现了数据部一致性的现象。

  • 同步阻塞问题。执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态

  • 二阶段无法解决的问题:协调者在发出commit消息之后宕机,而唯一接收到这条消息的参与者同时也宕机了。那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交

  • 单点故障。由于协调者的重要性,一旦协调者发生故障。参与者会一直阻塞下去

3PC(three phase commit)

阶段一:canCommit

​ 询问,按照所有人的返回决定是否可以执行操作

阶段二:preCommit

​ 预执行,如果超时认为执行失败

阶段三:doCommit

​ 如果超时了,还是会真正执行

改进点

  • 增加了超时机制

  • 第二阶段,如果协调者超时没有接受到参与者的反馈,则自动认为失败,发送abort命令

  • 第三阶段,如果参与者超时没有接受到协调者的反馈,则自动认为成功开始提交事务(基于概率)

3pc的问题

​ 相对于2PC,3PC主要解决的单点故障问题,并减少阻塞,因为一旦参与者无法及时收到来自协调者的信息之后,他会默认执行commit。而不会一直持有事务资源并处于阻塞状态。但是这种机制也会导致数据一致性问题,因为,由于网络原因,协调者发送的abort响应没有及时被参与者接收到,那么参与者在等待超时之后执行了commit操作。这样就和其他接到abort命令并执行回滚的参与者之间存在数据不一致的情况。

XA/JTA

​ XA 就是 X/Open DTP 定义的事务管理器与资源管理器的接口规范(即接口函数),XA 接口函数由数据库厂商提供。

​ JTA是基于X/Open DTP模型开发的java transaction APi规范

概述

​ 通过2pc的方式去完成分布式事务,虽然通过这种方式能够达到预期的效果,但是我们在现实中很少会用到2pc方式的提交的XA事务,有几个原因

  1. 互联网电商应用的快速发展,对事务和数据的绝对一致性要求并没有传统企业应用那么高

  2. XA事务的介入增加了TM中间件,使得系统复杂化

  3. XA事务的性能不高,因为TM要等待RM回应,所以为了确保事务尽量成功提交,等待超时的时间通常比较长,比如30s到几分钟,如果RM出现故障或者响应比较慢,则整个事务的性能严重下降

互联网的分布式事务解决方案

​ 目前互联网领域里有几种流行的分布式解决方案,但都没有像之前所说的XA事务一样形成X/OpenDTP那样的工业规范,而是仅仅在具体的行业里获得较多的认可

业务接口整合,避免分布式事务

​ 这个方案就是把一个业务流程中需要在一个事务里执行的多个相关业务接口包装整合到一个事务中,比如我们可以讲A/B/C整合为一个服务D来实现单一事务的业务流程服务

最终一致性方案之ebay模式

​ eBay在2008年公布了一个关于BASE准则提到一个分布式事务解决方案。eBay的方案其实是一个最终一致性方案,它主要采用消息队列来辅助实现事务控制流程,方案的核心是将需要分布式处理的任务通过消息队列的方式来异步执行,如果事务失败,则可以发起人工重试的纠正流程。人工重试被更多的应用于支付场景,通过对账系统对事后问题进行处理

​ 比如一个很常见的场景:某个用户产生了一笔交易,那么需要在交易表中增加记录,同时需要修改用户表的金额(余额),由于这两个表属于不同的远程服务,所以就会涉及到分布式事务与数据一致性的问题

user(id, name, amt_sold, amt_bought)
transaction(xid, seller_id, buyer_id, amount)
begin;
INSERT INTO transaction VALUES(xid, $seller_id, $buyer_id, $amount); UPDATE user SET amt_sold = amt_sold + $amount WHERE id = $seller_id;
UPDATE user SET amt_bought = amt_bought + $amount WHERE id = $buyer_id;
commit;

那么在这里可以使用消息队列(MQ)来做

先启动一个事务,更新交易表(transaction)后,并不直接更新user表,而是将要对user表进行的更新插入到消息队列中。

目标系统收到该消息以后,启动本地事务去对用户表的余额做调整

伪代码

bool result=dao.update();

if(result){

  mq.send();

}

根据上面的伪代码的实现方案,可能出现几种情况

  1. 数据库操作成功,向MQ中投递消息也成功

  2. 操作数据库失败,不会向MQ中投递消息

  3. 操作数据库成功,但是向MQ中投递消息时失败,向外抛出异常。数据库操作回滚

对于上面几种情况,问题都不大。那么我们分析下消费端的问题

  1. 消息出队列以后,消费者对应的业务操作要执行成功。如果执行失败,消息不能失效或者丢失。需要保证消息和业务操作一致

  2. 尽量避免消息重复消费,如果重复消费,也不能影响业务的执行结果

对于第一个问题,如何保证消息不丢失

现在用的比较普遍的MQ都具有持久化消息的功能,如果消费者宕机或者消费失败,都可以执行重试机制

对于如何避免消息的重复消费

  1. 保证消费者的幂等性

    ​ 也就是说如果队列中的消息因为网络异常导致发送多次的情况下,仍然需要保证消息被应用多次与应用一次产生的效果是一样的

  2. 通过消费日志表来记录消费状态

    ​ 增加一个message_applied(msg_id)表,用来记录已经被成功应用的消息。在目标系统执行更新操作之前,先检测该消息是否已经被消费过,消费完成后通过本地事务控制来更新这个“消费表状态”,用来避免消息重复消费问题

上面这种方式是非常经典的实现,基本避免了分布式事务,实现了“最终一致性”。

​ 各大知名的电商平台和互联网公司,几乎都是采用类似的设计思路来实现“最终一致性”的。这种方式适合的业务场景广泛,而且比较可靠。不过这种方式技术实现的难度比较大

保证最终一致性的模式

查询模式

​ 任何一个服务操作都提供一个查询接口,用来向外部输出操作执行的状态。服务操作的使用方可以通过接口得知服务操作执行的状态,然后根据不同状态做不同的处理操作

为了能够实现查询,每个服务操作都需要有唯一的流水号

衰减查询 5s 10s 20s

补偿模式

​ 有了查询模式,我们就能够得知操作所处的具体状态,如果整个操作处于不正常状态,我们需要修正操作中的出现问题的子操作。也许是要重新执行,或者取消已完成的操作。通过修复使得整个分布式系统达到最终一致。这个过程就是补偿模式

根据发起形式又分为

  • 自动恢复:通过对发生失败操作的接口自动重试或者回滚已经完成的操作

  • 通知运营:如果程序无法自动完成恢复,则通过运营人员手动进行补偿

  • 通知技术:通过监控或者告警通知到技术人员,通过技术手段进行修复

X/OpenDTP模型的支付宝的DTS架构

DTS(Distributed Transaction Service)框架是由支付宝在X/OpenDTP模型的基础上改进的一个设计,定义了类似2PC的标准两阶段接口,业务系统只需要实现对应的接口就可以使用DTS的事务功能。DTS最大的特点是放宽了数据库的强一致约束,保证了数据的最终一致性。

image-20190321211256865

TCC分为三个阶段

  • TRYING(SQL事务中的LOCK):
    • 阶段主要是对业务系统做检测及资源预留
  • CONFIRMING(SQL事务中的COMMIT)
    • 主要是对业务系统做确认提交
  • CANCELING(SQL事务中的ROLLBACKTRYING)

​ CONFIRMING 阶段

​ TRYING阶段执行成功并开始执行CONFIRMING阶段时,默认 CONFIRMING阶段是不会出错的。即:只要TRYING成功,CONFIRMING一定成功。 CANCELING 阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。

​ 以上所有的操作需要满足幂等性,幂等性的实现方式可以是:

​ 1、通过唯一键值做处理,即每次调用的时候传入唯一键值,通过唯一键值判断业务是否被操作,如果已被操作,则不再重复操作

​ 2、通过状态机处理,给业务数据设置状态,通过业务状态判断是否需要重复执行

如何更通俗的理解TCC事务模型

​ 支付系统接收到会员的支付请求后,需要扣减会员账户余额、增加会员积分(暂时假设需要同步实现)增加商户账户余额会员系统、商户系统、积分系统是独立的三个子系统,无法通过传统的事务方式进行处理。

​ TRYING阶段:我们需要做的就是会员资金账户的资金预留,即:冻结会员账户的金额(订单金额)

​ CONFIRMING阶段:我们需要做的就是会员积分账户增加积分余额,商户账户增加账户余额

​ CANCELING阶段:如果confirming阶段出现问题,该阶段需要执行的就是解冻释放我们扣减的会员余额

开源的tcc框架

  • tcc-transaction

  • bytetcc

最大努力通知型

​ 相信做过支付宝交易接口都知道,我们一般会在支付宝的回调页面和接口里,解密参数,然后调用系统中更新交易状态相关的服务,将订单更新为付款成功。同时,只有当我们回调页面中输出了success字样或者标识业务处理成功相应状态码时,支付宝才会停止回调请求。否则,支付宝会每间隔一段时间后,再向客户方发起回调请求,直到输出成功标识为止。

其实这就是一个很典型的补偿例子,跟一些MQ重试补偿机制很类似。

【2024最新精简版】分布式事物面试篇 当某分支事务的try阶段阻塞时,可能导致全局事务超时而触发二阶段的cancel操作。在未执行try操作时先执行了cancel操作,这时cancel不能做回滚,就是空回滚。解决方案就是 : 执行cancel操作时,应当判断try是否已经执行,如果尚未执行,则应该空回滚。空回滚的解决方案就是保存一条空的回滚记录对于已经空回滚的业务,之前被阻塞的try操作恢复,继续执行try,就永远不可能confirm或cancel ,事务一直处于中间状态,这就是业务悬挂。 阅读详情

相关推荐

利用SPSS实现逻辑回归,树模型,以及广义线性模型

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第九章的学习记录 案例背景:分析出导致急救后迟发性颅脑损伤的主要影响因素,共有201项案例: 分析思路:先使用logistic回归模型进行影响因素筛选,然后利用分类树探索自变量中是否存在交互作用,最后利用广义线性模型过程拟合带交互项的Logistic回归模型 字段:性别,年龄,收缩压,舒张压,血小板,脑挫伤,中线位移,脑肿胀,入院意识,是否手术急救,其余急救措施,是否出现迟发性脑损伤; ...

hepan_defeng的博客 1万+

分布式事务常见解决方案整理:二阶段、三阶段、TCC、MQ+本地事务+消息校对

分布式事务常见解决方案整理:二阶段、三阶段、TCC、MQ+本地事务+消息校对

xueping_wu的博客 2134

ESP32锂电池电量检测实战:从引脚选择到低功耗优化(附完整电路图)

本文详细介绍了ESP32锂电池电量检测的实战方案,从ADC引脚选择到低功耗优化,提供完整的电路图和代码实现。通过MOS管智能开关和深度睡眠技术,显著降低静态功耗至0.5μA,提升设备续航能力。适合物联网开发者解决电量检测中的常见问题。

weixin_28731223的博客 462

分布式事务一致性解决方案学习(两段提交(2pc)、三段提交(3pc)、TCC、消息队列以及Seata四种模式)

在常规的基于关系型、支持 ACID 特性的数据库的 Spring Boot 或者 Cloud 微服务中,AT(Application Transaction)模式是一个较为适合的选择。它通过轻量级的本地事务来提高性能,并且不需要编写补偿机制。TCC(Try-Confirm-Cancel)模式适用于多种不同数据协同执行的场景,特别是当存在不支持 ACID 特性的数据库时。在 TCC 模式中,需要自行实现 try、confirm 和 cancel 三个阶段的业务逻辑,并编写相应的补偿机制来保证数据的一致性。

weixin_57392053的博客 1427

SAP Parallel Accounting(平行分类账业务)配置及操作手册【适用于多国家会计准则】

在SAP系统中,分类账(Ledger)是用于会计核算的核心概念,它允许企业根据不同的会计原则和货币进行财务记录。定义分类账是配置平行账(Parallel Accounting)的第一步。分类账的创建:通过事务代码OX18可以创建新的分类账。通常,一个SAP系统会有一个主分类账(如0L),它代表法定会计和实时传输至管理会计(CO)的账本。分类账属性:在创建分类账时,需要定义其属性,如会计年度变式、货币、会计原则等。这些属性将决定分类账的核算规则和适用性。

数字化2025 4617

独立站如何采集商品?外贸独立站采集教程

从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。8.插件“抓取任务”列表手动点同步,将商品同步到主商城后台商品管理列表(商品默认同步到下架列表中) 后台商品管理下架列表显示已同步商品。5.店铺信息修改完成后,可以开始采集商品,采集时弹窗中会自动识别当前平台及商品链接,分类和相册名称可以自定义 编辑修改。4. 打开采集目标站商品页面,点开谷歌浏览器扩展程序列表,找到Shopyy采集平台,打开配置页。打开弹窗中的“店铺管理”,添加店铺信息。

Jernnifer_mao的博客 1378

两阶段提交、三阶段提交和TCC

目录 一、2PC 1.1、提交事务请求(投票阶段) 1.2、执行事务提交 一、2PC 1.1、提交事务请求(投票阶段) 事务询问->执行事务->反馈事务询问 事务询问:由协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作 执行事务:由参与者执行事务操作,并将Undo(拒绝)和Redo(准备好,将要操作)信息记入事务日志中 反馈事务询问:由参与者给协调者反馈给协调者事务的执行结果,如果执行成功反馈YES,否者反馈NO 1.2、执行事务提交 该阶段拥有两种操作:.

CCCdingding的博客 898

BERT之提取特征向量 及 bert-as-server的使用

本文内容列表提取句向量1、句向量简介1-1传统句向量1-2、BERT句向量2、 extract_features.py源码分析2-1 main函数 前一篇文章 BERT介绍及中文文本相似度任务实践 简单介绍了使用BERT进行中文文本相似度计算的方法,这篇文章着重对特征提取方法进行讲述。 提取句向量 1、句向量简介 1-1传统句向量 更多采用word embedding的方式取加权平均,该方法的一大...

ling620的专栏 1万+

分布式事务相关 - 二阶段提交、三阶段提交、TCC、CAP、ACID、BASE

1. 前言 最近在看分布式事务,于是网上搜索相关资料,霎时间,对方给我扔来了一大堆概念,什么二阶段提交、三阶段提交、TCC补偿机制、CAP理论、ACID、BASE等等等,它们被零散地分散到各种各样的文章里。这里我根据自己所学习到的,以及所理解的方式,将这些概念放到一起谈一谈,一方面做个记录,一方面也希望可以帮助像鄙人一样的新手将这些概念有机地串连起来 2. 正片开始 话不多说,不再说那么多关于单机系统到分布式系统的介绍了,在分布式系统的设计中,有位大佬提出了CAP理论,根据CAP,也延伸出了ACID、BAS

超级小粿的空间 2964

Open3D——点云构建Delaunay三角网【2026最新版】

点云构建Delaunay三角网

点云侠的博客 8367

基于YOLOv5/v8/v10的答题卡填涂识别与评分系统(附数据集+UI界面+完整代码)

在教育信息化的大背景下,传统的手工阅卷方式正在被智能化技术所取代。答题卡识别作为标准化考试的核心环节,其准确率和效率至关重要。本文将详细介绍如何利用YOLO系列目标检测算法(YOLOv5、YOLOv8、YOLOv10)构建一个答题卡填涂识别与评分系统。文章从数据集的制作与标注开始,逐步深入到模型的训练、评估与对比,最后基于PyQt5设计了一个用户友好的桌面端UI界面,实现了从图像输入到得分输出的全流程自动化。

YOLO 635

分布式系统一致性(ACID、CAP、BASE、二段提交、三段提交、TCC、幂等性)原理详解

本文内容属于分布式事物处理范畴,强调强一致性与区块链倡导的共识一致性略有不同,主要是最近以太坊ico导致交易拥堵问题引起我的思考,是不是有可能利用已有的解决方案进行演变增加每个节点的提交时的一致性,简单来讲就是在p2p网络中实现部分强一致性,提升区块链交易性能,文中TCC就是一种演变思路,很受启发,希望有高人给予这方面的指点;本文是我寻找资料时发现的一篇不错的文章,当做扩展思路也是不错的。 国际开...

qq_40046779的博客 3169

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

分布式事物解决方案

在分布式开发中,当系统被拆分成多个模块之后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变的非常突出。本文主要介绍一下分布式开发中常用的解决方案。 常用的分布式解决方案有如下方案,基于XA协议的二阶段、三阶段提交、基于MQ消息队列的最终一致性方案,TCC、Saga,还有阿里刚开源不就的Fescar。本文主要对这些理论做介绍,后面还会对这些理论的实现方案...

u012469740的专栏 313

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SpringCloud分布式事务解决方案汇总收集

public AjaxMessageEntity userWithdraw(@RequestBody TPayInfo tPayInfo, HttpServletRequest request) { if(参数校验){ //参数校验没有通过,直接返回参数校验错误 } if(通过redis做并发控制,使同时提现人数不能...

1万+

tcc分布式事务框架解析

前言碎语 楼主之前推荐过2pc的分布式事务框架LCN。今天来详细聊聊TCC事务协议。 2pc实现:https://github.com/codingapi/tx-lcn tcc实现:https://github.com/yu199195/hmily 首先我们了解下什么是tcc,如下图 tcc分布式事务协议控制整体业务事务分为三个阶段。 try:执行业务逻辑 confir...

weixin_33725126的博客 2323

分布式事物实现方式

事物特性(acid) 原子性(A) 所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。 一致性(C) 事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后A账户一定是4...

weixin_43238751的博客 877

分布式事物

主流的分布式事物实现方式 两阶段提交 两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。 第一阶段询问,第二阶段执行。 补偿机制 TCC 其实就是程序员自己写代码维护事物回滚和补偿,补偿机制说简单点就是在代码里...

小生的博客 329

TCC事务原理

原文:https://yq.aliyun.com/articles/682871 本文主要介绍TCC的原理,以及从代码的角度上分析如何实现的;不涉及具体使用示例。本文分析的是github中开源项目tcc-transaction的代码,地址为:https://github.com/changmingxie/tcc-transaction,当然github上有多个tcc项目,但是他们原理相...

weixin_30768175的博客 119

分布式事物常见的5种解决方案

点击上方“Java之间”,选择“置顶或者星标”你关注的就是我关心的!作者:架构师速成记开篇点题本篇主要讲解原理性、概念性,希望大家对分布式事物有个简单了解,自然解决方案不...

Java之间 1343

阿里分布式事务框架Seata,AT模式原理解析

什么是分布式事务 如今在分布式技术盛行下,许多公司都已经在使用分布式技术了,虽然分布式技术给我们项目带来了三高(高可用,高扩展,高性能)等优点,但是缺点也很明显,分布式项目一般都是分服务开发,且多个服务部署在不同的服务器上,这样就产了分布式事务, 使用本地事务技术处理分布式事务就无法生效,此时就需要一个优秀的分布式事务框架来处理 分布式事务基础原理 两阶段提交(2pc)方案 两阶段提交协议(Two Phase Commitment Protocol)中,基于数据库XA协议(mysql5.0.3支持此协议),

weixin_43776652的博客 6212

常见的分布式事物解决方式

面试官:你们是如何解决分布式事务问题的? 关于分布式 分布式系统在现在的系统中越来越常见,而分布式事物问题是是分布式系统种最常见的问题之一 分布式事物剖析 分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 1、两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)...

m0_46582888的博客 276

事务提交 commit 会失败么_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理...

分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题。分布式事物常见解决方案:2PC两段提交协议3PC三段提交协议(弥补两端提交协议缺点)TCC或者GTS(阿里)消息中间件最终一致性使用LCN解决分布式事物,理念“LCN并不生产事务,LCN只是本地事务的搬运工”。一、两阶段提交(2PC)两阶段提交又称2PC,2PC是一个非常经典的强一致、中心化...

weixin_39811193的博客 379
上一篇: 单例模式详解(附代码和源码分析)-饿汉式,懒汉式,序列化破坏单例,枚举单例等多种写法
下一篇: iterm2全屏状态呼出到当前窗口
黄金时代的架构之路
博客等级 码龄12年 540粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值