如何理解CAP定理的"可用性"?

cip*_*hor 12 database

我不知道这是否是一个恰当的问题.

众所周知,在CAP定理中,"A"表示"可用性".在维基百科上,"可用性"的解释是:

Availability: a guarantee that every request receives a response about whether it was successful or failed
Run Code Online (Sandbox Code Playgroud)

但是,从工程角度来看,没有ABSOLUTE可用性.我们只能说系统的可用性是5'9'(99.999%),甚至是8'9',但我们不能说系统的可用性是100%,100%可用系统实际上不会退出即使系统有数百万个重复节点,对吧?

CAP定理证明了没有一个系统可以同时满足这3个要求.我的问题是,如果一个系统声称同时满足"A"和"P",那么这个"A"的准确含义是什么?6'9'甚至更高?

fny*_*fny 13

我建议您避开维基百科,而是阅读吉尔伯特和林奇的证明中提供的定义.

" 系统中非故障节点收到的每个请求都必须产生响应"

以及回答你问题的相关脚注

"Brewer最初只需要接收响应的几乎所有请求.由于允许概率可用性不会在发生任意故障时改变结果,为简单起见,我们要求100%可用性"

因此,如果几乎所有请求都收到响应或我们允许发生任意故障,则可以认为系统具有高可用性.

  • 投票是因为它贬低维基百科 (2认同)

Bra*_*ncy 8

CAP 中的可用性意味着“所有(非故障)节点都可用于查询”。它与有关“高可用性”的维基百科链接无关。

例如,PAXOS 算法是 CP(无可用性属性),因为少数节点在分区期间“关闭”。但是如果你需要一致性,那么 PAXOS 就被认为是“高可用性”。

相反,单节点 MySQL 数据库服务器是 CA(具有 CAP Availability 属性)。它可以重新启动(并在执行 BIOS 检查、文件系统检查、数据库修复等时停机数小时)。当它完成启动时,它会再次开始响应查询。这是完美的可用性(根据 CAP 定理),但对于“高可用性”来说却是可怕的可用性。