作家
登录

分布式系统一致性保障方案总结

作者: 来源: 2017-09-22 13:25:57 阅读 我要评论

如不雅对应到交易和账务分别的项目中,流程如下:

第二阶段: 账务资本锁定成功,交易提交事务成功,然后发送confirm 给账务。 如不雅交易提交掉败,则发送cancel对资本进行释放。如不雅在confirm或者cancel出现异常情况下,同样须要对异常进行处理来包管数据一致性。

回滚机制

总结: 这种方法实现难度不算太高,比较合适传统的单体应用,在同一个办法中存在跨库操作的情况。

在分布式架构中,功能 X,须要去调和后端的 A、B 甚至更多的原子办事。那么问题来了,假如 A 和 B 个一一个调用掉败了,那可怎么办呢? 这个时刻,可以用回滚机制来包管一致性。 该机制应用在 钱包合营信贷做的结合放贷项目 中。 该项目中总共有两个原子操作,如下图所示。

分布式系同一致性保障筹划总结

两个原子操作,分别是资金归集和资金到卡。所谓资金归集,是将商户A的钱和商户B的钱归集到中心商户C。而资金到卡,是将中心商户C的钱,经由过程银行体系打入到D用户的银行卡。这两个操作要知足一致性,即资金归集成功,然后打款到用户的卡成功。或者是商户A和B的钱没变更,资金到卡掉败。 总而言之,是不许可资金逗留在中心商户C的。

针对这种情况,经由过程回滚机制,供给一个强大年夜的回滚操作来实现上述的一致性。比如资金归集成功,而资金到卡掉败,那么对归集的资金操作做回滚处理,也就是资金大年夜中心商户C分别回到商户A和B中。

总结: 这种方法缺点比较多,平日在复杂场景下是不推荐应用的,除非是异常简单的场景,异常轻易供给回滚,并且依附的办事也异常少的情况。这种实现方法会造成代码量宏大年夜,耦合性高。并且异常有局限性,因为有很多的营业是无法很简单的实现回滚的,如不雅串行的办事很多,回滚的成本实袈溱太高。

本地消息表

这种实现方法的思路,其实是源竽暌冠 ebay,后来经由过程付出宝等公司的布道,在业内广泛应用。其根本的设计思惟是将长途分布式事务拆分成一系列的本地事务。如不雅不推敲机能及设计优雅,借助关系型数据库中的表即可实现。本地消息的方法,在应用在 钱包非核心营业异步化改革项目 中。该项目当时改革的筹划如下:

  1. 核心营业及时写入交易表
  2. 非核心营业非及时异步写入交易表按照用户维度的交易萌芽表。

分布式系同一致性保障筹划总结

如图所示,是应用本地消息表保持最终一致性的应用。 具体如下:

  1. 营业A将本地消息和A营业数据以本地事务的方法写入DB1;
  2. 营业A写完本地事务后,发送消息给MQ。
  3. MQ推送消息给营业B,营业B履行消息,写入DB2.
  4. 因为MQ不克不及包管消息不丢,如不雅消息损掉了,则须要经由过程营业C,攫取DB1的消息,然后rpc发送给营业B从新履行。

当然,若何断定DB1的消息已经花费,这个可以经由过程DB2的事务履行结不雅来断定。

总结: 上诉的方法是一种异常经典的实现,根本避免了分布式事务,实现了“最终一致性”。然则,关系型数据库的吞吐量和机能方面存在瓶颈,频繁的读写消息会给数据库造成压力。所以,在真正的高并发场景下,该筹划也会有瓶颈和限制的。

补偿机制

补偿机制在分布式体系中,应用最为广泛。在钱包应用的场景比较多,比如 核心收银台和付款到卡 。 核心收银台中,当请求银行扣款,扣款成功后,自身体系挂掉落了。这个时刻就会有一个后台法度榜样,我们也称作补单法度榜样来开端处理这类流程,让本来中心断掉落的流程持续走下去。

一般成熟的体系中,对于级别较高的办事和接口,整体的可用性平日都邑很高。如不雅有些营业因为瞬时的收集故障或调用超时等问题,那么这种补偿机制其实是异常有效的。

总结

交易表是交易维度的,而为了知足用户的萌芽机能,须要备份复制雷同的按照用户维度的交易萌芽表。 大年夜营业属性上来看,交易表是核心营业,交易萌芽表长短核心营业(萌芽应用)。而实现上,交易表是核心数据库,而萌芽表则属于非核心数据库。 然则, 这两者须要知足一致性。 关于这类一致性保障,如不雅有不丢消息的消息队列,则很轻易解决。万一没有这类消息队列呢? 其实,应用本地消息表,也一样可以解决。

本文经由过程核心体系的几个具表实际项目,阐述了若何包管分布式体系的一致性。每一种筹划都有必定的特点和应用处景。 其实分布式体系的事务一致性本身是一个技巧难题,今朝没有一种很简单很完美的筹划可以或许应对所有场景。具体照样要应用者根据不合的营业场景去决定。

【编辑推荐】

  1. 一图秒懂中国数据库的40年江湖
  2. MySQL组复制技巧实现与数据库机能测试对象
  3. 关于数据库“状况”字段设计的思虑与实践
  4. 若何应用AWR申报来诊断数据库机能问题
  5. Oracle数据库中直方图对履行筹划的影响
【义务编辑:未丽燕 TEL:(010)68476606】

  推荐阅读

  Intel 8代酷睿处理器要来了 值不值得买?

【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦! 买新照样买旧?似乎很多的网友都邑直不雅的说“买新不买旧”。当然,8代的“Coffee >>>详细阅读


本文标题:分布式系统一致性保障方案总结

地址:http://www.17bianji.com/lsqh/37590.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)