作家
登录

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

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

【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!


引言

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

在互联网体系中,幻想的情况下,肯定是欲望体系可以或许同时知足“一致性”、“可用性”和“分区容忍性”。 然则基于熟悉的CAP定律也好,照样BASE理论, 我们知道,在实际情况中是弗成能实现的。而在金融范畴,一致性是最为存眷的特点,任何情况下都必须知足一致性。关于CAP定律和BASE理论,本文不再介绍,有兴趣的同窗可以自行百度一下。本文重点来阐述下关于一致性的筹划,包含强一致性和最终一致性。 而在互联网范畴, 很多情况下都是就义强一致性,来达到高可用性, 系 统往往只须要包管“最终一致性”,只要这个最终时光是在用户可以接收典范围内即可。

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

数据库本地事务

数据库事务肯定是强一致性的筹划,并且是一致性最简单的筹划,因为一致性是数据库的事务来包管的,营业层不须要关怀细节。比较典范的应用是在返现场景下,针对带有返现的交易的退款,须要一次性退两笔交易单,采取的就是经由过程数据库本地事务来完成的。具体如下:

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

用户A花了100元购买商户B的商品,购买停止后返现给用户A 2元。 这是两笔交易,原始交易是100元,返现交易是2元。 那么产生退款时,须要包管两笔交易同时都退款。这个就是直接采取数据库本地事务实现的,即一次退款请求,两笔交易同时退款。

总结: 数据库事务的长处是简单,营业层关怀的很少。然则对于一个可用性很高的体系来说,所有的营业都揉在数据库事务履行,会让事务异常的复杂,晦气于体系的扩大和保护。

两阶段提交

除了数据库可以或许包管本地的一致性,对于互联网体系来说,更多是分布式体系。提到分布式体系,必定提到分布式事务。而分布式事务中,就不得不介绍两阶段提交协定(2pc)。 而在核心体系,两阶段提交的筹划重要应用在 分布式数据库NesioDB和交易账务分别的柔性事务中 。

分布式数据库NesioDB是由百度DBA和百度钱包结合开辟的,支撑分布式事务的数据库,今朝已经应用在百度钱包的核心交易营业上,并稳定运行两年。该数据库的设计请求是让应用者可以或星ㄑ应用单机数据库一样的应用分布式数据库,是以实现的分布式事务,知足单机事务的ACID原则。关于分布式事务的一致性,采取的就是两阶段提交的方法来实现的,并且知足分布式事务模型。如下图所示。

第一阶段是预备阶段。

DTM 通知所有介入事务的各个 RM,给每个 RM 发送 prepare 消息。RM 接收到消息落后入预备阶段后,要么直接返回掉败,要么创建并履行本地事务,写本地事务日记(redo 和 undo 日记),然则 不提交(此处只保存最后一步耗时起码的提交操作给第二阶段履行)。

第二阶段是提交/回滚阶段。

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

DTM 收到 RM 预备阶段的掉败消息或者获取 RM 返回消息超时,则直接给 RM 发送回滚(rollback)消息,不然发送提交(commit)消息。RM 根据 TM 的指令履行提交或者回滚,履行完成后释放所有事务处理过程中应用的锁(最后阶段释放锁)。

第一阶段: 主营业办事调用交易和账务履行try的操作,交易开启事务,做营业上的断定和写入,然则不提交事务。账务层面做资本的锁定。

数据库层面的两阶段提交,可以用来包管分布式事务的一致性,使得应用者应用分布式事务和单机事务一样便利。而两阶段提交的别的一种实现,即TCC(Try-Confirm-Cancel), 也就是营业层面的柔性事务。 交易和账务分别的一致性实现,就是采取这种柔性事务来完成的。起首来说说柔性事务,它涉及 3 个模块, 主营业、大年夜营业 和 晃荡治理器(协作者)。

下面这张图是有关柔性事务一张经典的图。

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

第一阶段:主营业办事分别调用所有大年夜营业办事的 try 操作,并在晃荡治理器中记录所有大年夜营业办事。当所有大年夜营业办事 try 成功或者某个大年夜营业办事 try 掉败时,进入第二阶段。

第二阶段:晃荡治理器根据第一阶段大年夜营业办事的 try 结不雅来履行 confirm 或 cancel 操作。如不雅第一阶段所有大年夜营业办事都 try 成功,则协作者调用所有大年夜营业办事的 confirm 操作,不然,调用所有大年夜营业办事的 cancel 操作。

在第二阶段中,confirm 和 cancel 同样存在掉败情况,所以须要对这两种情况做 异常处理以包管数据一致性。

  1. Confirm 掉败:则回滚所有 confirm 操作并履行 cancel 操作。
  2. Cancel 掉败:大年夜营业办事须要供给主动 cancel 机制,以包管 cancel 成功。

  推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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