微信公众号:小林玩大数据
作者:林中鸟
如果你觉得此篇文章对你有帮助,欢迎点赞!

一致性协议概述

Two-Phase-Commit(2PC)

一致性协议概述

在分布式系统中,每一个机器节点虽然都能明确地知道自己在进行事务过程中的结果是成功或失败,但却无法获得其它节点的操作结果。因此,为了保持事务处理的 ACID 特性,就需要引入一个称为“协调者”的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点被称为“参与者”。协调者负责调度参与者的行为,并最终决定这些参与者把事务真正进行提交。

Two-Phase-Commit(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 消息后,完成事务中断。

注:总的来说,二阶段提交将一个事务的处理过程分为了投票和执行两个阶段,其核心是对每个事务都采用先尝试后提交的处理方式,因此二阶段提交看作一个强一致性的算法。

时间最擅长不辞而别,一转眼,初夏的5月打马而过!5月再见啦,6月,希望林中鸟儿们遇见阳光且温柔的自己!如果本文对你有帮助,请扫一扫关注!

小林玩大数据

2 PC 有它,你就够了!相关推荐

  1. 移动端、PC端(前后台)、小程序常用的UI框架 - UI框架篇

    目录 1.移动端UI库 ①.Vant UI ②.Mint UI ③.Muse UI ④.Nut UI 2.PC端前.后台UI库 ①.Element UI ②.vue-element-admin ③.i ...

  2. 精选几个高能神器分享,速度收藏了!

    很高兴您能阅读这篇丰盛的资源盛宴,作为一个资源号主,深知自身能力毕竟有限,为了方便大家能够有效的收获更多的精品资源,今天特地给大家推荐几个同等优秀的资源大佬,相信在这定能有所收获!!!   阿枫科技 ...

  3. 作品分享:基于STM32的温度报警器含源码、原理图、PCB文件、作品报告

    文章目录 一.前言 二.材料准备 三.硬件部分 四.软件部分 1. 底层封装库 2.中间层 3.应用层 五.外壳设计 六.资料链接 一.前言 该作品是我在华工电工开放实习的作品,本作品由七部分组成.中 ...

  4. 3分钟学会做任务管理!让你快速搞定工作任务的“杂乱难”

    派发任务总是被延期,团队成员却还吐槽工作太多: 交代给协作成员的任务,迟迟得不到反馈,影响工作成果: 实时获取任务的当前状态与数据存在一定困难,任务进度难把控: ...... 相信不少管理者都被这些低 ...

  5. 简单易懂云计算(转自天涯感谢原楼主iamsatisfied)

    2019独角兽企业重金招聘Python工程师标准>>> 如果把计算机工业发展的历史做一个简单的回顾,之前可以大致上划分为两个阶段.第一个阶段是由IBM为代表的大型机时代.第二个阶段是 ...

  6. Vue开发入门看这篇文章就够了

    摘要: 很多值得了解的细节. 原文:Vue开发看这篇文章就够了 作者:Random Fundebug经授权转载,版权归原作者所有. 介绍 Vue 中文网 Vue github Vue.js 是一套构建 ...

  7. PC端微信小程序wxapkg解密

    sh点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 解密PC端wxapkg文件." 用过微信pc版的应该都知道,PC上也可以使用微信小程序. 这个小程序用起来和手机端差不多,不过 ...

  8. AI一分钟 | 厉害了!英特尔正式发布电动飞行汽车;贝佐斯笑了,多家PC厂商结盟亚马逊Alexa,直怼微软Cortana

    一分钟AI 1. CES 2018 专题:英特尔正式发布电动飞行汽车Volocopter:华硕发布Chromebox 3,采用英特尔8代酷睿处理器:三星宣布2018年智能电视全部搭载智能助手Bixby ...

  9. 从大型主机到个人计算机:机器人产业可以从pc普及革命中学到什么?

    来源:大数据文摘出品 自主化机器人已逐渐变得无处不在. 自动吸尘器.自动割草机.会简单交互的小玩具,以及呼之欲出的自动驾驶汽车,都可以看作是一个能实现某种自动功能的机器人. 一辈接着一辈,我们一直在期 ...

  10. adb cannot connect to daemon_手机触屏失效的抢救办法,以及如何利用adb实现PC与手机交互...

    手机进水或者摔坏屏幕导致触屏失效的时候,一般情况下,要么选择换屏,要么选择把手机扔掉.但其实如果有一根OTG线,手机中的资料还可以安全备份出来,或者还可以再利用起来,发挥一下余热做点别的事. 像上图一 ...

最新文章

  1. 《Build your own AngularJS》笔记分享
  2. 2019 神策春招 | “数”天下神人,都“据”于此
  3. HDOJ acm steps 3.1.1
  4. HANA report creation implementation go through
  5. 函数调用过程简单分析
  6. PHP:10个不常见却非常有用的PHP函数
  7. android sepolicy报错解决
  8. python源码中的学习笔记_第11章_模块与包
  9. Redis基础6(Redis6管道)
  10. 博客园期刊制作组工作安排
  11. layui和js实现二级联动
  12. 台式计算机 按键盘字母键 没反应6,台式电脑键盘没反应怎么回事 键盘按了没反应怎么办...
  13. Java判断邮箱格式是否正确
  14. 大学生职业生涯规划书性格特征_个人职业生涯规划书性格分析范文-职业规划书性格分析...
  15. 模拟双色球系统判断中奖情况
  16. vue中企业微信 wx.onHistoryBack详解:
  17. ticklength
  18. 用 pc 抓取 vlan tag 的数据包
  19. Plist文件是什么?
  20. python微服务架构设计模式_微服务架构设计模式 PDF 电子书 百度云 网盘下载

热门文章

  1. 信息系统项目管理师考点之上午理论知识点总结
  2. 计算一个整数,转换成二进制,里面有多少个1
  3. springcloud微服务学习笔记(五十一):Config配置总控中心搭建
  4. 函数式编程-Lodash库学习
  5. 快速接入百度大脑身份证识别
  6. springboot 微信支付接口
  7. matlab 判断大小写,【万大暗】matlab字符串不分字母大小写按字母表排序问题
  8. MySQL 报错InnoDB: Cannot allocate memory for the buffer poo处理方法
  9. PHP所支持的时区列表
  10. 360修复服务器漏洞,360安全漏洞不需要修复怎么设置