我不知道这是否是一个恰当的问题.
众所周知,在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'甚至更高?
CAP 中的可用性意味着“所有(非故障)节点都可用于查询”。它与有关“高可用性”的维基百科链接无关。
例如,PAXOS 算法是 CP(无可用性属性),因为少数节点在分区期间“关闭”。但是如果你需要一致性,那么 PAXOS 就被认为是“高可用性”。
相反,单节点 MySQL 数据库服务器是 CA(具有 CAP Availability 属性)。它可以重新启动(并在执行 BIOS 检查、文件系统检查、数据库修复等时停机数小时)。当它完成启动时,它会再次开始响应查询。这是完美的可用性(根据 CAP 定理),但对于“高可用性”来说却是可怕的可用性。