在分布式系统中,每一台机器节点虽然能够知道自己在进行事务操作过程中的结果是成功还是失败但无法直接获取其他分布式系欸但的操作结果。因此,当一个事务需要跨越多个分布式节点的时候为了保持事务的ACID特性,需要引入一个协调者(Coordinator)组件来统一调度所有分布式节点的执行逻辑,而被调度的节点称为参与者(Participant)。

2PC 二阶段提交

是为了使基于分布式架构下的所有节点在进行事务操作过程中能够保持原子性和一致性而设计的一种算法。而大部分关系型数据库就是采用二阶段提交协议来完成分布式事务处理的。并且二阶段将事务分成了两个极端来处理,其流程如下。

阶段一:提交事务请求

1.事务询问
协调者向所有参与者发送要执行的事务内容,询问是否有事务提交操作,并等待参与者响应。
2.执行事务
各参与者节点执行事务操作,将Undo和Redo记录在事务日志中。
3.各参与者向协调者反馈事务询问的响应
如果参与者成功执行了事务操作,则反馈给协调者Yes,表示事务可以执行。否则返回No,表示事务不可执行。

阶段一又称为投票阶段,即各参与者投票表明是否要继续执行接下来的事务提交操作

阶段二:执行事务提交

当协调者从所有的参与者中获得的反馈都是Yes则执行事务提交

1.发送提交请求
协调者向所有参与者发出Commit请求
2.事务提交
参与者接收到Commit请求后执行事务提交,并在提交完成后释放占用的事务资源
3.反馈事务提交结果
参与者完成事务提交后向协调者发出Ack消息。
4.完成事务
协调者收到Ack消息后,完成事务。

若任何一个参与者向协调者反馈了No,或等待超时,则中断事务

1.发送回滚请求
协调者向所有参与者发出Rollback请求
2.事务回滚
参与者收到Rollback请求后会利用阶段一中记录的Undo来执行回滚操作,并完成回滚后释放事务占用的资源。
3.反馈回滚结果
参与者完成事务回滚后向协调者发送Ack消息。
4.中断事务
协调者收到所有参与者的Ack后,完成事务中断。

二阶段提交将一个事务处理的过程分为了投票和执行,其核心在于对每个事务采用先尝试后提交的处理方式,是一个强一致性算法。

优点
原理简单,易于实现
缺点
同步阻塞,各个参与者在等待其他参与者的相应过程中无法进行任何操作。
单点故障
数据不一致,如果只有部分参与者收到了Commit请求而提交事务,其他参与者未收到Commit请求会造成数据不一致。
任何一个节点失败会导致整个事务的失败。

《从paxos到zookeeper分布式一致性原理与实践》读书笔记--第二章一致性协议--二阶段提交相关推荐

  1. 《从Paxos到zookeeper分布式一致性原理与实践》笔记

    <从Paxos到zookeeper分布式一致性原理与实践>笔记 文章目录 <从Paxos到zookeeper分布式一致性原理与实践>笔记 一.概念 二.一致性协调 2.1 2P ...

  2. C++程序设计:原理与实践读书笔记(第十二章)

    C++语言用称为new的运算符将"自由空间"(又称为"堆")变为可用状态.例如: double *p = new double[4]; //在自由空间中分配4个 ...

  3. 《从Paxos到zookeeper分布式一致性原理与实践》

    <从Paxos到zookeeper分布式一致性原理与实践> 一.概念 ACID: Automaticy.consistency.isolation. Durability CAP: con ...

  4. 从Paxos到Zookeeper:分布式一致性原理与实践

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

  5. [201502][从 Paxos 到 ZooKeeper][分布式一致性原理与实践][倪超][著]

    [201502][从 Paxos 到 ZooKeeper][分布式一致性原理与实践][倪超][著] http://zookeeper.apache.org 第 1 章 分布式架构 1.1 从集中式到分 ...

  6. 《从Paxos到Zookeeper 分布式一致性原理与实践》

    第1章 分布式架构 1.1 从集中式到分布式 1.1.1 集中式的特点 集中式的特点:部署结构简单(因为基于底层性能卓越的大型主机,不需考虑对服务多个节点的部署,也就不用考虑多个节点之间分布式协调问题 ...

  7. 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

    一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...

  8. zookeeper 分布式锁原理

    zookeeper 分布式锁原理: 1 大家也许都很熟悉了多个线程或者多个进程间的共享锁的实现方式了,但是在分布式场景中我们会面临多个Server之间的锁的问题,实现的复杂度比较高.利用基于googl ...

  9. Zookeeper分布式锁原理

    1.分布式锁介绍 单机应用开发,涉及并发同步的时候,我们往往采用synchronized 或者Lock的方式来解决多线程间的代码同步问题,这时多线程的运行都是在同一个JVM之下,没有任何问题. 但当我 ...

最新文章

  1. Spring Cloud Alibba教程:如何使用Nacos作为配置中心
  2. 网页效果图设计之色彩索引
  3. 关于table的中元素对齐方式的注意点
  4. I帧、P帧和B帧的特点
  5. QT每日一练day21:鼠标事件
  6. Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
  7. xen服务器不能挂载iso文件,Citrix XenCenter安装VM之挂载ISO详解
  8. PowerDesigner 数据字典模板
  9. 【男人必看十大经典】[经典合集][DVD-Rmvb/7.70GB] 【原音中文字幕】已测
  10. 拉普拉斯方程式 Laplace's equation
  11. 今天上班穿了一只拖鞋和一只凉鞋
  12. Android studio Installed Build Tools revision 31.0.0 is corrupted. Remove and install again
  13. Linux防火墙入门:简介(转)
  14. 一个定时器实现IO模拟pwm,呼吸灯效果
  15. 戴尔笔记本连接无线网络不能上网的解决方法
  16. 区块链对医疗行业的影响
  17. h5网站模板_80个懒人模板网站,我全部整理在这里了
  18. PHP来客在线客服系统源码 带安装教程
  19. Revit教程-Revit包络如何控制墙体面层
  20. 万花筒写轮眼画法_纯canvas来画出斑的万花筒写轮眼

热门文章

  1. 流浪宠物救助网站前端页面_基于SSM(spring+spring mvc+mybatis)开发流浪宠物(猫狗)救助系统,项目为maven项目,后台可配置化,系统可学习性高。...
  2. Android权限系统(一):开机获取权限信息
  3. python excel写入加前缀_python excel写入及追加写入
  4. CSS学习笔记(狂神-完整版)
  5. 郭俊海医生:出身中医世家,潜心研究中医文化
  6. 新闻稿与公众号的区别
  7. 基于pycharm的requests库使用教程
  8. 用python实现给女朋友自动发微信
  9. 第六章-数据统计-EXCEL常用函数使用技术
  10. 微信小程序实现下拉选择及手动输入查询