美文网首页
面试篇:分布式事务

面试篇:分布式事务

作者: 文大奇Quiin | 来源:发表于2020-05-29 21:07 被阅读0次

    1. 分布式理论

    1.1 CAP定理

    CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

    一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。

    可用性(A):在集群中一部分节点故障后,群体整体是否还能响应客户端的读写请求。

    分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

    1.2 BASE理论

    BASE理论,它是对CAP定理进行进一步扩充。Base理论是对 CAP 中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,其核心思想是:既然无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

    Basically Available(基本可用):假设系统出现了故障,依然可用,但相比较正常的系统而言:响应时间上的损失、功能上的损失。

    Soft state(软状态):允许系统在多个不同节点的数据副本存在数据延时。

    Eventually consistent(最终一致性):软状态不可能一直处于软状态,必须有个时间期限。在期限过后,应当保证所有副本数据的一致性,从而达到数据的最终一致性。这个时间期限取决于网络延时、系统负载、数据复制方案设计等等因素。

    2. 分布式事务解决方案

    2.1 基于XA协议的两阶段提交

    2.1.1 工作原理

    交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第二阶段是执行阶段,协调者根据所有参与者的反馈,通知所有参与者,步调一致地在所有分支上提交或者回滚。

    2.1.2 优缺点

    两阶段提交方案应用非常广泛,几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。

    2.2 TCC

    2.2.1 工作原理

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

    TCC

    开启事务时,业务应用会向事务协调器注册启动事务。之后业务应用会调用所有服务的try接口,完成准备阶段。之后事务协调器会根据try接口返回情况,决定调用confirm接口或者cancel接口。如果接口调用失败,会进行重试。

    2.2.2 优缺点

    TCC方案让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。当然TCC方案也有不足之处,集中表现在以下两个方面:

    对应用的侵入性强。业务逻辑的每个分支都需要实现try、confirm、cancel三个操作,应用侵入性较强,改造成本高。

    实现难度较大。需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。为了满足一致性的要求,confirm和cancel接口必须实现幂等。

    2.3 基于消息的最终一致性

    消息一致性方案是通过消息中间件保证上、下游应用数据操作的一致性。基本思路是将本地操作和发送消息放在一个事务中,保证本地操作和消息发送两者都成功或者都失败。下游应用向消息系统订阅该消息,收到消息后执行相应操作。

    基于消息的最终一致性

    消息一致性方案从本质上讲是将分布式事务转换为两个本地事务,然后依靠下游业务的重试机制达到最终一致性。基于消息的最终一致性方案对应用侵入性也很高,应用需要进行大量业务改造,成本较高。

    相关文章

      网友评论

          本文标题:面试篇:分布式事务

          本文链接:https://www.haomeiwen.com/subject/jwvfzhtx.html