分布式事务原子性之2PC,XA,TCC协议及其区别

分布式事务原子性之2PC,XA,TCC协议及其区别1 目的本地事务(单机)基于ACID原则,那么在分布式环境下,如何保证多事务的一致性?本文将介绍两阶段提交协议和基于两阶段思想的XA协议,TCC协议,用于解决分布式事务中的原子性。2 面向数据库领域的二阶段提交协议2PC,面向数据库领域简介:分为准备和提交两个阶段。准备阶段,协调组询问所有参与者是否准备好了。对于数据库来说,准备操作是在重做日志中记录全部事务提交操作所要做的内容,它与本地事务中真正提交的区别只是暂不写入最后一条 Commit
摘要由CSDN通过智能技术生成

分布式事务原子性之2PC,XA,TCC协议及其区别

1 目的

本地事务(单机)基于ACID原则,那么在分布式环境下,如何保证多事务的一致性?本文将介绍两阶段提交协议和基于两阶段思想的XA协议,TCC协议,用于解决分布式事务中的原子性。

2 面向数据库领域的二阶段提交协议

  • 2PC,面向数据库领域
  • 简介:分为准备和提交两个阶段。
    • 准备阶段,协调组询问所有参与者是否准备好了。对于数据库来说,准备操作是在重做日志中记录全部事务提交操作所要做的内容,它与本地事务中真正提交的区别只是暂不写入最后一条 Commit Record。这意味着在做完数据持久化后并不会立即释放隔离性,也就是仍继续持有锁,维持数据对其他非事务内观察者的隔离状态
    • 执行阶段,如果所有参与者都回复准备好了,协调者就向所有参与者发送执行命令;如果有一个参与者回复没准备好,协调者就向所有参与者发送撤销命令。
  • 二阶段提交是CAP中偏向ACID中C的协议,它要求要么全部执行,如果有一个节点失效,就全部不执行,是很强的一致性要求。
  • 优点:
    • 尽量保证了数据的强一致性
    • 借助了数据库的提交和回滚操作,不侵入业务逻辑
  • 缺点:
    • 单点故障问题,协调者挂了,尤其在第二阶段的时候参与者资源都锁着时候影响更大。
    • 同步阻塞,所有节点在执行时是同步阻塞的
    • 数据不一致问题,例如网络分
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值