分布式事务简单记录之2PC和3PC(一)

198 阅读2分钟

1.1 CAP原则介绍(来自百度百科)

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  • 因此,我们对分布式系统的要求一般都只能兼顾以上两种,常见的方案是CP和AP。

img

图片来自百度百科

1.2 分布式一致性算法:2PC和3PC协议

1.2.0 概括

  • 为了确保多服务的事务一致性——要么全部成功,要么全部回滚,我们引入了一致性算法

1.2.1 2PC(二阶段提交,Two-phase commit protocol)

  • 整体结构比较简单,由事务协调者参与者组成。分为准备和提交两个阶段:

    准备阶段

    由事务协调者接收事务请求,发送准备提交的通知给所有参与者,若所有参与者成功接收到通知,确定是否能够参与提交和回滚(开启事务),并返回结果给协调者。若所有参与者成功返回结果的通知,则进入下一阶段——提交阶段。否则超时,终止事务。

    提交阶段

    如果存在参与者返回的通知表示无法准备资源,则协调者将发送一个回滚的通知给所有的参与者。否则,发送提交的通知。

  • 2PC存在的弊端:

    ① 如果存在参与者因网络延时等情况,迟迟无法返回结果通知,将产生阻塞

    ② 若出现单点故障,则事务将无法继续

1.2.2 3PC(三阶段提交,Three-phase commit protocol )

  • 可视为2PC的升级版本,将2PC的第一阶段进行了拆分,并引入了超时机制,大致流程:

    CanCommit阶段

    CanCommit阶段,协调者询问所有参与者,能否进行事务提交,都没问题的话,则进入PreCommit阶段。

    PreCommit阶段

    通知所有参与者准备提交(开启事务),协调者在这一阶段接收到所有响应之后进入doCommit阶段。

    doCommit阶段

    如果CanCommit阶段存在否定的响应或超时未接收到参与者的响应,以及PreCommit阶段出现了同样的情况,则协调者将向所有参与者发送abort请求,终止事务。否则,通知所有参与者提交事务。

  • 注意:在PreCommit阶段完成后,在进入doCommit阶段之前,若参与者迟迟没有接收到协调者的commit请求,会超时,自动提交事务,这点有别于2PC中,只有协调者才存在的超时机制。