分布式事务执行逻辑

  用于执行分布式事务的过程使用两阶段提交,发生时间在由分布式事务的各个分支需要
进行的行动已经被执行之后。
  在第一阶段,所有的分支被预备好。即它们被 TM 告知要准备提交。通常,这意味
着用于管理分支的每个 RM 会记录对于被稳定保存的分支的行动。分支指示是否它们可以这
么做。这些结果被用于第二阶段。
  在第二阶段,TM 告知 RMs 是否要提交或回滚。如果在预备分支时,所有的分支指
示它们将能够提交,则所有的分支被告知要提交。如果在预备时,有任何分支指示它将不能
提交,则所有分支被告知回滚。
在有些情况下,一个分布式事务可能会使用一阶段提交。例如,当一个事务管理器发现,
一个分布式事务只由一个事务资源组成(即单一分支),则该资源可以被告知同时进行预备
和提交。

原文地址:https://www.cnblogs.com/tiankc/p/9652691.html

时间: 2024-10-03 14:45:27

分布式事务执行逻辑的相关文章

java事务(三)——自己实现分布式事务

在上一篇<java事务(二)——本地事务>中已经提到了事务的类型,并对本地事务做了说明.而分布式事务是跨越多个数据源来对数据来进行访问和更新,在JAVA中是使用JTA(Java Transaction API)来实现分布式的事务管理的.但是在本篇中并不会说明如何使用JTA,而是在不依赖其他框架以及jar包的情况下自己来实现分布式事务,作为对分布式事务的一个理解. 假设现在有两个数据库,可以是在一台机器上也可以是在不同机器上,现在要向其中一个数据库更新用户账户信息,另外一个数据库新增用户的消费信

还不理解“分布式事务”?这篇给你讲清楚!

这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理.总结和比较. 相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”.“3PC”.“MQ的消息事务”.“最终一致性”.“TCC”等这些知识碎片,而是能够将知识连成一片,形成知识体系. 什么是事务 介绍分布式事务之前,先介绍什么是事务. 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正

从一笔金币充值去思考分布式事务

此次分享的缘由 支付重构 考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理.拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户服务.原本收到充值回调后,可以将修改订单状态和增加金币放在一个mysql事务中完成的,但是呢,因为服务拆分了,就面临着需要协调2个服务才能完成这个事务 所以就带出来,我们今天要分享和讨论的话题是:怎么解决分布式场景下数据一致性问题,暂且用分布式事务 来定义吧. 同样的问题还存在于其他的

一文解读分布式事务 (转)

这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理.总结和比较. 相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”.“3PC”.“MQ的消息事务”.“最终一致性”.“TCC”等这些知识碎片,而是能够将知识连成一片,形成知识体系. 什么是事务 介绍分布式事务之前,先介绍什么是事务. 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正

一文看懂分布式事务

本地事务 事务Transaction由一组SQL组成,具有四个ACID特性 ACID Atomicity 原子性 构成事务的一组SQL,要么全部生效,要么全不生效,不会出现部分生效的情况 Consistency 一致性 数据库经过事务操作后从一种状态转变为另一个状态.可以说原子性是从行为上描述,而一致性是从结果上描述 isolation 隔离性 事务操作的数据对象 相对于 其他事务操作的数据对象相互隔离,互不影响 durability 持久性 事务提交后,其结果就是永久性的,即使发生宕机(非磁盘

[转帖]如何选择分布式事务形态(Fescar、TCC、SAGA、补偿、基于消息的最终一致

如何选择分布式事务形态(Fescar.TCC.SAGA.补偿.基于消息的最终一致 https://blog.csdn.net/zhangjunli/article/details/100015236 各种形态的分布式事务分布式事务有多种主流形态,包括: 基于消息实现的分布式事务基于补偿实现的分布式事务基于TCC实现的分布式事务基于SAGA实现的分布式事务基于2PC实现的分布式事务这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重

使用Atomikos实现JTA分布式事务

使用Atomikos实现JTA分布式事务 在这篇文章中: 1.1 JTA事务模型 2 JTA规范接口 3 Atomikos分布式事务 本文全面的介绍了JTA分布式事务模型和接口规范,以及开源的分布式事务解决方案Atomikos.笔者认同"talk is cheap,show me the code",因此在文章最后,给出一个完整的Atomikos与spring.mybatis整合的完整案例. 1 JTA规范 Java事务API(JTA:Java Transaction API)和它的同

Spanner分布式事务

Spanner要满足的external consistency 是指:后开始的事务一定可以看到先提交的事务的修改.所有事务的读写都加锁可以解决这个问题,缺点是性能较差.特别是对于一些workload中只读事务占比较大的系统来说不可接受.为了让只读事务不加任何锁,需要引入多版本.在单机系统中,维护一个递增的时间戳作为版本号很好办.分布式系统中,机器和机器之间的时钟有误差,并且误差范围不确定,带来的问题是如何给一个只读事务赋予一个时间戳作为版本号.Spanner通过原子钟和GPS解决了这个误差范围不

分布式事务实现-Spanner

Spanner要满足的external consistency 是指:后开始的事务一定可以看到先提交的事务的修改.所有事务的读写都加锁可以解决这个问题,缺点是性能较差.特别是对于一些workload中只读事务占比较大的系统来说不可接受.为了让只读事务不加任何锁,需要引入多版本.在单机系统中,维护一个递增的时间戳作为版本号很好办.分布式系统中,机器和机器之间的时钟有误差,并且误差范围不确定,带来的问题就是很难判断事件(在本文,事件指分布式事务版本号)发生的前后关系.反应在Spanner中,就是很难