1.概述

在本教程中,我们将介绍并解释CAP定理。我们还将熟悉配电系统的设计。最后,我们将检查提出的定理的问题,并看一看今天可用的替代方案。

2.帽定理

2.1。历史

帽假设首次由Eric Brewer于2000年推出;但是,正式证明对于这一假设,并未被其他计算机科学家直到2002年提出。从其介绍中,它被称为帽定理(或酿酒商定理)。最初,Brewer希望社会开始讨论妥协雷竞技app官网网站分布式系统

2.2。基本的定义

是一致性、可用性和分区容忍的缩写。让我们用简单的话来讨论这三个概念:

  • 一致性意味着每次读取操作都会导致获取最新录制。所有信息都保证最新。
  • 可用性是指示分布式系统将始终可用的属性。这样一个系统的一个或多个节点可能会关闭;但是,系统仍然可以通过其他节点访问。
  • 分区容限表示系统被分区的能力。因此,这意味着每个节点都可以独立于其他节点工作。

2.3。定理

CAP定理指出,一个分布式系统只能满足3个特性中的2个。所以可能只有CA,美联社,或CP系统。我们无法保证第三个财产,而另外两个属性已经保证。因此,不存在CAP分布式系统。我们将查看下一节中不同类型系统的示例。

3.数据库和帽

让我们介绍一个重要的定义,以便更容易理解数据库的差异。

3.1。复制

复制是数据库缩放技术之一。该技术基于概念,即可以将来自一个数据库服务器的数据连续(复制)复制到一个或多个其他服务器(称为副本)。应用程序可以使用多个服务器来处理所有请求。因此,可以将负载从一个服务器分发到几个。

通常,主节点称为master。所有的副本都称为从属。主服务器可能只支持写操作来对数据库进行更改。在此之后,更改被分发到所有的从服务器副本上进行读操作。这有助于保持数据库的一致性。这种复制称为主从复制。

但是,也存在主-主复制,其中主和所有副本都允许执行读和写操作。

3.2。数据库比较

让我们看一个三角形,其中一些最常见的数据库根据它们的类型进行分类:

正如我们所看到的,不同类型的数据库被严格归类为CA,美联社,或CP系统。

CA系统保证了一致性和可用性。大多数关系数据库都是CA系统。例如,在PostgreSQL中,一致性是通过主从复制和两阶段实现的交易提交方法。副本与主服务器的同步可以是同步的,也可以是异步的,并且系统是强可用的。问题开始于分区。如果我们试图在PostgreSQL中使用分区,我们永远不能保证一致性。

美联社系统是关于可用性和分区容雷竞技app官网网站差的。因此,它们可能并不总是一致的。一个例子美联社系统是NoSQL数据库是Cassandra。它使用主-主复制,这实际上符合美联社系统的定义。我们可以很容易地对Cassandra执行分区。所有节点都是独立的单元。因此,如果至少有一个节点工作,系统就可用。但是,分区节点之间的同步可能会导致一致性较差。

CP系统是一致的和分区容忍。例如,MongoDB是NoSQL数据库和一个CP系统。强一致性是通过对写操作使用单个主节点来实现的。MongoDB可以在不丢失一致性的情况下进行分区。然而,在分区时,它可能变得不可用。系统不会接受写请求,直到它确保所有操作都被安全保存。

4.一个简单分布式系统设计的例子

在本节中,我们将尝试设计自己的分布式系统。让我们从一个节点开始。让我们假设我们在提供记录服务的呼叫中心工作。我们收到需要注册一些活动的客户的电话(写入操作)。他们也能够回电呼叫,要求记住他们之前告诉我们的事情(阅读操作)。我们决定在单个笔记本中写下所有信息。

一切都适用,但客户的数量开始每天都在增长。我们必须将呼叫放在一个大队列中,但我们了解我们会失去等待几个小时的客户,直到我们接听他们的电话。

我们决定邀请朋友加入我们的日志服务。他还将接听电话,并从自己的笔记本上写下和阅读请求。请注意,现在我们有两个不同的笔记本电脑。一切都好多了一段时间,直到出现问题。

4.1。美联社系统

我们收到了一个让我们要求我们写下他妻子生日的顾客的电话。几个月后,他回答回来,因为他知道他的妻子的生日即将到来,但他不记得日期。这次我们的朋友回答了电话。他没有关于他笔记本中的生日的信息,因为我们没有分享它。雷竞技app官网网站客户疯了:

在上图中,手机代表客户。的LS1.LS2.是伐木服务的两个节点,我们和我们的朋友。

以上情况被称为不一致。现在,我们的系统是一个美联社系统,因为它是可用的和分区宽容。

4.2。CP系统

现在我们决定处理不一致性。每次客户给我们或我们的朋友打电话后,我们都会把所有的信息都记在笔记本上,然后互相打电话同步信息。所以现在顾客总是能从服务中得到真实的信息。

当我们生病时,也可能是一种情况,并且不能为一天或更长时间工作。在这种情况下,我们的朋友首先检查他是否可以调用我们来同步我们的笔记本电脑。如果我们不可用,那么他会通过电子邮件发送给我们。当我们重新开始工作时,我们将首先检查电子邮件以填写笔记本中缺少的数据:

因此,客户将不得不等待服务的答复。我们必须花时间打电话或记下电子邮件中的信息来刷新我们的笔记本。服务变得有点不可用。这是一个CP系统现在。

4.3。CA系统

现在我们的朋友决定退出,但是日志服务继续工作。我们只有一部手机和一本笔记本,就像一开始一样。正如我们可能注意到的,该系统仍然可用。我们会继续接听这些电话,并把它们记录到我们的笔记本上:

因此,我们的系统一致。使用单个源,一个笔记本达到了一致性。我们不需要与我们朋友的笔记本同步。但是,系统未分区,因为我们是日志服务中的单个节点。这是一个CA系统。如果我们因为有大量的客户而雇用另一个朋友来做这项工作,那么我们将不得不再次在可用性和一致性之间做出选择。

4.4。结果

此示例的结论是,我们将始终必须在系统属性之间进行选择。没有完美的系统。我们应该始终构建一个系统,具体取决于它的操作的要求,类型和频率。这个想法是找到一个平衡C,一个, 和P

5.问题和方案

5.1。帽子问题

如今,没有严格使用帽定理。它有一些主要的误解和含糊不清的定义,远非现实世界。

上面的可用性有两个问题。其中一个是那个部分可用系统没有定义。例如,系统可能以50%可用,因为其节点的一半由于某些问题而关闭。该系统仍适用于客户;但是,它不可用盖子。

第二个问题是CAP中的可用性不包括响应时间(延迟)。读请求后1小时或1天应答的系统可用。

许多系统可能就是这样P系统。想象一个主从复制技术的系统。假设这种系统包含一个主节点,一个从站和客户。客户可以从从站读取并只写入主节点。如果我们立即丢失与主人的连接,那么客户会失去可用性。我们的系统成为CP

想象另一种情况。客户向主服务器执行写操作。然后,它试图从从机读取数据,并得到不正确的数据。这可能是因为系统没有足够的时间进行同步。我们已经失去了一致性。现在我们的系统是P如果可能。

5.2。PACELC

PACELC定理是对CAP定理的推广和替代。PACELC的规则更适合于现实世界的分布式系统。定理是一种公式:“如果系统是P那么它就是一个C,否则它是Cl。”

简单地说,如果系统可以容忍分区,那么我们就必须在可用性和一致性之间进行选择。如果无法对系统进行分区以正常工作,那么我们将在构建一致的系统或构建具有低延迟(平均响应时间)的系统之间进行选择。

6.结论

在这篇文章中,我们学习了布鲁尔的CAP定理及其替代。雷竞技app官网网站我们发现系统不能同时具有可用性、分区性、一致性和低潜性。因此,系统特性的选择取决于应用和需求。我们应该记住,为了使系统满足其它性质我们必须牺牲一些性质。

客人
0评论
内联反馈
查看所有评论