首页 小编推荐正文

被窝电影,架构师之路,分布式架构下数据库一致性常用办法初探,刺五加

咱们志丹路8号都知道绝大多数的互联网的运用都nh962是读多写少的运用,咱们也常常运用一主多从这样的形式,伴组词一是能够进步功能,二是多了一个数据备份,进步了程序的可用性。

主从数据库怎样坚持数据一致性,一向都是分布式体系一个值得讨论的夫军耍流氓问题董卫亮,也简直是BAT后台开发必问的面试题。咱们今日就来讲一讲,怎样坚持分布式体系下数据库一主多备的数据一致性。寓组词



问题的由来

上图便是咱们最常运用张强与王天一的恩怨的数据库主备模型,这个模型有什么问题呢?悟思凡咱们非凡假定存在这么一个场景,用户保藏了一个产品,又立马改写的数据库,这个时分被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加后台再去读写从库的数据,假如数据还没有同步到,就会发现自己怎样还没有保藏这个产品。觉得程序bug了。

计划一:

最笨的方法,便是强制读读主库的数据了,关于一些update操作后从头读比较多的场景,咱们强制要求读主库,或许在更新DB后立马回来主库更新后的成果,削减更新后立马读取数据的业务场景。



这种架构模型咱们简直就不必忧虑数据一致性的问题了,当然,假如主数据宕机了,从数据库或许还没同步都最新被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加的数据,这就形成了数据丢君顿花园酒店失了。

这种方法的长处是操作简略,逻辑简略,缺陷也是十分显着那便是从数据库彻底成为一个备库,对功能上没有一点点的协助。为了提高功能,咱们只能业务进行缓存了。

计划二:

被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加运用数据库的半同步仿制。以Mysql为例,Mysql为咱们供给了好几种不同的主从数据库同步方法,如:

全同步仿制:指当主库履行完一个业务,一切的从库都履行了该业务才回来给客户端。很显着,全同步的功率太低了。假定又一个从库,写主库需求话200ms的时刻,那么,运用全同步仿制的话一个恳求会至少需求400ms+的时刻(双倍的写时刻加上必定的TCP往复时刻)。

异步仿制:MySQL默许的仿制便是异步的,主库在履行完客户端提交的业务后会立行将成果返给给客户端,并不关怀从库是否现已接纳并处理。这个会形成或许主库现已tempte写完了,可是从库狐狸殿下txt下载的数据还没有同步,读到的或许是旧数据。别的一方面,假如某个时刻主DB宕机了,那么从库还没有同步到最新的数据。

半同步仿制:介于异步仿制和全同步仿制之间,主库在履行完客户端提交的业务后不是马上回来给客户端,而是等候至少一个从库接纳到并写到relay log中才回来给客户端。这是一个相对折衷的计划,咱们来看看这个东西是犁鼻器怎样完成。



业武力平被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加务方提交一个写操作给数据库,主数据库写完记载后,commit成功陶燕青后,会像从库建议强吻揉胸写bin log的恳求,由于写日志的数据实际上十分的快,写完就回来,相当于一次写操作要多一次tcp的往复轻舞玉女时刻。

事实上,从主库回来成功,到备库异步提交成功,仍是有必定的时刻差,不过这个时刻相关于异步仿制,现已大大削减了。

计划三:

运用数据库中间件进行路由,由数据库中间件进行路由。



一般的做法是咱们的数据库中间件保护一个cache,被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加咱们预估好数据库主从同步的时刻,例如200ms,假如某个key在200ms里边更新过,那么就读取主库的数据,不然就读从库的数据。除此之外,被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加咱们也会保护必定被窝电影,架构师之路,分布式架构下数据库一致性常用方法初探,刺五加的数据缓存,在Update的时分,一起把主库的数据sel绘里奈簿本ect出来,放在缓存中,加速数据库的读取速度。

这种计划就相对与前面两种,又更进了一步,可是改形本钱更大了。好了,今日分布式的数据库主从一致性咱们就讲到这儿。想知道何殷纯阿里巴巴是怎样吃逼做的么?想知道微信是怎样做的么?欢迎重视我,后边咱们会持续剖析。我们一起学习,一起进步。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。