【分布式原理】分布式事务之2PC、3PC、TCC、本地消息表和消息事务

【分布式原理】分布式事务2PC、3PC、TCC、本地消息表、消息事务

什么是分布式事务?

​ 事务的定义就是一个大的操作由小的操作组成,要保证一些列操作要么全部成功要么全部失败,失败后回滚到之前的状态。

​ 在传统单机上面,整个事务都是在本机运行,如果出现了错误,很容易就能检测到并且回滚,但是在分布式中,逻辑可能是多个机器共同完成的,中间是通过远程协作来完成,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。

举个例子:

如电商的下单扣库存操作,整体事务逻辑大概是扣库存,扣余额,创建订单,假如是分布式系统并且都是不同的服务,由于网络问题,先扣库存,然后再去余额服务扣库存,扣完后调用没有返回或者余额服务器宕机了,这时候侯库存会回滚,但是余额已经被扣了,导致出错。

数据库事务特性ACID

  1. 原子性(Atomicity): 事务是最小的执行单位。事务的原子性确保动作要么全部完成,要么完全不起作用;

  2. 一致性(Consistency): 执行事务后,数据库从一个正确的状态变化到另一个正确的状态;

  3. 隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;

  4. 持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

分布式事务2PC

​ 2PC (two phase commit)两阶段提交协议。从名字就知道分为两个阶段。

在该分布式系统中,存在一个节点作为协调者(Coordinator),其他节点作为参与者(Participants)。

事务的具体流程

第一阶段:提交请求阶段:

  1. 事务询问:协调者向所有参与者发出事务询问,询问是否可以执行事务操作,并等待各参与者的响应。
  2. 执行事务:各个参与者节点执行事务操作,并将undo和r
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,它通过将一个事务拆分成三个阶段(Try、Confirm、Cancel)来保证事务的一致性。而在分布式环境下,TCC通常使用3PC协议来实现。 3PC(Three-Phase Commit)协议是一种常用的分布式事务协议,它将一个分布式事务分为三个阶段(CanCommit、PreCommit、DoCommit),并通过协调者(Coordinator)和参与者(Participant)之间的消息交换来实现事务的原子性和一致性。 具体来说,TCC使用的3PC协议流程如下: 1. CanCommit 阶段:协调者向参与者发送CanCommit请求,询问参与者是否可以执行该事务。如果参与者可以执行,则发送Yes响应,否则发送No响应。 2. PreCommit 阶段:协调者向参与者发送PreCommit请求,告诉参与者可以执行该事务,并让它准备好提交或撤销事务。如果参与者准备好了,则发送Ack响应。 3. DoCommit 阶段:协调者向参与者发送DoCommit请求,告诉参与者提交该事务。如果参与者成功提交了事务,则发送Ack响应,否则发送Abort响应。 如果任何一个阶段出现问题,协调者会向参与者发送Cancel请求,撤销事务。 需要注意的是,在TCC中,Try阶段和Cancel阶段由应用程序自己来实现,3PC协议主要用于Confirm和DoCommit阶段的协调。此外,由于3PC协议的复杂性和性能问题,TCC并不适用于所有的分布式事务场景,开发者需要根据具体的业务需求来选择合适的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值