前言:CAP定理是学习分布式所必备的知识点之一,所以先深入的理解一下这个知识点。初看CAP定理时,有些不以为意,在后续的学习中发现这是个特别值得仔细揣摩的点。
一、CAP定理
我们了解到分布式是将一个业务拆分成多个子业务,就有了我们的分布式系统,而CAP定理就是针对分布式系统的。CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),也称为帽子原理。
C:Consistence,一致性(强一致性)。所有子业务在同一时刻读取的数据都具有相同的值。
A:Availability,可用性,好的响应性能。每次请求都能获取到非错的响应。
P:Partition tolerance,分区容忍性(分区容错性)。某个子业务发生故障时,系统仍能够继续运行。
二、关于三选二
- 通过字面意思我们可以理解为这是分布式系统的三个重要属性。也可以这样说,这个分布式系统有一致性,有可用性,有分区容错性(这里可能会因为这个词的陌生而觉着别扭,需要简单理解下)。
- 很多资料说明对一个分布式系统来说不可能同时满足以上三点,只能实现其中俩点。 也有说分区容忍性是必须实现的,我们只能在剩余俩点中二选一。 可以看出矛盾点来自于分区容忍性,让我们来了解下。
三、分区容忍性
分区:一个分布式系统里各子业务的网络应该是连通的。因一些原因使得这些子业务之间的网络不通了,从而导致系统被切分成若干个孤立的区域。这就是分区。
分区容忍性:如果数据只保存在一个子业务中,那么出现分区时,其它子业务就访问不到数据了,这时出现的分区是无法容忍的。
如何提高分区容忍性:提高分区容忍性的办法就是一个数据项复制到多