参考《大数据日知录》

2PC与3PC场景

这两者是常用解决分布式事物的方式,保证在分布式事物中要么都提交事物,要么都取消事物。

二段式提交(2PC)

主要有两个阶段:

  1. 准备阶段
  2. 提交阶段

主要步骤如下:
4. 步骤一,协调者询问参与者是否可以提交。
5. 步骤二,参与者告知提交者可以提交。
6. 步骤三,协调者让参与者发送提交请求。
7. 步骤四,参与者提交完毕后告知协调者已经提交完毕。

二段式提交的问题

在上面步骤三中,如果协调者发送提交请求给了一半的参与者之后就出了问题,那么就会出现有长时间阻塞的情况。

打个比方,上图中参与者2和3收到了提交请求,但是4和5没有收到提交请求,这时候4和5就会进入阻塞状态,等待协调者恢复后发送提交请求给它。

如果在很长时间后协调者还是没有发送提交请求给它,那么会认为协调者无法恢复,会重新选出一个协调者来进行事物提交。
在这种极端差的情况下,2和3已经提交的事物是需要回滚的。

三段式提交(3PC)

三段式提交是二段式提交的改进,主要就是为了解决二段式提交长时间阻塞的问题。
实现上,主要是加入了一个“预提交阶段”。

主要有三个阶段:

  1. 准备阶段
  2. 预提交阶段(下面的步骤三和步骤四)
  3. 提交阶段

主要步骤如下:

  1. 步骤一,协调者询问参与者是否可以提交。
  2. 步骤二,参与者告知提交者可以提交。
  3. 步骤三,如果所有参与者都可以提交,协调者会将这个信息告知参与者。
  4. 步骤四,单个参与者知道所有参与者都准备完毕可以提交,向协调者发送“预提交”请求。
  5. 步骤五,协调者让参与者发送提交请求。
  6. 步骤六,参与者提交完毕后告知协调者已经提交完毕。

在三段式提交情况下,如果在预提交阶段出现了协调者宕机的情况,是不需要回滚事物的。
如果是在提交阶段出现了协调者宕机的情况,可以通过时延来自动提交。(因为可以确定其他参与者也会提交,一致性就得以保证)

两者比较

3PC与2PC相比,主要是保证了在“协调者”单点故障情况下参与者的一致性。
但是并不能保证整个系统的一致性,如果是”参与者“故障还是会存在长时间阻塞的情况。

目前3PC在实际系统中很少使用,主要原因有如下两点:

  1. 2PC中由于”协调者“单点故障出现长时阻塞的情况很少出现。
  2. 由于3PC多引入了一个阶段,因此”协调者“与”参与者“之间多了一层通讯,效率与2PC相比太低。

二段式提交协议和三段式提交协议(2PC和3PC)相关推荐

  1. 网络协议(三) HTTP协议

    网络协议(三) HTTP协议 1. HTTP协议简介 2. HTTP协议基础 2.1 TCP/IP协议 5. HTTP协议 5.1 HTTP简介 5.2 HTTPS 简介 5.3 HTTPS 和HTT ...

  2. 什么是计算机网络协议叙述协议的三要素,网络协议的含义及三要素是什么

    什么是网络协议?相信很多人都会疑惑,下面是小编整理的一些关于网络协议的相关资料,供你参考. 网络协议介绍 网络协议为计算机网络 中进行数据交换而建立的规则.标准或约定的集合.例如,网络中一个微机用户和 ...

  3. 密码协议(三)裁决协议和自动执行协议

    2019独角兽企业重金招聘Python工程师标准>>> 区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:于中阳 来源:区块链兄弟 原文链接:http:// ...

  4. IP协议(三) IPv6协议

    IPv6 IPv4地址空间耗尽,需要更大的地址空间 改变其首部,使其可以快速转发数据报 IPv6数据报格式 1.IPv6基本首部 首部长度改为固定的40字节,称为基本首部 取消了服务类型字段 取消了检 ...

  5. 二阶段提交,三阶段提交,Paxos

    本文转载自:http://blog.csdn.net/u010191243/article/details/52081891 http://blog.chinaunix.net/uid-1672327 ...

  6. Verilog描述有限状态机(一段式、二段式、三段式)

    有限状态机(FSM)的输出取决于过去状态以及当前输入,是时序逻辑电路.适合描述那些发生有先后顺序或者有逻辑规律的事情,状态机的本质就是对具有逻辑顺序或时序规律的事件进行描述的一种方法,广泛用于多种场合 ...

  7. 分布式事务——两段式和三段式事务

    一.分布式数据一致性 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上. (1)什么是数据一致性 在数据有多份副本的情况下,如果网络 ...

  8. 分布式两阶段提交和三阶段提交

    随着大型网站的各种高并发访问.海量数据处理等场景越来越多,如何实现网站的高可用.易伸缩.可扩展.安全等目标就显得越来越重要. 为了解决这样一系列问题,大型网站的架构也在不断发展.提高大型网站的高可用架 ...

  9. 浅谈两阶段提交和三阶段提交

    本文主要分为三个部分 第一部分阐述两阶段提交的原理和优缺点. 第二部分阐述三阶段提交的原理和优缺点. 第三部分阐述如何解决业务中最终一致性的问题. 一.两阶段提交 两阶段提交方法是用于分布式事务中用来 ...

最新文章

  1. Android UI编程之自定义控件——可高亮显示的TextView
  2. 绑定dictionary 给定关键字不再字典中_VBA数组与字典解决方案第51讲:字典嵌套及二级下拉菜单的制作...
  3. C++ 类访问控制public/private/protected探讨
  4. less-postcss
  5. streamset 数据合并_StreamSet之数据流从JDBC到Hbase
  6. std::list 循环删除指针_数据结构_006_线性表_循环链表
  7. 数据源Display方法
  8. win10禁用驱动程序强制签名_如何将驱动程序注入Windows 10 WIM / ISO安装映像?
  9. uds协议之can总线程序升级
  10. PSCC2018 安装教程
  11. 微信小程序常见的UI框架/组件库总结
  12. python图片标记_python提取那些被“标记”照片的实例详解
  13. Gateway NV47H18C BIOS 密码清除
  14. 学习Python的入门建议及资料分享
  15. 婴儿体重身高增长标准对照表
  16. 快速切换IP的批处理!
  17. 纯CSS3流光边框特效
  18. stm32c8t6通过onenet上传gps经度与维度
  19. 云服务器和VPS有什么区别?
  20. 华为hcie认证工程师里一定要知道的Radius 基本介绍

热门文章

  1. 重磅!百度怒告前高管王劲,真实原因竟然是因为....
  2. 新南威语言班C加,2020年新南威尔士大学语言班要求高不高
  3. Android开发使用SurfaceView和Mediaplayer播放网络视频(功能齐全)
  4. EditText被遮挡底部问题
  5. 家长接到声称自己孩子出车祸需要汇款的电话后,首先要做的是()。
  6. 管理信息系统期末报告:大象基金信息管理系统分析与设计报告
  7. shell脚本计时方法
  8. 为什么89C51单片机里面有TH0=(65536-50000)/256;TL0=(65536-50000)%256;
  9. 程序员职业生涯规划必读的十本书
  10. 关于MySQL8.0的闰秒,官方文档是真狗啊