谈谈分布式事务相关的一致性与 实战解决方案

一、分布式的一致性理论

最早加州大学伯克利分校 Eric Brewer教授提出一个分布式系
统特性的CAP理论。

1.CAP 理论的不可能三角

一致性(Consistency)

  • 可用性(Availability)
  • 分区容错性(Partition tolerance)

在分布式系统中,是不存在同时满足一致性 Consistency、可
用性 Availability和分区容错性 Partition Tolerance三者的。
一句话总结:一致性、可用性和分区容错在分布式事务中不
可兼得。在绝大多数的场景,都需要牺牲强一致性来换取系统的高可用
性,系统往往只需要保证最终一致性。这也是是后来发展出的BASE理论的基础。

2.BASE 理论
  • Basically Available(基本可用)
  • Soft state(柔软状态)
  • Eventually consistent(最终一致性)三个短语的简写。

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大
规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

二、分布式事务的解决方案

1.基于XA协议的两阶段提交 2PC(2-phase commit protocol)

XA是一个分布式事务协议,XA中大致分为两部分:事务管理
器和本地资源管理器,其中本地资源管理器往往由数据库实
现,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。

大致的流程:
第一阶段是表决阶段,所有参与者都将本事务能否成
功的信息反馈发给协调者;
第二阶段是执行阶段,协调者根据所有参与者的反
馈,通知所有参与者,步调一致地在所有分支上提交或
者回滚。

优缺点:
尽量保证了数据的强一致,实现成本较低,在各大主流数据库都有自己实现,存在单点故障问题、性能问题、跨数据库问题。

2.事务补偿TCC模式

TCC方案其实是两阶段提交的一种改进,将整个业务逻辑的每个分支显式的分成了Try、Confirm、Cancel三个操作。
Try部分完成业务的准备工作,confirm部分完成业务的提交,
cancel部分完成事务的回滚。

优缺点:
对代码有侵入性,降低了锁冲突,提高了吞吐量,缺点是有时
候并没有那么好实现。

3.消息队列最终一致性方案

通过异步解耦的方式,通过第三方中间件。
案例:RocketMQ RabbitMQ等均可实现,RocketMQ 还有专门的事
务型消息,新版的kafka也有。
总之,分布式系统中事务更多的是对CAP权衡,在实际应用
中,根据业务要求、开发人员情况以及所用框架不同进行调
整。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值