[论文阅读]一致性现代分布式数据库系统设计中的权衡因素(一)

132 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

[论文阅读]一致性现代分布式数据库系统设计中的权衡因素(一)

CAP定理对现代分布式数据库系统设计的影响比人们通常认为的要有限。另一个权衡--一致性和延迟之间的权衡,它对七个著名的DDBSs产生了更直接的影响。一个拟议的新表述,PACELC,将这种权衡与CAP统一起来。本文取材于耶鲁大学Abadi的一些博客和文章:www.cs.umd.edu/~abadi/pape…

DDIA中,认为CAP实际没有什么指导意义:

CAP定理没有帮助

CAP有时以这种面目出现:一致性,可用性和分区容错性:三者只能择其二。不幸的是这种说法很有误导性【32】,因为网络分区是一种错误,所以它并不是一个选项:不管你喜不喜欢它都会发生【38】。

在网络正常工作的时候,系统可以提供一致性(线性一致性)和整体可用性。发生网络故障时,你必须在线性一致性和整体可用性之间做出选择。因此,一个更好的表达CAP的方法可以是一致的,或者在分区时可用【39】。一个更可靠的网络需要减少这个选择,但是在某些时候选择是不可避免的。

在CAP的讨论中,术语可用性有几个相互矛盾的定义,形式化作为一个定理【30】并不符合其通常的含义【40】。许多所谓的“高可用”(容错)系统实际上不符合CAP对可用性的特殊定义。总而言之,围绕着CAP有很多误解和困惑,并不能帮助我们更好地理解系统,所以最好避免使用CAP。

CAP定理的正式定义仅限于很狭隘的范围【30】,它只考虑了一个一致性模型(即线性一致性)和一种故障(网络分区vi,或活跃但彼此断开的节点)。它没有讨论任何关于网络延迟,死亡节点或其他权衡的事。 因此,尽管CAP在历史上有一些影响力,但对于设计系统而言并没有实际价值【9,40】。

我正是看了DDIA作者的引用,才读到本论文。并详细分析和考虑CAP,并考虑本文,《再探CAP》,希望不要再写第二篇关于CAP的文章了。

Consistent is: “Atomic, linearizable, consistency [...]. There must exist a total order on all operations such that each operation looks as if it were completed at a single instant. This is equivalent to requiring requests of the distributed shared memory to act as if they were executing on a single node, responding to operations one at a time.”

Available is: “For a distributed system to be continuously available, every request received by a non-failing node in the system must result in a response.”

Partition is: “The network will be allowed to lose arbitrarily many messages sent from one node to another. When a network is partitioned, all messages sent from nodes in one component of the partition to nodes in another component are lost.”

一致性是指:"原子性、可线性化、一致性[...]。所有的操作必须存在一个总的顺序,这样每个操作看起来就像是在一个瞬间完成的。这相当于要求分布式共享内存的请求像在单个节点上执行一样,一次对操作做出响应。"

可用性:"为了使分布式系统持续可用,系统中非故障节点收到的每个请求都必须有响应。":

分区是:"网络将被允许失去从一个节点发送到另一个节点的任意多的消息。当网络被分区时,从分区中的一个组件的节点发送到另一个组件的节点的所有消息都会丢失。"

请注意,我们对于CP系统,舍去了A,也就是双副本强同步,任意一个失败,就返回失败。

如果是AP系统:其实不能完全失去可用性的,因为往往这个系统是最终一致性的,也即是所有就节点在最终总会达成一致,会收敛。对于分布式系统P是必选的,所以我们往往会二选一。

许多设计者错误地认为该定理在正常的系统运行中对DDBS施加了某些限制,因此而实现了一个(存在)不必要的限制的系统。实际上,CAP只是在面对某些类型的故障时提出了限制,并没有在正常运行时限制任何系统能力。

尽管如此,在正常操作中抑制DDBS能力的基本权衡还是影响了著名系统的不同设计选择。事实上,一个特定的权衡--一致性和延迟之间的权衡--可以说对DDBS设计的影响比CAP的权衡更大。这两组权衡都很重要;将CAP和一致性/延迟权衡统一为一个单一的表述--PACELC--可以相应地导致对现代DDBS设计的更深理解。