范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

漫谈分布式事务的那些解决方案

  事务我们都不陌生,我们常说的事务一般都是指单机事务,即本地事务。那分布式事务是什么?分布式事务就是由多个本地事务组合而成的事务,一般在分布式场景下才会出现。
  比如电商平台中,我们在购物的时候,下单支付这个过程看上去是一气呵成的,但是背后可能是多个系统的分工合作。订单系统、支付系统、物流系统等。这些系统部署在不同的服务器上,执行的都是各种的事务,对于电商平台来说,这就是分布式事务。
  本地事务都好解决,有一套现成的事务机制,分布式事务比本地事务就要复杂多。如何实现分布式事务呢?大概有 3 种解决方式:基于 XA 协议的二阶段提交协议。三阶段提交协议。基于 MQ 的最终一致性。基于 XA 协议的二阶段提交
  XA协议由 Tuxedo 首先提出的,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。目前,Oracle、Informix、DB2和Sybase等各大数据库厂家都提供对XA的支持。----来源百度百科
  二阶段提交也叫 2PC ,The two-phase commit protocol。首先在二阶段提交中有两个角色:参与者:本地资源管理器,即事务的执行者,也就是各个业务系统。协调者:分布式事务的大脑,负责指挥协调各个业务系统提交/回滚事务。
  所谓得两阶段提交就是指投票(voting)和提交(commit) 两个阶段,跟选举制度一样,先投票,再决定。
  投票阶段,协调者向参与者发起执行事务操作的请求(CanCommit 请求),并等待参与者响应。
  参与者接受到请求后,执行事务请求操作,记录日志信息但不提交,记录成功后,向协调者发生 "Yes" 消息,表示同意提交操作,若不成功,则发送"No" 消息,表示不同意这次操作。注意这个过程会锁定数据。
  投票阶段得流程图,大概就是下面这样子:
  提交阶段,协调者接受到所有参与者的响应之后,根据返回来的信息情况,向参与者发送提交或回滚请求。若收到的响应消息都是 "Yes",则向参与者发送 "DoCommit" 消息,参与者完成本地事务的其他操作并释放资源,然后向协调者发送 "HaveCommitted"消息;如果协调者收到的消息中包含"No"消息或者在规定时间内有参与者没有响应,则向所有参与者发送"DoAbort"消息,此时发送"Yes"的参与者则会根据之前执行操作时的回滚日志对操作进行回滚,然后所有参与者会向协调者发送"HaveCommitted"消息;
  提交阶段的流程,大概入下图所示:
  二阶段提交协议容易理解,基于 XA 的二阶段提交算法满足事务的 ACID 特性,看上去比较完美,但是缺点还是挺多的,主要有以下几个问题:同步阻塞问题:二阶段提交在执行过程中,所有参与节点都是事务阻塞型的,参与者会锁定数据,其他访问者要访问该数据的话,都会被阻塞。单点故障问题。在二阶段提交协议中,协调者只有一台,一旦协调者发送故障,整个系统都会处于停滞阶段。特别是提交阶段,如果协调者挂了的话,参与者就会一直等待协调者回应,会处于阻塞中。数据不一致问题:在提交阶段,协调者向参与者发送 DoCommit 请求后,由于网络抖动或者在发送请求的过程中,协调者发生故障,就会导致只有一部分参与者接收到了提交请求并执行提交操作,但其他未接到提交请求的那部分参与者则无法执行事务提交。于是整个分布式系统便出现了数据不一致的问题。三阶段提交
  三阶段提交协议(Three-phase commit protocol,3PC)是对二阶段提交(2PC)的改进。解决了二阶段提交的一些问题,三阶段和二阶段提交最大的不同是引入超时机制和准备阶段。
  先来说说超时机制,在二阶段提交,只有协调者才有超时机制,如果协调者在规定时间内没有接收到参与者的响应,就会根据当前状态提交或者终止整个事务,但是如果协调者挂了,参与者并没有超时机制,所以就一直等待,这也是二阶段提交单点故障的问题。在三阶段提交中,同时在协调者和参与者中引入超时机制。如果协调者或参与者在规定的时间内没有接收到来自其他节点的响应,就会根据当前的状态选择提交或者终止整个事务。
  三阶段提交其实就是将二阶段提交中的提交阶段一分为二,三阶段提交协议中的具体三阶段是:CanCommit、PreCommit、DoCommit 三个阶段
  CanCommit 阶段,CanCommit 阶段与 2PC 的投票阶段类似:协调者向参与者发送请求操作(CanCommit 请求),询问参与者是否可以执行事务提交操作,然后等待参与者的响应;参与者收到 CanCommit 请求之后,回复 Yes,表示可以顺利执行事务;否则回复 No。
  PreCommit 阶段,根据二阶段提交中的提交阶段相似,根据 CanCommit 阶段返回的结果,来决定是否可以进行 PreCommit 操作。
  这时候就存在两种情况,如果所有参与者都回复 "Yes",那么执行流程是这样的:1、协调者发送预提交请求:协调者向参与者发送 PreCommit 请求,进入预提交阶段.2、事务预提交:参与者接收到 PreCommit 请求后执行事务操作,并将 Undo 和 Redo 信息记录到事务日志中。3、响应反馈:如果参与者成功执行了事务操作,则返回 ACK 响应,同时开始等待最终指令。
  如果有参与者返回 "No",或者协调者在规定时间内没有收到参与者的响应,那么将执行中断事务操作。流程是这样的:1、发送中断请求:协调者向所有参与者发送"Abort"消息。2、中断事务:参与者收到"Abort"消息之后,或超时后仍未收到协调者的消息,执行事务的中断操作。
  DoCommit 阶段, 事务真正提交阶段,协调者根据 PreCommit 阶段参与者返回来的信息,决定是进入提交阶段还是事务中断阶段。
  提交阶段流程如下:1、发送提交请求:协调者接收到所有参与者发送的 Ack 响应,从预提交状态进入到提交状态,并向所有参与者发送 DoCommit 消息。2、事务提交:参与者接收到 DoCommit 消息之后,正式提交事务。完成事务提交之后,释放所有锁住的资源。3、响应反馈:参与者提交完事务之后,向协调者发送 Ack 响应。4、完成事务:协调者接收到所有参与者的 Ack 响应之后,完成事务。
  事务中断阶段,流程如下:1、发送中断请求:协调者向所有参与者发送 Abort 请求。2、事务回滚:参与者接收到 Abort 消息之后,利用其在 PreCommit 阶段记录的 Undo 信息执行事务的回滚操作,并释放所有锁住的资源。3、反馈结果:参与者完成事务回滚之后,向协调者发送 Ack 消息。4、中断事务:协调者接收到参与者反馈的 Ack 消息之后,执行事务的中断,并结束事务。基于分布式消息的最终一致性方案
  不管是二阶段提交还是三阶段提交,都属于强一致性的,满足事务的 ACID 原则。它们都有两个共同的问题:1、需要锁定数据,降低了系统性能。2、因为网络等原因,并没有完全解决数据一致性问题。
  而基于 MQ 消息的分布式解决方案就不太一样了,它采用的不是强一致性,而是最终一致性,这也就是 BASE 理论。并且我们直到 MQ 是异步的,所以性能也比较快,可以说完美的解决了上面两种方式带来的问题。
  基于 MQ 消息中间件解决分布式事务的思路是这样的:主要是基于 MQ 消息投递的可靠性,将分布式事务发送给 MQ 中间件之后,中间件将事务持久化,这一点非常重要,保证消息不丢失。消费者端异步消费,如果遇到失败情况,由于我们的消息是持久化的,所以可以根据业务规则不断重试,有必要的话,人工补偿,保证数据最终一致性。

德国SAUTER钢琴的家族传奇史(上篇)1813年,JohannGrimm应JohannAndreasStreicher的邀请,来到维也纳,加入他的工厂,成为大学徒,并帮助制作几架为贝多芬特别订制的钢琴。在学成之后,Jo探索CarlJohann钢琴的秘密(下)CarlJohann钢琴是真正拥有德国制造基因的钢琴,充分吸收了SAUTER钢琴坚守近200年的严谨制琴标准和技艺,令CarlJohann先天就具备了无与伦比的优秀品质。精心挑选的VOXMV50ACCleanRock震撼舞台的掌上箱头以追求模拟电路带来的细腻音色为设计核心,VOXMV50成功将经典吉他放大器设计和创新Nutube科技实现融汇贯通,浓缩为3款拥有50瓦输出功率的怪兽级微型箱头。MV50系列微型箱头关于AKGPro耳机产品的声明近期,我司接到众多消费者的咨询,市场上出现了大量没有雅登防伪保修卡标贴的AKGPro耳机产品,使消费者选购时产生困惑,甚至造成经济损失,已对我司信誉产品口碑造成极坏的影响。为了规范宁德时代起诉中航锂电,称其全系产品侵犯专利权电车汇消息今日,财联社报道称,宁德时代已经正式起诉中航锂电专利侵权。该人士透露,中航锂电涉嫌侵权范围覆盖其全系产品。法律界人士表示,中航锂电一旦败诉,全系产品可能面临禁售。最新数据蜂巢能源无钴电池量产下线,产品已获工信部认可电车汇消息今日,蜂巢能源在江苏举行了首款无钴电池量产下线仪式。这意味着全球首款无钴电池走出实验室,正式实现量产,蜂巢能源由此成为全球首家突破无钴电池技术难关,成功实现产品量产的动力不惧降价,比亚迪汉推新款硬磕特斯拉电车汇消息就在特斯拉官宣降价的次日,比亚迪汉推出新款车型,售价降低2万元,这究竟是巧合还是有意为之?7月30号,特斯拉Model3标准续航升级版官方宣布售价下调1。5万元,补贴后售Martin的OM型箱体与000型箱体区别大揭秘Martin的OM型箱体与000型箱体一直是大众们所喜爱和热议的话题,但是很多Martin的爱好者并不懂两者的区别,本次以下将为大家详细解密这两种看似相同的琴型箱体秘密。视频加载中听TomQuayle讲述2017韩产PRS吉他韩产的PRSSE吉他同样也是PRS品牌的重要分支之一,其中SECUSTOM系列也是PRS韩产吉他的热门型号首选,在今年韩产PRSSE吉他也是做了一些变化,很多PRS粉丝在后台询问我摩登原声主义PRSSESTARDAND木吉他火热上市由制琴界享有盛誉的PRS创始人PaulReedSmith先生领衔,联合PRS精英制琴团队多年的潜心研发,历经数次对音色和结构悉心地磨砺雕琢,新一代PRSSEAcoustic系列木吉SigmaSE系列新型号上市2017年SigmaGuitar继续着创新的脚步,热卖的SE系列推出了两款采用缺角设计,椴木作为背侧板的新型号Dreadnought琴型的DTCE和GrandOM琴型的GTCE。新
联发科当年也是可以和高通掰手腕的,可现在不行了,是技不如人还是战略错误?联发科当年也是可以和高通掰手腕的,可现在不行了,是技不如人还是战略错误?联发科在和高通的比武中可以说已经落败了下来,旗舰机基本不见联发科的踪影。可以说是技不如人,也有战略性错误在里1500元以下真的买不到好手机吗?我反对不久之前,苹果13终于发布,极具性价比的定价让果粉高呼13香。然而,能真正用上高端机的终究是少数,绝大多少人群,如咱们这些普通打工人和学生,手机的价格基本上控制在两千元甚至1500曲面屏是个坑?三星带偏了国产机,却自己不用了?如果大家有关注手机的屏幕,就会发现一个有趣的现象,那就是苹果从来不推曲面屏的手机,而三星早几年经常推曲面屏手机,但现在基本归回直板屏。而国产机,特别是高端国产机,一直在使用曲面屏,国产机不断涨价,iPhone13反而降价?网友还是买苹果更靠谱华为退场后,目前高端市场上几乎没有人能与苹果竞争。并且这一次与去年相比,iphone13的价格反而有所下降。而很多国产为了追求高端,盲目提高价格,这一次遭到了苹果的狠狠反击。苹果的oppo手机怎么选?在线下购买手机很多人首当其冲OPPO手机但是oppo手机那么多个系列你真的会选吗?本期视频小编给大家讲讲OPPO手机怎么选以及他的4个系列Find系列这个系列从2010年oppo就小白优选,海康存储G1Master建立自己的私有云盘前言手机容量是越来越大,不过再大拍的照片和视频多了也是不够用,所以备份成了一个问题。备份的选择有很多,网络的各类网盘,不过有些人会担心个人数据的隐私安全问题,这些都是客观存在的,尤三星开发无边框显示技术BRS,预计2022年年底量产商用无边框手机已在市面上存在多年,代表手机品牌是努比亚,它利用aRC折射技术隐藏黑边达到视觉无边框的效果,亮屏后观感极佳。不过就目前来说,绝对的无边框手机是不存在的,各家厂商宣扬的无边入局东南亚本土电商市场如何解决回款物流仓储等问题?嗨大家好我是小编蜀黍鼠子(每天2030准时更新)今天我又来给大家分享猛料啦!!!(不用谢我)据Worldometers数据显示,截至2021年8月,整个东南亚人口估计超过6。75亿哈迷回家,罗姨数钱一笔价值322亿美元的魔法生意深响原创作者祖杨经过三个月的内部测试20天的试运营,北京环球影城于今日正式开园。中国限定全球首创的名号加持下,环球影城首日门票在开票一分钟后售罄,甚至连度假区内价值2万元一晚的酒店深度解析奇瑞小蚂蚁eQ1据了解,奇瑞小蚂蚁新能源汽车科技感十足,借助于互联网技术来实现空调自清洁和自通风功能比较突出,所以较好来选择会比较靠谱,肯定会被更多的用户所认可,必须要结合实际需求来选,自然是让更被圈外网友怼了,关于快递送货上门被怼原话是邮政法规定要送货上门,你们快递员还有脸讨论送不送货上门。虽然我现在不是快递员,但曾经是。快递公司给的是驿站自提派费,送货上门只是快递公司喊口号的,送货上门的区域只是形象工