关于分布式事务

分布式事务是指跨越多个分布式节点的事务操作,要求所有节点上的操作要么全部成功,要么全部失败,以保证数据的一致性。

由于分布式系统的复杂性,实现分布式事务比单机事务更具挑战性。以下是常见的分布式事务解决方案:
两阶段提交(2PC):由协调者和参与者组成,分为准备阶段和提交阶段。协调者向所有参与者发送准备请求,参与者执行事务操作并反馈结果;如果所有参与者都准备好,协调者发送提交请求,否则发送回滚请求。

原理:
第一阶段(准备阶段):协调者询问所有参与者是否可以提交事务,参与者锁定资源并回复“同意”或“拒绝”。
第二阶段(提交阶段):如果所有参与者都同意,协调者发送提交请求;否则发送回滚请求。
优点:强一致性。
缺点:
同步阻塞:参与者在等待协调者指令时会被阻塞。
单点故障:协调者故障会导致系统不可用。
性能较低:网络通信开销大。

三阶段提交(3PC):在 2PC 的基础上增加了一个预准备阶段,减少了参与者的阻塞时间,提高了系统的可用性。

原理:
在2PC的基础上增加了一个预提交阶段,减少阻塞时间。
三个阶段:CanCommit、PreCommit、DoCommit。
优点:相比2PC,减少了阻塞时间和单点故障的影响。
缺点:实现复杂,性能仍然较低。

TCC(Try-Confirm-Cancel):将事务分为三个操作,Try 阶段尝试执行事务,Confirm 阶段确认执行,Cancel 阶段取消执行。每个阶段都需要业务方自己实现。

原理:
Try:尝试执行业务逻辑,预留资源。
Confirm:确认执行业务逻辑,提交资源。
Cancel:取消执行业务逻辑,释放资源。
优点:性能较高,适合高并发场景。
缺点:需要业务逻辑支持,实现复杂。

消息队列最终一致性:通过消息队列来保证事务的最终一致性。例如,在业务操作前发送消息到消息队列,消费者消费消息后执行相应的业务操作,如果执行失败则进行重试

原理:
生产者发送事务消息到MQ,MQ暂存消息但不投递。
生产者执行本地事务并通知MQ提交或回滚消息。
MQ根据通知投递或丢弃消息。
优点:解耦性强,适合异步场景。
缺点:依赖MQ,可能存在消息丢失或重复问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值