分布式理论(四) - 3PC协议

前言

因为二阶段提交存在着诸如同步阻塞、单点问题、脑裂等缺陷。因此,研究者们在二阶段提交的基础上作了改进,提出了三阶段提交。算法

与两阶段提交不一样的是,三阶段提交有两个改动点。编程

  1. 引入超时机制 - 同时在协调者和参与者中都引入超时机制。
  2. 在第一阶段和第二阶段中插入一个准备阶段,保证了在最后提交阶段以前各参与节点的状态是一致的。

正文

1. 三阶段提交的定义

三阶段提交(Three-phase commit),也叫三阶段提交协议(Three-phase commit protocol),是二阶段提交(2PC)的改进版本。后端

所谓的三个阶段分别是:询问,而后再锁资源,最后真正提交。缓存

  • 第一阶段:CanCommit
  • 第二阶段:PreCommit
  • 第三阶段:Do Commit

2. 三阶段提交的过程

2.1. 阶段一:CanCommit

3PC的CanCommit阶段其实和2PC的准备阶段很像。协调者向参与者发送commit请求,参与者若是能够提交就返回Yes响应,不然返回No响应。网络

a. 事务询问多线程

协调者向参与者发送CanCommit请求。询问是否能够执行事务提交操做。而后开始等待参与者的响应。架构

b. 响应反馈框架

参与者接到CanCommit请求以后,正常状况下,若是其自身认为能够顺利执行事务,则返回Yes响应,并进入预备状态;不然反馈No。异步

2.2. 阶段二:PreCommit

协调者在获得全部参与者的响应以后,会根据结果执行2种操做:执行事务预提交,或者中断事务。分布式

2.2.1. 执行事务预提交

a. 发送预提交请求

协调者向全部参与者节点发出 preCommit 的请求,并进入 prepared 状态。

b. 事务预提交

参与者受到 preCommit 请求后,会执行事务操做,对应 2PC 准备阶段中的 “执行事务”,也会 Undo 和 Redo 信息记录到事务日志中。

c. 各参与者响应反馈

若是参与者成功执行了事务,就反馈 ACK 响应,同时等待指令:提交(commit) 或终止(abort)。

2.2.2. 中断事务

a. 发送中断请求

协调者向全部参与者节点发出 abort 请求 。

b. 中断事务

参与者若是收到 abort 请求或者超时了,都会中断事务。

2.3. 阶段三:Do Commit

该阶段进行真正的事务提交,也能够分为如下两种状况。

2.3.1. 执行提交

a. 发送提交请求

协调者接收到各参与者发送的ACK响应,那么他将从预提交状态进入到提交状态。并向全部参与者发送 doCommit 请求。

b. 事务提交

参与者接收到 doCommit 请求以后,执行正式的事务提交。并在完成事务提交以后释放全部事务资源。

c. 响应反馈

事务提交完以后,向协调者发送 ACK 响应。

d. 完成事务

协调者接收到全部参与者的 ACK 响应以后,完成事务。

2.3.2. 中断事务

协调者没有接收到参与者发送的 ACK 响应(多是接受者发送的不是ACK响应,也可能响应超时),那么就会执行中断事务。

a. 发送中断请求

协调者向全部参与者发送 abort 请求。

b. 事务回滚

参与者接收到 abort 请求以后,利用其在阶段二记录的 undo 信息来执行事务的回滚操做,并在完成回滚以后释放全部的事务资源。

c. 反馈结果

参与者完成事务回滚以后,向协调者发送 ACK 消息。

d. 中断事务

协调者接收到参与者反馈的 ACK 消息以后,完成事务的中断。

3. 小结

3.1. 三阶段提交的优势

相对于二阶段提交,三阶段提交主要解决的单点故障问题,并减小了阻塞的时间。

由于一旦参与者没法及时收到来自协调者的信息以后,他会默认执行 commit。而不会一直持有事务资源并处于阻塞状态。

3.2. 三阶段提交的缺点

三阶段提交也会致使数据一致性问题。因为网络缘由,协调者发送的 abort 响应没有及时被参与者接收到,那么参与者在等待超时以后执行了 commit 操做。

这样就和其余接到 abort 命令并执行回滚的参与者之间存在数据不一致的状况。

相关连接

  1. 分布式理论(一) - CAP定理
  2. 分布式理论(二) - BASE理论
  3. 分布式理论(三) - 2PC协议
  4. 分布式理论(四) - 3PC协议
  5. 分布式理论(五) - 一致性算法Paxos
  6. 分布式理论(六) - 一致性协议Raft

欢迎扫码关注公众号:零壹技术栈

image

本账号将持续分享后端技术干货,包括虚拟机基础,多线程编程,高性能框架,异步、缓存和消息中间件,分布式和微服务,架构学习和进阶等学习资料和文章。

相关文章
相关标签/搜索