Skip to the content.

CAP 定理

在计算机科学理论(TOS)中,CAP 定理也叫 Brewer’s theorem,是以计算机科学家 Eric Brewer 名字命名的,他提出在分布式数据存储中,不可能同时存在以下三点的两点;

特别的,CAP 定理意味着在网络分区情况下,必须在一致性和可用性之间做出选择。要注意在 CAP 中的一致性是有别于数据库事务的强一致性(ACID)的

详解

没有一个分布式系统在网络异常下是安全的,因此在一般情况下必须容忍网络分区。在存在分区下,就只剩下两个选项中选择一个:一致性或可用性。当选择一致性时,如果由于网络分区无法保证特定信息是最新的,系统将会返回一个错误或者超时。当选择可用性时,系统总是会继续处理查询以及尝试返回最进可用版本的信息,甚至这个信息由于分区不保证是最新的。

在没有网络错误的情况下——那就是说当分布式系统照常运行 ,可用性和一致性都能满足。

CAP 时常被误解的任务它必须在这三个中放弃其中一个。事实上,只有在当网络分区或发生错误时,才只在一致性和可用性上做出一个选择。在其他时候,不需要做任何取舍。

数据库系统被设计成传统的 ACID 来保证像关系型数据库选择一致性而不是可用性,然而系统是围绕最终一致性原理设计的,选择可用性而不是一致性,例如在 NoSQL 中很常见。

PACELC 定理是在 CAP 基础之上建立的,即使在没有分区的情况下,但在其他方面如延迟性和一致性之间的权衡。