首页 > 编程知识 正文

一致性可用性分区容错性,分区容错性和一致性

时间:2023-05-04 06:14:37 阅读:12339 作者:4121

在计算机界有很多在很高的意义上难以理解的术语。 CAP是其中之一。 “一致性”、“可用性”和“分区容错”是难以理解的。 此外,CAP定理) )。

qsdxh在公司发奋,经过多年的努力,终于到达了修订者的位置。

架构师的椅子还没有热起来,所以很快就来了一个做架构设计的项目。

老板叫来了寂寞的西牛,诡谲地告诉了他。 “寂寞的西牛啊,数据是我们宝贵的资产。 你设计的系统一定要确保数据不会丢失啊。

寂寞的西牛说上司很放心,这方面我很有经验。 一般来说,我们必须对数据进行冗馀处理。 简单来说,就是在数据上制作多个副本并保存。 我设计分布式系统,将数据备份到多个机器节点。

几天后,寂寞的西牛发来了一张展示这个分布式系统是如何工作的图:

数据副本由不同的机器冗馀,中间有数据副本,保证数据同步。

虽然只是两台机器,但构成了简单的分布式环境。

上司不懂技术,但看到数据在不同的机器之间备份,就放心了。

经过几个月的开发和测试,系统顺利上线,但很快就发现分布式系统不像独立系统那么简单,容易因网络原因、某台机器原因导致通信失败,或节点不可用

有一天,用户先访问了左边的计算机a,把数据写了进去。 后来,电脑a不幸的是,网管被悲伤的网管踢了。 这直接导致了两个严重的后果。

1 .如果在负载均衡中未找到机器a,并且确定它是浮动的,则将用户的下一次访问转发到机器b。

2 .复制数据也找不到机器a,只能罢工。 用户刚写入的数据无法复制到机器b。 机器b上还有旧数据

怎么办? 这是巧合,骂网管,插网管就行了,谁能保证接下来两台机器的通信一致顺畅呢?

小组中受伤的指甲油说:“我们的机器b还活着,还可以提供服务。 数据无法复制到机器b中,不是因为你什么都不看数据吗? 无害,不影响大局,勉强能用。 连接网线后,数据拷贝将正常工作,一切都将恢复正常。”

受伤的指甲油不小心选了系统的可用性(Availability,简称A)。 如果系统能提供服务就好了。 数据不一致是可以忍受的。

qsdxh说:不行。 老板说,我们系统的数据极其重要,如果数据不匹配就会带来严重后果,所以机器b与这些重要数据相关的功能也必须停止,在机器a连接网线之前,数据必须同步后才能开始工作

很明显,qsdxh按照上司的指示,以一致性(Consistency, 简称C )名列前茅。

因此,很明显,在网络节点之间不能进行通信的情况下,数据复制所涉及的功能可以选择可用性(a )或一致性(c ),而不能同时选择两者。

寂寞的西牛仔细想想,其实这两个选择的背后其实隐藏着另一个事实。 这意味着如果网络节点之间不能进行通信,则节点将被隔离,产生网络分区,整个系统还在工作。 寂寞的西牛还有分区容错性(Partition tolerance, 简称P)

如果选择可用性(a )分区容错(p ),请放弃完整性(c )。

如果选择一致性(c )分区容错(p ),则必须放弃可用性(a )。 是的。 在这种情况下,某些系统功能不可用,因为需要等待数据同步,但您可以访问与数据同步无关的功能。 这相当于系统出现了功能下降。

既然有AP和CP,不就出现了一个简单的一致性可用性(CA )组合吗? 是不是没有分区容错能力,只保持可用性和一致性? 仔细想想,这种情况其实退化为单体APP,没有意义。

寂寞的西牛觉得自己在分布式计算机系统中发现了三个保证不能同时满足,最多可以满足两个:一致性(c )、可用性(a )、分区容错(p )。

他决定把找到定律称为CAP定理,它听起来比较高深,自己看起来很高深。

如果你真的不知道这个CAP,qsdxh会告诉你更容易理解的版本。 在分布式系统中,如果发生节点之间无法通信(发生网络分区),则只能选择可用性或一致性,不能同时选择。

(完) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。