游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

分布式数据库如何保证数据在分布式场景下的高性能?

  一致性是高可用的必备条件
  在现实世界中,分布式数据库的节点并不总是处于活动状态且相互能够通信的。但是,以上这些故障不应该影响数据库的可用性。换言之,从用户的角度来看,整个系统必须像没有遭到任何故障一样继续运行。系统高可用性是分布式数据库一个极其重要的特性,甚至在软件工程中,我们始终致力于实现高可用性,并尽量减少停机时间。
  为了使系统高度可用,系统需要被设计成允许一个或多个节点的崩溃或不可访问。为此,我们需要引入如上一讲所说的复制技术,其核心就是使用多个冗余的副本来提高系统的可用性。但是,一旦添加了这些副本,我们将面临使多个数据副本保持同步的问题,并且遭遇故障后如何恢复系统的问题。
  这就是MySQL复制发展历程所引入的RPO概念,也就是系统不仅仅要可用,而且数据还需要一致。所以高可用必须要尽可能满足业务连续性和数据一致性这两个指标。
  而我们马上要介绍的CAP理论会告诉我们还有第三个因素网络分区会对可用性产生影响。它会告诉我们可用性和一致性在网络分区下是不能同时满足的。CAP理论与注意事项
  首先,可用性是用于衡量系统能成功处理每个请求并作出响应的能力。可用性的定义是用户可以感知到的系统整体响应情况。但在实践中,我们希望组成系统的各个组件都可以保持可用性。
  其次,我们希望每个操作都保持一致性。一致性在此定义为原子一致性或线性化一致性。线性一致可以理解为:分布式系统内,对所有相同副本上的操作历史可以被看作一个日志,且它们在日志中操作的顺序都是相同的。线性化简化了系统可能状态的计算过程,并使分布式系统看起来像在单台计算机上运行一样。
  最后,我们希望在容忍网络分区的同时实现一致性和可用性。网络是十分不稳定的,它经常会分为多个互相独立的子网络。在这些子网中,节点间无法相互通信。在这些被分区的节点之间发送的某些消息,将无法到达它的目的地。
  那么总结一下,可用性要求任何无故障的节点都可以提供服务,而一致性要求结果需要线性一致。埃里克布鲁尔(EricBrewer)提出的CAP理论讨论了一致性、可用性和分区容错之间的抉择。
  其中提到了,异步系统是无法满足可用性要求的,并且在存在网络分区的情况下,我们无法实现同时保证可用性和一致性的系统。不过我们可以构建出,在尽最大努力保证可用性的同时,也保证强一致性的系统;或者在尽最大努力保证一致性的同时,也保证可用性的系统。
  这里提到的最大努力意味着,如果一切正常,系统可以提供该特性的保证,但是在网络分区的情况下,允许削弱和违反这个保证。换句话说,CAP描述了一种组合性选择,也就是要有取舍。从CAP理论的定义,我们可以拥有以下几种系统。CP系统:一致且容忍分区的系统。更倾向于减少服务时间,而不是将不一致的数据提供出去。一些面向交易场景构建的NewSQL数据库倾向于这种策略,如TiDB、阿里云PolarDB、AWSAurora等。但是它们会生成自己的A,也就是可用性很高。AP系统:可用且具有分区容忍性的系统。它放宽了一致性要求,并允许在请求期间提供可能不一致的值。一般是列式存储,NoSQL数据库会倾向于AP,如ApacheCassandra。但是它们会通过不同级别的一致性模式调整来提供高一致性方案。
  CP系统的场景实现思路是需要引入共识算法,需要大多数节点参与进来,才能保证一致性。如果要始终保持一致,那么在网络分区的情况下,部分节点可能不可用。
  而AP系统只要一个副本就能启动,数据库会始终接受写入和读取服务。它可能最终会丢失数据或产生不一致的结果。这里可以使用客户端模式或Session模型,来提供一致性的解决方案。
  使用CAP理论时需要注意一些限制条件。
  CAP讨论的是网络分区,而不是节点崩溃或任何其他类型的故障。这意味着网络分区后的节点都可能接受请求,从而产生不一致的现象。但是崩溃的节点将完全不受响应,不会产生上述的不一致问题。也就是说,分区后的节点并不是都会面临不一致的问题。而与之相对的,网络分区并不能包含真实场景中的所有故障。
  CAP意味着即使所有节点都在运行中,我们也可能会遇到一致性问题,这是因为它们之间存在连接性问题。CAP理论常常用三角形表示,就好像我们可以任意匹配三个参数一样。然而,尽管我们可以调整可用性和一致性,但分区容忍性是我们无法实际放弃的。
  如果我们选择了CA而放弃了P,那么当发生分区现象时,为了保证C,系统需要禁止写入。也就是,当有写入请求时,系统不可用。这与A冲突了,因为A要求系统是可用的。因此,分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构。
  如下图所示,其实CA类系统是不存在的,这里你需要特别注意。
  图1CAP理论
  CAP中的可用性也不同于上述的高可用性,CAP定义对请求的延迟没有任何限制。此外,与CAP相反,数据库的高可用性并不需要每个在线节点都可以提供服务。
  CAP里面的C代表线性一致,除了它以外,还有其他的一致模式,我们现在来具体介绍一下。一致性模型
  一致性模型是分布式系统的经典内容,也是入门分布式数据库的重要知识点。但很少有人知道,其实一致性模型来源于单机理论中的共享内存。
  从用户的角度看,分布式数据库就像具有共享存储的单机数据库一样,节点间的通信和消息传递被隐藏到了数据库内部,这会使用户产生分布式数据库是一种共享内存的错觉。一个支持读取和写入操作的单个存储单元通常称为寄存器,我们可以把代表分布式数据库的共享存储看作是一组这样的寄存器。
  每个读写寄存器的操作被抽象为调用和完成两个动作。如果调用发生后,但在完成之前该操作崩溃了,我们将操作定义为失败。如果一个操作的调用和完成事件都在另一个操作被调用之前发生,我们说这个操作在另一个操作之前,并且这两个操作是顺序的;否则,我们说它们是并发的。
  如下图所示,a)是顺序操作,b)和c)是并发操作。
  图2顺序操作并发操作
  多个读取或写入操作可以同时访问一个寄存器。对寄存器的读写操作不是瞬间完成的,需要一些时间,即调用和完成两个动作之间的时间。由不同进程执行的并发读写操作不是串行的,根据寄存器在操作重叠时的行为,它们的顺序可能不同,并且可能产生不同的结果。
  当我们讨论数据库一致性时,可以从两个维度来区别。滞后性。它是数据改变的时刻与其副本接收到数据的时刻。这是上一讲所介绍的复制延迟场景,一般被归类为客户端一致性范畴。我们将在15再谈一致性:除了CAP之外的一致性模型还有哪些中进一步讨论。顺序性。讨论的是各种操作在系统所有副本上执行的顺序状态。这是本讲一致性模型所讨论的重点。
  现在我们对顺序性再做进一步的探讨。
  当面对一系列读写操作时,作为人类,我们对它们的执行顺序是有一个主观判断的。甚至,对于一个单机数据而言,这些操作的顺序也是可以确定的。但是,在分布式系统中做出这种判断就不是那么容易了,因为很难知道什么时候确切地发生了什么,并且很难在整个集群中立刻同步这些操作。
  为了推理操作顺序并指出真正的结果,我们必须定义一致性模型来保障顺序性。
  我们怎么来理解模型中保障的含义呢?它是将一致性模型视为用户与数据库之间的一种约定,每个数据库副本如何做才能满足这种顺序保障?并且用户在读取和写入数据时期望得到什么?也就是说,即使数据是被并发读取和写入的,用户也可以获得某种可预测的结果。
  需要注意,我们将要讨论单一对象和单一操作一致性模型,但现实的数据库事务是多步操作的,我们将在下面事务与一致性部分进一步讨论。
  下面我按照顺序性的保障由强到弱来介绍一致性模型。严格一致性
  严格的一致性类似于不存在复制过程:任何节点的任何写入都可立即用于所有节点的后续读取。它涉及全局时钟的概念,如果任何节点在时刻T1处写入新数据A,则所有节点在T2时刻(T2满足T2T1),都应该读到新写入的A。
  不幸的是,这只是理论模型,现实中无法实现。因为各种物理限制使分布式数据不可能一瞬间去同步这种变化。线性一致性
  线性一致性是最严格的且可实现的单对象单操作一致性模型。在这种模型下,写入的值在调用和完成之间的某个时间点可以被其他节点读取出来。且所有节点读到数据都是原子的,即不会读到数据转换的过程和中间未完成的状态。
  线性一致需要满足的是,新写入的数据一旦被读取出来,那么所有后续的读操作应该能读取到这个数据。也就是说,一旦一个读取操作读到了一个值,那么后续所有读取操作都会读到这个数值或至少是最近的一个值。
  上面的定义来自早期的论文,我将里面的关键点提炼一下,如下所示。需要有全局时钟,来实现所谓的最近。因为没有全局一致的时间,两个独立进程没有相同的最近概念。任何一次读取都能读到这个最近的值。
  下面我通过一个例子来说明线性一致性。
  现在有三个节点,其中一个共享变量x执行写操作,而第三个节点会读取到如下数值。第一个读操作可以返回1、2或空(初始值,两个写操作之前的状态),因为两个写操作仍在进行中;第一次读取可以在两次写入之前,第一次写入与第二次写入之间,以及两次写入之后。由于第一次写操作已完成,但第二次写操作尚未完成,因此第二次读操作只能返回1和2。第三次读只能返回2,因为第二次写是在第一次写之后进行的。
  下图正是现象一致性的直观展示。
  图3线性一致性
  线性一致性的代价是很高昂的,甚至CPU都不会使用线性一致性。有并发编程经验的朋友一定知道CAS操作,该操作可以实现操作的线性化,是高性能并发编程的关键,它就是通过编程手段来模拟线性一致。
  一个比较常见的误区是,使用一致性算法可以实现线性一致,如Paxos和Raft等。但实际是不行的,以Raft为例,算法只是保证了复制Log的线性一致,而没有描述Log是如何写入最终的状态机的,这就暗含状态机本身不是线性一致的。
  这里推荐你阅读TiKV关于线性一致的实现细节,由于线性一致性价比不高,这里就不进行赘述了,我们接下来说说顺序一致性和因果一致性。顺序一致性
  由于线性一致的代价高昂,因此人们想到,既然全局时钟导致严格一致性很难实现,那么顺序一致性就是放弃了全局时钟的约束,改为分布式逻辑时钟实现。顺序一致性是指所有的进程以相同的顺序看到所有的修改。读操作未必能及时得到此前其他进程对同一数据的写更新,但是每个进程读到的该数据的不同值的顺序是一致的。
  下图展示了P1、P2写入两个值后,P3和P4是如何读取的。以真实的时间衡量,1应该是在2之前被写入,但是在顺序一致性下,1是可以被排在2之后的。同时,尽管P3已经读取值1,P4仍然可以读取2。但是需要注意的是这两种组合:12和21,P3和P4从它们中选择一个,并保持一致。下图正是展示了它们读取顺序的一种可能:21。
  图4顺序一致性
  我们使用下图来进一步区分线性一致和顺序一致。
  图5区分线性一致和顺序一致
  其中,图a满足了顺序一致性,但是不满足线性一致性。原因在于,从全局时钟的观点来看,P2进程对变量x的读操作在P1进程对变量x的写操作之后,然而读出来的却是旧的数据。但是这个图却是满足顺序一致性,因为两个进程P1和P2的一致性并没有冲突。
  图b满足线性一致性,因为每个读操作都读到了该变量的最新写的结果,同时两个进程看到的操作顺序与全局时钟的顺序一样。
  图c不满足顺序一致性,因为从进程P1的角度看,它对变量y的读操作返回了结果0。那么就是说,P1进程的对变量y的读操作在P2进程对变量y的写操作之前,x变量也如此。因此这个顺序不满足顺序一致性。
  在实践中,你就可以使用上文提到的一致性算法来实现顺序一致。这些算法可以保证操作在每个节点都是按照一样的顺序被执行的,所以它们能保证顺序一致。
  如GoogleMegastore这类系统都是使用Paxos算法实现了顺序一致性。也就是说在Megastore内部,如果有一个数据更新,所有节点都会同步更新,且操作在各个节点上执行顺序是一致的。因果一致性
  相比于顺序一致性,因果一致性的要求会低一些:它仅要求有因果关系的操作顺序是一致的,没有因果关系的操作顺序是随机的。
  因果相关的要求有如下几点。本地顺序:本进程中,事件执行的顺序即为本地因果顺序。异地顺序:如果读操作返回的是写操作的值,那么该写操作在顺序上一定在读操作之前。闭包传递:和时钟向量里面定义的一样,如果ab、bc,那么肯定也有ac。
  那么,为什么需要因果关系,以及没有因果关系的写法如何传播?下图中,进程P1和P2进行的写操作没有因果关系,也就是最终一致性。这些操作的结果可能会在不同时间,以乱序方式传播到读取端。进程P3在看到2之前将看到值1,而P4将先看到2,然后看到1。
  图6因果一致性
  而下图显示进程P1和P2进行因果相关的写操作并按其逻辑顺序传播到P3和P4。因果写入除了写入数据外,还需要附加一个逻辑时钟,用这个时钟保证两个写入是有因果关系的。这可以防止我们遇到上面那张图所示的情况。你可以在两个图中比较一下P3和P4的历史记录。
  图7逻辑时钟
  而实现这个逻辑时钟的一种主要方式就是向量时钟。向量时钟算法利用了向量这种数据结构,将全局各个进程的逻辑时间戳广播给所有进程,每个进程发送事件时都会将当前进程已知的所有进程时间写入到一个向量中,而后进行传播。
  因果一致性典型案例就是COPS系统,它是基于causal一致性模型的KV数据库。它定义了dependencies,操作了实现因果一致性。这对业务实现分布式数据因果关系很有帮助。另外在亚马逊Dynamo基于向量时钟,也实现了因果一致性。事务隔离级别与一致性模型
  现在我们谈论了一致性模型,但是它与数据库领域之中的事务有什么区别呢?我先说结论:有关系但又没有关系。
  怎么理解呢?我先来论证它们之间的无关性。
  ACID和CAP中的C是都是一致性,但是它们的内涵完全不同。其中ADI都是数据库提供的能力保障,但是C(一致性)却不是,它是业务层面的一种逻辑约束。
  以转账这个最为经典的例子而言,甲有100元RMB,乙有0元RMB,现在甲要转给乙30元。那么转账前后,甲有70,乙有30,合起来还是100。显然,这只是业务层规定的逻辑约束而已。
  而对于CAP这里的C上文已经有了明确说明,即线性一致性。它表示副本读取数据的即时性,也就是对何时能读到正确的数据的保证。越是即时,说明系统整体上读取数据是一致的。
  那么它们之间的联系如何呢?其实就是事务的隔离性与一致模型有关联。
  如果把上面线性一致的例子看作多个并行事务,你会发现它们是没有隔离性的。因为在开始和完成之间任意一点都会读取到这份数据,原因是一致性模型关心的是单一操作,而事务是由一组操作组成的。
  现在我们看另外一个例子,这是展示事务缺乏一致性后所导致的问题。
  图8事务与一致性
  其中三个事务满足隔离性。可以看到T2读取到了T1入的值。但是这个系统缺乏一致性保障,造成T3可以读取到早于T2读取值之前的值,这就会造成应用的潜在Bug。
  那现在给出结论:事务隔离是描述并行事务之间的行为,而一致性是描述非并行事务之间的行为。其实广义的事务隔离应该是经典隔离理论与一致性模型的一种混合。
  比如,我们会在一些文献中看到如onecopyserializabilitystrongsnapshotisolation,等等。前者其实是serializability隔离级别加上顺序一致,后者是snapshot隔离级别加上线性一致。
  所以对分布式数据库来说,原始的隔离级别并没有舍弃,而是引入了一致性模型后,扩宽数据库隔离级别的内涵。总结
  今天的内容较长,不过已经精炼很多了。我们从高可用性入手,介绍了CAP理论对于分布式模型评估的影响;而后重点介绍了一致性模型,这是核心,用来帮助你评估分布式数据库的特性。
  最后我介绍了事务隔离级别与一致性模型之间的区别与联系,帮助你认清分布式数据库下的事务隔离级别的概念。

很多人说买了哈弗H6就会后悔,但为什么销量还是那么高?沉稳,扎实,厚重,用料十足,加强钢多,毛病极少,安全性高,现在全部用双离合,油耗低很多了,实际油耗八点几。买车只认长城汽车。合资车不考虑,合资车都是国企,国企老总都是官员,每届……标致终于放出大招,高性能轿跑来袭,无框车门4。3秒破百一般来说,较大的车展活动也不过持续两天,当然我们指的是车企发布参展车型的时间,截至目前2019日内瓦车展的新车型都已经亮相,而最让人印象深刻的无疑是一款由标致运动部门工程师设计……世界睡眠日睡不好就是失眠吗?怎样科学睡眠?良好睡眠是健康之源。然而,近年来却有越来越多人受到睡不着、睡不好的困扰。国民睡眠质量和助眠需求调研报告显示,成年人中50以上存在睡眠问题,90后、80后尤甚。3月21日是世界睡……准备买骐达2019款智享,懂车的朋友们帮忙参谋一下,合不合适谢谢邀请,你想准备买骐达2019款智享版车型,并询问合不合适,日产这款骐达智享版车型,是A级紧凑型车型定位,骐达车型18年共销售59738台,月均销售4千7百多台,而19年1月……卡宴玩起溜背来那就没对手什么事了保时捷卡宴,无论是不是懂车的人几乎都能认识,或者至少听说过,那天生自带的保时捷气质特别时尚动感。保时捷卡宴最早亮相于2002年初的日内瓦车展,分为Cayenne,Cayenne……兰德酷路泽最新动态兰德酷路泽【陆地巡洋舰】是丰田汽车出品的,是丰田公司生产的一款进口ORV越野车(OffRoadVehicle),它的外观在继承原有设计DNA的同时具备新时代的新鲜感先进性风格进……五环内的郊野公园,看李花海,大到足够逛一天的郊野公园北京四环到六环之间的郊野公园,景美人少离家近,瓜哥给您打前站。走得多了,瓜哥发现这些郊野公园都有一个特点,就是很多是连片挨着的,所以咱们就一片一片地说。今天咱们说的……预算只有8万元,想买SUV,这4款车不能错过,动力强劲有面子预算只有8万元,想买SUV,这4款车不能错过,动力强劲有面子自去年以来,许多人明显感受到了钱不再好挣了,因此开源节流无疑是许多人共同的选择。曾经能买二十万的车,现在也只能……3年半亏损1。77亿,帮你戒毒戒酒的公司要IPO了戒毒戒酒第一股要来了?作者于婞编辑丨武丽娟来源野马财经毒瘾难戒,酒瘾亦然,成瘾行为已经发展成为影响人们身心健康的全球性问题。其实成瘾是一种复杂的疾……库里八项数据全队第一,当爹当妈还要做保姆,勇士可以接盘雅各布前言:先后输给掘金、太阳、黄蜂、活塞、热火和魔术,刚刚更是遭遇了一波四连败,勇士队的排名已经掉到了西部第十二,根本原因就是勇士的防守体系出了问题,内线护筐能力差尤为突出。……走进区域看发展传统工业区如何数字化转型?这里给出一份答案中新网重庆2月22日电(刘欢)随着数字经济的发展,传统工业开始寻求智能化转型。数字化变革浪潮中,传统工业大区如何通过数字化赋能实体经济?又应该如何进行转型升级?21日,中……全系三缸发动机,改款福睿斯最低配福克斯都妥协了,我还能怎样作为国内新一代合资家轿代表之一,福特福睿斯自上市以来,凭借较高的性价比,在国内积累了庞大的用户群体。2018年全年销量达到15万辆,同时去年十月份推出了中期改款车型,外观配置有……
INS新宠女模,台湾特色款让人无法拒绝要知道,身材好的人并非都是健身教练,今天一姐给大家介绍的这位小姐姐,大家来看看浑身上下雌性荷尔蒙都要溢出了屏幕,这性感气质,分分钟爆棚的节奏……苑维玮很想当面请教克劳琛,当年如何将球队调成那样的状态记者王伟报道近日,深足俱乐部任命前国脚苑维玮担任俱乐部U21梯队主教练、李健华担任助教,这支球队的比赛任务,就是U21联赛。接到任命后,苑维玮火速从重庆飞往深圳,然后转道……2。5亿年前发生了什么,96的物种突然消失?中国学者发现重要灭绝是生命的一部分,动植物无时无刻不在消失,我们星球上曾经存在的所有生物中,大约99都已经灭绝。地球正常的灭绝率通常被认为是每100年里10000个物种中就有0。1到1个……iPhone15系列将有五款机型经典型号回归中关村在线消息:据爆料称,明年发布的iPhone15系列将会有五款机型发布,分别是iPhone15、iPhone15Plus、iPhone15Pro、iPhone15Ultra……(新华网)山东新泰高质量发展助推县域经济开门红今年以来,山东省新泰市通过解决资金、土地等要素瓶颈,出台鼓励人才创业、企业创新等一系列招才引智新政,推动县域经济高质量发展。在企业提质增效上围绕6大产业和9条产业链,对高端装备……专业用户看过来,AMDW6600显卡4900元虽然现在的游戏显卡性能已经非常强大,但对于专业设计领域来说,专业显卡对于专业的设计软件有着更好的优化和性能Buffer加成。AMDRadeonProW6600是AMD在2021……杨洋被八卦热巴和赵露思谁让你更心动?杨洋漏嘴一句话,太现实霸气叫气质,温柔也是气质。你喜欢哪种呀?霸气和温柔自由切换的那种洋洋的咖位,一直居于顶流,它的热度只会有增无减。杨洋和很多一线明星合作过俊男美女的搭配更是让人养眼。……今年双11电商数据到底怎么样?双11刚刚过去,可能大家会有点疑惑,因为根据以往的情况阿里和京东都正式对外公布双11当天的交易额,但是今年没有,也没有什么大新闻出现。往年的业绩喜报、成交大屏,也都一同缺……适合老年人的服装面料作者:宋立丹随着我国老龄人口的规模不断增长,老年人的生活状态成为全社会关注的重点。老年人(60岁及以上)的身体出现衰老,最明显的表现之一就是皮肤状态的变化。人体的皮肤具有……油价调整消息今天3月12日,加油站调价后,9295号汽油售价日前刷到一个奔驰车主加完油捋油管、抖油枪的视频,搞不搞笑是另外一回事,奔驰车主都开始这样的骚操作了,可见当前油价到了啥水平,不错,在经历了去年的上涨,以及今年的四重奏以后,几个……丹麦首相直言北溪管道遭蓄意破坏!波兰前外长谢谢你,美国当地时间9月26日,丹麦媒体报道称,北溪2天然气管道附近发生天然气泄漏,相隔仅仅一天,27日,北溪1天然气管道也被曝出发生了两处泄漏。瑞典和丹麦都记录到强烈的水下爆炸,据……比特币和以太币回撤周末损失,因为空头平仓达到1。83亿美元由于美国政府和美元代币发行人Circle的喘息,市场大幅上涨。比特币(BTC)和以太币(ETH)在过去24小时内飙升10,以收复所有周末的跌幅,此前加密货币市场因硅谷银行……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网