1.1 CAP原则介绍(来自百度百科)
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
- 因此,我们对分布式系统的要求一般都只能兼顾以上两种,常见的方案是CP和AP。
图片来自百度百科
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中,只有协调者才存在的超时机制。