CAP定理,又称CAP原则和布鲁尔定理,指出在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。
理解CAP理论可以想象两个节点分处分区两侧。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质(可用性)。除非两个节点可以互相通信,才能既保证C(一致性)又保证A(可用性),这又会导致丧失P(分区容忍性)。
CAP定理起源于计算机科学家埃里克·布鲁尔在2000年的分布式计算原则研讨会(Symposium on Principles of Distributed Computing (PODC))上提出的一个猜想,在2002年,麻省理工学院(MIT)的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。定理讨论了在两个互相矛盾的请求到达彼此连接不通的两个不同的分布式节点的时候的处理方案。
在分布式系统中:
- 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值,同时,一致性也是指事务的基本特征或特性相同。
- 可用性(A):在集群(由多个独立的计算机通过高速的通信网络连接起来的,具有单一系统映象的高性能计算机系统)中一部分节点故障后,集群整体是否还能响应客户端的读写请求,可用性不仅包括读,还有写。
- 分区容忍性(P):当分布式系统中网络分区发生时,系统能够继续正常工作的能力。