分布式系统一致性专题本期该写 3PC 协议了,上周太忙没有时间更新,就拿了之前的旧文章做了一些调整重发了一下,还望各位读者海涵。
后面大约还有3期:Paxos 协议、Raft 协议等,先预热一下。
温馨提示:本篇文章并不会枯燥,换了个画图工具,对于我这种建筑专业出身的IT狗来说,画图简直是最开心的事情了,所以放心看吧!
图(网络)|猎户座大星云
之前文章中提到了 2PC 协议存在的协调者单点、参与者阻塞超时、网络分区、容错性等问题,这些在某些程度上是做优化和调整的,并不是致命问题。
我们对 2PC 协议的异常情况做了拆解,但是那是个m*n的组合问题,我们尽量去分析主要矛盾,于是发现在协调者和唯一接收指令的参与者都出现不可恢复宕机时,即使后面选举了新的协调者,仍然可能出现数据的不一致性。
3PC 的出现可能是多种因素促成的。
但是基本上可以确定 3PC 将对 2PC 存在的问题进行修正和优化,但是这样并不意味着 3PC 不会引入新的问题。
本文将从 3PC 的协议过程来阐述这两大块内容:
3PC协议 Three-Phase-Commit 又称三阶段提交协议,相比 2PC 协议增加了一个阶段,因此我们普遍把 3PC 协议看作是 2PC 协议的改进版本。
3PC 协议将 2PC 协议的准备阶段一分为二,从而形成了三个阶段:
协调者和参与者等待超时情况单独说,先看正常情况的基本过程,要不然容易混淆。
在2PC准备阶段中,协调者向参与者发送指令后,参与者如果具备执行条件,则获取锁并执行动作,只不过未真正提交,可以认为参与者就差临门一脚了,还得等协调者信号。
如果是 commit 信号那还好,如果是 rollback 信号,那么对于一些本地执行了动作的参与者来说白白浪费了,所以从这个角度来说,2PC 有点激进了,但是这么做也是有原因的,在复杂的网络环境中多一轮交互意味着性能的损耗。
3PC来说更加合理,先由协调者向参与者发送询问信号,兄弟们有档期吗??然后开始收集反馈,相比来说更加轻量。
这个阶段参与者并不真实获取锁占用资源,只是对自身执行事务状态的检查,查看是否具备执行事务的条件,进而回复询问。
根据参与者对询问的反馈,在 CanCommit 阶段可能出现的两情况:
A.所有参与者均Ready的场景
图:询问阶段所有参与者均具备执行事务条件
B.存在参与者不OK的场景
图:询问阶段存在不具备条件的参与者
第二个阶段的具体动作取决于第一个阶段的结果,因此可以分为两种情况:
图:PreCommit阶段参与者均反馈成功
图:PreCommit阶段参与者中存在失败实例
这是 3PC 的第三个阶段和2PC的第二个阶段类似,同样的 DoCommit 执行具体动作取决于第二阶段 PreCommit 的结果,因此仍然分为两种情况:
我们前面提到 3PC 要解决 2PC 的参与者阻塞超时问题,在2PC中参与者比较痴情,协调者不给信号会长时间阻塞,不释放资源,这样别人也没法处理其他事情,确实不太好,看来 2PC 还是太依赖协调者了。
3PC 认为网络超时是普遍发生的情况,如果参与者在一种大概率确定的状态下执行一些动作也是被允许的,将在外军令有所不受。
3PC 的超时处理可能发生在 PreCommit 和 DoCommit 阶段,来看个图:
可以看到3PC协议中参与者不再过度依赖协调者的指令信号,而是有了自己的相对独立性,可以根据当前所处的状态来进行自我决策。
避免了2PC中的阻塞等待带来的资源浪费情况,确实是个不错的优化,但是我们并不能完全保证这种优化就都是完全正确的呀!
换句话说3PC解决了2PC的bug,但是不代表3PC没有引入新的bug。
前面我们说到3PC协议的一个重要作用就是要对2PC协议的改进和优化,从上面的过程分析可知确实做了一些优化,但是仍然不可避免出现了新的问题。
2PC协议在某些场景下数据不一致问题,那么3PC有没有这种问题呢?
答案是有,根源是新加的参与者超时机制。
比如参与者A因为自身网络问题,在设定时间内未收到协调者的信号,这时参与者A基于之前的状态执行了Commit操作,提交了事务,这种情况确实会发生,根据真实的协调者信号是commit还是rollback会出现不同的结果。
如果协调者发送的是Commit指令,就和参与者A独自决策结果一致,没啥问题。
如果协调者在DoCommit阶段发送的是rollback指令,那么超时的参与者A由于执行了本地事务提交,从而和其他收到指令执行rollback的参与者的数据不一致。
我们知道2PC协议的决策结果初始阶段只有决策者知道,只有在它发送了决策解决才有参与者知道,这样就存在决策结果丢失的情况。
假如协调者挂掉,新协调者可以咨询所有的参与者来确定决策状态,根据所有参与者的情况来确定,但是万一真理掌握在少数人手中呢?
极端情况:
假如有10个参与者,9个都是正常的,1个状态未知(先叫做A吧),10个参与者都向协调者发送了反馈,如果A反馈的是Not Ready信号,其他9个都是Ready信号。
协调者汇总结果决策出不具备执行条件,开始向所有参与者发送rollback,恰好第一个收到信号的是A机器,协调者挂了,A收到信号后也挂了。
新的协调者询问了其余9个都是OK,新的协调者就认为具备条件了从而发送Commit信号,这样就出现了不一致。
脑洞大开:
这个过程和清宫剧中皇帝立储很像嘛,皇帝把结果挂在朝堂的牌匾之上,假定诏书消失了且皇帝挂了,那么结果就不得而知了,智囊团在没有私心的前提下就需要考察所有的侯选人的情况来确定,这样就可能出现不一致。
决策透明化: 在3PC中仍然存在只有1台机器收到指令然后挂掉的情况,但是如果出现在前置阶段,对整个结果是没有影响的,因为会被取消并且参与者并没有本地执行。
现在看3PC的思想是把做重大动作时的决策结果透明化统一化,产生的影响也就非常小了,因此PreCommit阶段的状态是明确的。
我们需要把决策结果透明化,让所有参与者都知道决策结果,3PC的PreCommit阶段对齐了结果,只要有1台还活着,整个事务的状态就是确定的,毕竟所有参与者全挂的情况概率非常低。
3PC协议是对2PC协议的优化和改进,通过将2PC的准备阶段一分为二:CanCommit和PreCommit,整个过程中下一阶段的流转要取决于上一个阶段的结果,流转简图:
经过CanCommit和PreCommit阶段后,参与者之间对齐并保留了决策结果,避免2PC协议极端情况决策结果的错误缺失,是个比较好的做法。
2PC协议只有协调者有超时机制,3PC协议对参与者也引入了超时机制,在不同的阶段进行不同的超时处理,但是由于网络波动和网络分区存在让参与者的超时处理带来新的不确定性,甚至可能出现数据不一致。
3PC协议增加一轮询问阶段所以整个交互过程比2PC更长了,性能相比2PC是会有一些下降的,但是3PC协议对于网络分区等情况也并没有处理地很好。
总体来说,3PC相比2PC做了很多改进有一定的效果,但是仍然存在数据不一致问题,还需继续努力。!
本文由哈喽比特于4年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/Ee9FkPcpZ2Hc3-oG559nEw
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。