[分布式事务-TCC] 4. TCC的优化方案之一:最末参与者优化(LPO)

本文探讨了在高并发分布式事务场景中,通过最末参与者优化(LPO)减少网络调用次数,提升系统性能。该方案将发起方的一阶段和二阶段合并,使得发起方成为单阶段参与者,降低系统复杂度并减少响应时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优化动机和指导原则

当一笔分布式事务的参与者较多时,同时每个参与者都涉及到一阶段和二阶段,还有异常场景下的幂等控制,空回滚以及防资源悬挂处理,调用关系会显著复杂化。特别当业务并发量很大的情况下。比如国内领先的第三方支付场景,并发量在高峰期十分惊人。

那么如何尽可能地提高分布式事务的性能就是一个值得深入思考的问题。

其实优化的原则也很直观:在能够满足业务诉求,保证各个参与方数据能够达成最终一致性的前提下,在下面两个方面努力:

  1. 增加系统的整体吞吐量
  2. 减少最终响应给终端用户的响应时间

那么反应在系统设计上,就是要想方设法减少网络调用的次数以及尽可能地降低每次调用的耗时。

没有调用就没有伤害。

在复杂的分布式网络环境下,减少一次非必要的调用很可能就可以显著地降低系统的整体复杂度。毕竟,调用即意味着耦合,无论是单体系统还是分布式系统,降低组件和系统间的耦合性都是我们孜孜不倦追求的目标。

最末参与者优化(LPO)

首先,我们就来看看名为最末参与者优化 - Last Participant Optimization的方案。它旨在减少分布式事务中的网络调用次数。

以之前跨行转账分布式事务的场景为例,看看这里存在的潜在问题:

在这里插入图片描述
可以看到,银行A既是分布式事务的发起方,同时它还是参与方之一。所以当银行A完成对银行B的一阶段调用成功之后,马上会开始自己的一阶段调用。如果都成功了,就会通知TC可以执行二阶段了。TC发起各个参与者的二阶段Commit。

我们来仔细观察一下事务发起方,参与者A的执行特点。

当参与者A的一阶段成功执行完成后,意味着分布式事务整体就可以进入到二阶段。TC会触发参与者A和参与者B的二阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值