分布式事务

kyleinjava kyleinjava     2022-12-25     315

关键词:

一、什么是事务?事务的特性

  1.事务的单个逻辑单元执行一系列操作要么全部成功要么全部失败。

  2.事务有四个特性,分别是ACID。

    Atomic:原子性      事务中的各项操作要么全部做,要么全部不做,任何一项操作的失败都会导致整个事务的失败。

    Consistent:一致性     事务结束后系统状态是一致的。

    Isolate:隔离性      并发执行的事务彼此无法看到对方的中间状态。

    Durable:持久性       事务完成后所做的改动都会被持久化,即使发生灾难性的失败,通过日志和同步备份可以在故障发生后重建数据。

  

二、当事务并发时,出现的问题 

  1.第一类更新丢失:A事务撤销时,把B事务已经提交更新的数据给覆盖了。

  2.脏读:A事务读取到了B事务还没有提交更新的数据。

  3.不可重复读:事务A读取到了事务B提交的更新(update和delete)数据。(如果要避免不可重复读就要锁行)

  4.幻读:事务A读取到了事务B新插入(insert)的数据。(如果要避免幻读就要锁表)

  5.第二类更新丢失:A事务提交更新的数据,将B事务提交更新的数据覆盖了。

 

三、事务的隔离级别

      事务的隔离级别越高,并发性越差

      技术分享图片

 

四、什么是分布式事务?

  分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。由于业务的过于庞大,很多系统都被拆成多个服务和数据库。如果一个操作需要多个服务和数据库来共同执行,但是单个的事务只能作用于一个数据库,这样就需要应用分布式事务来保证数据的一致性。常见的例子就是

 

五、现行的分布式事务方案。

  1.基于XA协议的两阶段提交方案

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

  两阶段提交方案应用很广泛,但是性能不是很好,比较耗时间。XA是一个分布式协议,其大致分为两个部分,事务协调器和本地资源管理器。本地资源管理器是由数据库实现,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。mysql对AX的支持不是很理想。

  技术分享图片

 

 

  2.TTC方案

    TTC方案是两段式提交的一种改进,在电商和金融领域应用的比较多。其将整个业务逻辑的每个分支显式的分成了Try、Confirm、Cancel三个操作。Try部分完成业务的准备工作,confirm部分完成业务的提交,cancel部分完成事务的回滚。

    事务开始时,业务应用会向事务协调器注册启动事务。之后业务应用会调用所有服务的try接口,完成一阶段准备。之后事务协调器会根据try接口返回情况,决定调用confirm接口或者cancel接口。如果接口调用失败,会进行重试。

    TTC对业务代码的入侵性比较强,且开发难度比较大。

    基本原理如下图所示。

    技术分享图片

 

 

  3.基于消息的最终一致性方案

    基于消息的最终一致性方案就是保证本地操作和发送消息在一个事务中,其他服务通过订阅消息来进行相应的数据库操作,以达到数据的最终一致性。

    技术分享图片

 

分布式事务介绍

一、概念  分布式事务就是将多个节点的事务看成一个整体处理 分布式事务由事务参与者、资源服务器、事务管理器等组成   常见的分布式事务的例子:支付、下订单等 二、实现思路两段式事务和三段式事... 查看详情

分布式事务解决方案——柔性事务与服务模式

在分布式系统中,是无法使用本地事务保证数据的一致性的。一种标准的分布式事务就是全局事务(DTP模型)。他是基于2PC来控制的。但是由于2PC自身就存在同步阻塞的问题,这也就导致全局事务效率很低。所以,这种全局事务... 查看详情

分布式事务就是由多个本地事务组合而成的事务

...,我们常说的事务一般都是指单机事务,即本地事务。那分布式事务是什么?分布式事务就是由多个本地事务组合而成的事务,一般在分布式场景下才会出现。比如电商平台中,我们在购物的时候,下单支付这个过程看上去是一... 查看详情

分布式事务和事务并发控制

近期阿里开源了Fescar分布式事务中间件,值得期待. 分布式事务是指一个事务会涉及到到多个应用接口调用,底层数据表涉及到多个,但数据库可以是一个或多个,它是传统单数据库事务在广度上的延伸. 事务并发控制,在OLTP关... 查看详情

深入理解分布式事务

...据库本身保证的。今天,我将介绍一种比较复杂的事务:分布式事务。1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布 查看详情

分布式事务

分布式事务1.什么是分布式事务?分布式事务就是要在分布式系统中实现事务,而在分布式系统中分布式事务其实是由多个本地事务组成的。2.分布式事务特性(1)Consistency(一致性):“allnodesseethesamedataatthesamet... 查看详情

分布式事务

分布式事务1.什么是分布式事务?分布式事务就是要在分布式系统中实现事务,而在分布式系统中分布式事务其实是由多个本地事务组成的。2.分布式事务特性(1)Consistency(一致性):“allnodesseethesamedataatthesamet... 查看详情

分布式事务

 学习一下分布式事务。 这篇文章尽可能的压缩篇幅,不做过多的介绍,像什么是事务就不介绍了。 # # 什么是分布式事务 分布式事务一定来源于多数据源。如果只有一个数据源,也就不存在什么分布式事... 查看详情

分布式事务资料

分布式事务之TCC服务设计和实现注意事项事务自动补偿方案这个需求我不接之事务自动补偿蚂蚁金服黑科技:SOFADTX分布式事务,保障亿级资金操作一致性分布式事务:蚂蚁金服核心金融场景下的演进分布式系统的事务处理分布... 查看详情

分布式事务分布式事务解决方案

一、第一种方案:能不用分布式事务就不用明确系统是否真的需要分布式事务;因为不论任何一种分布式解决方案都会增加你系统的复杂度,这样的成本还是挺高的,千万不要因为追求某些设计,而引入不必要的成本和复杂度。... 查看详情

分布式事务——分布式事务简介分布式事务框架seata(at模式tcc模式tccvsat)分布式事务—mq(代码片段)

分布式事务——分布式事务简介、分布式事务框架Seata(AT模式、Tcc模式、TccVsAT)、分布式事务——MQ一、分布式事务简介如果不是分布式环境的话一般不会接触到这种,一旦是微服务这种,分布式事务是必须要处... 查看详情

学习笔记事务与分布式事务

...本地事务是在单个数据源上进行数据的访问和更新,分布式系统下由不同服务之间通过网络远程协作完成的事务被称为分布式事务。分布式事务的应用场景:微服务架构之间,即多服务器访问多数据库实例单体系统访... 查看详情

聊聊分布式事务

聊聊分布式事务2017-04-15 数据库开发(点击上方公众号,可快速关注) 作者:员海滨nickid.cn/2017/04/分布式事务/如有好文章投稿,请点击 →这里了解详情 分布式事务场景如何设计系统架构及解决数据一致性问题,... 查看详情

分布式事务中间件seata理论详解

简介Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。Seata的设计思路是将一个分布式事务理解成一个全... 查看详情

分布式事务(代码片段)

title:分布式事务tags:[分布式事务]date:2020/1/1620:26:25categories:java分布式事务基础概念本地事务关系型数据库,ACID产生分布式的场景分布式服务(跨网络),单应用分布式数据库(多数据源),跨jvm服务传统分布式事务模型产品模型... 查看详情

设计----分布式事务分布式事务和解决方案(代码片段)

一、前言分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。二、数据库事务在说分布式事务之前... 查看详情

分布式事务xa

1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,... 查看详情

搞懂分布式技术17,18:分布式事务总结

搞懂分布式技术17:浅析分布式事务众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据... 查看详情