美文网首页
三阶段提交协议

三阶段提交协议

作者: 想做安徒生 | 来源:发表于2018-06-30 11:04 被阅读0次

一.三阶段提交协议过程介绍
在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段拆分成了两步:询问,然后再锁资源,最后真正提交。三阶段提交协议顾名思义,分为三个阶段:申请询问阶段(canCommit)、执行阶段(PreCommit)、提交阶段(doCommit)

1.申请询问阶段
提交一个包含事务内容的申请给参与者,询问参与者是否可以执行事物。如果回复OK则进行下一个阶段

image.png

2.执行&预提交阶段-根据阶段一的结果有两种情况
(1)阶段一参与者反馈都是ok,则各参与者执行事物操作 并记录redo、undo日志后,反馈协调者ack,然后等到指令(commit or abort)
(2)阶段一任一参与者反馈NO,或者与协调者发生网络异常,协调者超时等待,协调者将发送 abort请求,进入中断事务流程,无论是参与者收到abort请求,还是等待协调者超时,都会自动进行中断事务

3.执行真正的事物提交-根据阶段二的结果需要执行提交事物
(1)根据阶段二的结果需要执行提交事物,协调者发送commit指令,进入真正的提交事务阶段,释放资源,参与者完成事物后反馈ack给协调者
(2) 协调者正常工作时,任意参与者反馈no或者 协调者等待超时,将会进行中断事务操作(发出abort指令,参与者执行undo日志,回滚后释放资源

(3)在阶段三,参与者等待网络超时都将继续执行commit

二、三阶段提交协议和两阶段提交协议的不同

(1)对于协调者(Coordinator)和参与者(Cohort)都设置了超时机制(在2PC中,只有协调者拥有超时机制,即如果在一定时间内没有收到cohort的消息则默认失败)。

(2)在2PC的准备阶段和提交阶段之间,插入预提交阶段,使3PC拥有CanCommit、PreCommit、DoCommit三个阶段。

(3)PreCommit是一个缓冲,保证了在最后提交阶段之前各参与节点的状态是一致的。

三.三阶段提交协议的缺点

如果进入PreCommit后,Coordinator发出的是abort请求,假设只有一个Cohort收到并进行了abort操作,

而其他对于系统状态未知的Cohort会根据3PC选择继续Commit,此时系统状态发生不一致性。

相关文章

  • 两阶段提交协议(2PC)、三阶提交协议(3PC)

    两阶段提交协议(2PC)、三阶提交协议(3PC) 2PC 二阶段提交协议是将事务的提交过程拆分为两个阶段来执行,分...

  • 分布式事务

    对分布式事务及两阶段提交、三阶段提交的理解 关于分布式事务、两阶段提交协议、三阶提交协议

  • sourceTree问题汇总

    使用ssh协议提交失败,切换回https协议提交就好了。 修改仓库协议地址,如下图:菜单栏仓库 选中路径就可以编辑...

  • 分布式事务

    目录 简介 单一分布式事务与嵌套分布式事务 原子提交协议两阶段提交协议嵌套事务的两阶段提交协议 分布式事务的并发控...

  • 分布式事务:Saga - 数据一致性

    分布式事务实现方式 主要有二阶提交协议(Two Phase Commitment Protocol)、三阶提交协议...

  • OAuth2.0和SSO授权

    一、OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务...

  • OAuth2.0和SSO授权

    一、OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务...

  • 分布式-3PC

    协议定义 三阶段提交(Three-phase commit),也叫三阶段提交协议(Three-phase comm...

  • 一致性协议之三阶段提交

    原文地址:《一致性协议之三阶段提交》 在上一篇文章《一致性协议之二阶段提交》中介绍了二阶段提交协议的设计和原理,也...

  • 分布式事务

    XA分布式事务协议 - 两阶段提交 & 三阶段提交 两阶段提交 两阶段提交存在的缺点 三阶段提交

网友评论

      本文标题:三阶段提交协议

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