2PCtwo phase commit 二阶段提交协议

2pc是在计算机网络以及数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务的提交时,保持一致性而设计的一种算法。通常,二阶段提交也被称为是一种协议。

在分布式系统中,每个节点虽然可以知晓自己的操作是否成功,但无法知道其他节点的操作是否成功。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有的节点的操作结果,并最终指示这些节点是否要把操作结果真正的提交。(每个节点也称为参与者)

其算法思路可以概括为:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈结果决定所有的参与者是否要提交操作还是终止操作。所有的节点都投票决定是否执行事务操作。

二阶段提交协议:把事务的提交过程分为两个阶段来进行处理。

  • 第一阶段:投票阶段 / 准备阶段

1. 事务询问。(协调者 --> 参与者)

事务协调者(事务管理器)向每个事务参与者(资源管理器)询问,是否准备好了执行事务,并开始等待各个参与者的响应。

2. 执行事务。 参与者)

各个参与者节点执行事务操作,并将Undo和Redo信息记入到事务日志中。【注意:若成功这里其实每个参与者已经执行了事务操作】

3. 各参与者向协调者反馈事务查询的统计。(参与者 --> 协调者)

各个参与者响应协调者发起的询问。若参与者节点的事务操作实际执行成功,则返回一个“同意”消息;如果参与者节点的事务操作实际执行失败,则返回一个“终止”消息。

  • 第二阶段:提交阶段 / 执行阶段

根据投票结果执行两种操作:执行事务提交或者中断事务。

  1. 执行事务提交:协调者节点从所有的参与者节点获得的消息都为“同意”。

    1. 协调者节点向所有的参与者节点发出“正式commit”请求。
    2. 参与者节点正式完成操作,释放在整个事务期间内占用的资源。
    3. 参与者节点向协调者节点发送“完成”消息。
    4. 协调者节点收到所有参与者节点的“完成”消息后,完成事务。
  2. 中断事务:任一参与者节点在一阶段的响应消息为“终止”,或者一阶段询问超时无法获取所有参与者节点的响应消息。
    1. 协调者节点向所有的参与者节点发出“回滚操作”请求。
    2. 参与者节点利用之前写入的Undo信息执行回滚操作,并完成操作之后释放在整个事务期间内占用的资源。
    3. 参与者向协调者节点发送“回滚完成”消息。
    4. 协调者节点收到所有参与者节点反馈的“回滚完成”消息后,取消事务。

缺点:

同步阻塞、单点问题、数据不一致、过于保守。

同步阻塞:

执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态。

单点问题

由于协调者的重要性,一旦协调者发生故障。参与者会一直阻塞下去。尤其在第二阶段,协调者发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。(如果是协调者挂掉,可以重新选举一个协调者,但是无法解决因为协调者宕机导致的参与者处于阻塞状态的问题)

数据不一致:

在二阶段提交阶段中,当协调者向参与者发送commit请求之后,发生了局部的网络异常或者在发送commit请求的过程中协调者发生了故障,这回导致只有一部分参与者接受到了commit请求。而在这部分参与者接到commit请求之后就会执行commit操作。但是其他部分未接到commit请求的机器则无法执行事务提交。于是整个分布式系统便出现了数据部一致性的现象。

过于保守:

二阶段提交协议没有设计较为完善的容错机制,任意一个节点的失败都会导致整个事务的失败

参考:

分布式系统一致性算法:https://blog.csdn.net/wuxians/article/details/81275441

分布式理论(三)—— 一致性协议之 2PC:https://www.cnblogs.com/stateis0/p/9062126.html

2PC&&3PC:https://www.jianshu.com/p/dd6a340e50b2

分布式理论(三)2PC协议相关推荐

  1. 分布式理论(一) - CAP定理

    前言 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性)这三个基本需求,最 ...

  2. 分布式理论、架构设计

    分布式系统面临的问题 1)通信异常 网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤.路由.DNS等硬件设备或系统的不 可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外 ...

  3. 分布式理论,看完这篇你定能有所获

    分布式架构系统回顾 分布式系统概念 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统. 简单点说,所谓分布式系统,就是一个业务拆分成多个子业务,分布 ...

  4. 什么是分布式事务(CAP原则、BASE理论、2PC|3PC协议、XA|AT等模式)

    1.CAP原则 CAP原则是指:一致性©.可用性(A).分区容错性§,分布式系统一般进行三选二,比如: CA:保证一致性和可用性,在单机情况下实现: CP:保证一致性和分区容错性: AP:保证可用性和 ...

  5. 分布式理论 二阶段提交 2PC 3PC 端到端一致性 分布式事务

    一.临界知识对我们学习的巨大帮助 临界知识这个概念,是我上个月读<好好学习:个人知识管理精进指南>这本书学到的概念,真的有被启发到,现在觉得它对于我们深刻了解世界有着非常大的作用. 所谓临 ...

  6. 分布式理论和分布式一致性协议

    分布式理论 关键词 分布式,各副本中的数据是一致 强一致性/弱一致性(最终一致性) cap定理(P分区容错性:允许节点挂掉:对于分布式系统,是必须的) 互联网:AP (得能访问,偶尔没有一致性能接受) ...

  7. 分布式事务与2PC、3PC理论详解

    事务概念 大部分情况下我们所说的事务都是数据库事务(Database Transaction),后来延时到了非关系型数据库等其他领域,事务是运行在我们数据库上的一个逻辑工作单元,运行在工作单元中的所有 ...

  8. 分布式.RPC-WebService三要素,三个规范, Soap协议(理解原理 才是事半功倍)

     系列博文: 分布式.RPC调用-RMI & Hessian框架_闲猫的博客-CSDN博客 分布式.RPC-WebService三要素,三个规范, Soap协议_闲猫的博客-CSDN博客 分布 ...

  9. 分布式理论、架构设计(自定义RPC)

    会不断更新!冲冲冲!跳转连接 https://blog.csdn.net/qq_35349982/category_10317485.html 分布式理论.架构设计(自定义RPC) 1.分布式架构 1 ...

最新文章

  1. 【收藏】keepalived nginx服务检测脚本
  2. Java从网络批量读取图片并保存至本网站服务器后再插入文章中
  3. PAT1006 换个格式输出整数
  4. jquery $.each遍历json数组方法
  5. Spring Boot Redis
  6. 修改字段名和字段备注
  7. Unicode字符编码分布表――语言文字类
  8. ExoPlayer之SampleQueue
  9. 将word文档转换为图片格式的PDF
  10. 蓝桥杯单片机——“”彩灯控制器”的程序设计
  11. 30款硬盘有问题 细看希捷固件门事件.
  12. C# OpenCv 证件照换底色
  13. C语言字母大小写转换
  14. CycleGAN的测试
  15. excel 设置双坐标轴柱状图
  16. 光纤中的多种光学模式芯径_「涨知识」你想知道的光纤常识都在这里了,看不看随你...
  17. hive to hbase
  18. Using a password on the command line interface can be insecure.
  19. 文件上传控件-如何上传文件-大文件断点续传
  20. 痞子衡嵌入式:聊聊i.MXRT1170上串行NOR Flash双程序可交替启动设计

热门文章

  1. python时间日期格式,python日期时间格式化
  2. Comparable 接口的使用
  3. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java力高灯饰线上交易平台4d59n
  4. oppor15更新android,OPPOR15 Android P体验 刘海屏体验新方式
  5. udp和tcp切换之坑
  6. 精通 Pandas:6~11
  7. Vue组件冒号:和@符号区别及介绍
  8. 前端三剑客 - JavaScript
  9. html上传头像及预览,JS实现上传头像并实时预览
  10. html如何设计上传头像失败,【微信上传头像失败】微信上传头像失败怎么回事?...