首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CAP定理错误吗?

CAP定理错误吗?
EN

Stack Overflow用户
提问于 2016-10-24 12:35:08
回答 2查看 1.9K关注 0票数 1

摘自维基百科的上限定理定义:theorem

分布式计算机系统不可能同时提供以下三项保证:

  • 一致性(每次读取都接收最新的写入或错误)
  • 可用性(每个请求都收到一个响应,但不保证它包含最新版本的信息)
  • 分区容限(系统继续运行,尽管由于网络故障而造成任意分区)

我的想法是:

对于任何具有CA的系统,它们都可以在没有分区的情况下正常运行。当分区存在时,系统可以返回CP或AP,后者可以继续运行。由于该系统可以继续运行,它也实现了P。因此,任何CA系统也是一个CAP系统。因此,声称不可能所有CAP在一个系统中共存的说法是错误的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-24 12:38:56

C和A表示系统在分区面前提供这些保证。因此,在分区期间放弃这些属性会使属性不保持。

CA交换仅在分区期间相关(因为没有分区,我们可以放弃P并获得CA)。那你就得做决定。

实际相关的选择是CP与AP,因为分区总是可以发生的。

票数 4
EN

Stack Overflow用户

发布于 2021-01-30 22:20:45

首先,关于你的假设。

实际上,CACP是相同的,因为如果CA系统获得一个网络分区,那么它将失去Availiability。因此,迟早会发生这种情况,因为随着节点数量的增加,您的节点中任何一个失败的可能性都会跳升到exponentially

您需要知道,当您忽略CAP Theorem中的一个选项,即选择CA和忽略或离开P时,这将适用于您的分布式系统的整个生命周期。因此,我们无法在实际中实现CA,而我们可以有效地实现这一点,比如,它声明它是99.999%可获得的,所以它不能保证会有100%可用性,但它保证它会非常小,可能会被忽略。

此外,Postgresql数据库还可以通过复制有效地实现CA

上面所有的数据库都试图通过保持一定程度的一致性和可用性来维护CA

第二,CAP定理错误吗?

有一些关于CAP Theorem的批评点

  1. CAP Theorem所考虑的唯一错误是网络分区,这种故障是绝对会发生的,但这并不是唯一可能出错的事情,因为节点会崩溃,您可能会在软件中碰到错误,所以我们需要考虑更广泛的权衡。
  2. CAP Theoremlatency只字未提,人们更关心的是可用性。事实上,CAP Theorem可用的系统可以被任意缓慢地响应,并且仍然可以被称为可用。如果加载一个页面需要2分钟的时间,用户不会调用我们的系统Available
  3. 当存在Consistency时,系统倾向于放弃Availability,而当有no Partition时,也倾向于放弃Consistency for latency
  4. CA in CAP TheoremAsymmetric,因为牺牲Consistency(AP系统)的系统总是这样做,而不仅仅是在有网络分区时。同样,对于牺牲Availability(CP系统)的系统来说,它总是这样做,而不仅仅是在有网络分区的情况下。这意味着它不是一直都是Consistent,也不是一直都是Available。在前两种情况下,它们都是无法导航的无用系统,因为CAP Theorem没有给我们一个系统正常运行时会发生什么的看法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40218605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档