cap理论不能同时都满足?
来源:2-15 详细探究CAP定理的三个指标

weixin_慕盖茨4049714
2022-07-18
老师,你好,cap理论不能同时都满足,一致性和可用性可能互斥好理解,那和分区容错性的互斥怎么理解呢?
1回答
-
虽然我们知道有 CA、CP、AP 三种组合方式,但是在分布式系统的结构下,网络是不可能做到100%可靠的。既然网络不能保证绝对可靠,那 P(分区容错性)就是一个必选项了。所以通常分布式系统都是围绕AP,或者CP。
原因如下:如果选择 CA组合,放弃 P(分区容错性)。当发生节点间网络故障时,为了保证 C(一致性),那么就必须将系统锁住,不允许任何写入操作,否者就会出现节点之间数据不一致了。但是锁住了系统,就意味着当有写请求进来的时候,系统是不可用的,这一点又违背了 A(可用性)原则。因此分布式系统理论上是不可能有CA组合的,所以我们只能选择 CP 和 AP组合架构。
下面我们来详细看一下 CP架构 和 AP架构的特点:
CP 架构CP架构即 Consisteny(一致性)与 Partition tolerance(分区容错性)的组合。
由于网络问题,节点A和节点B之前不能互相通讯。当有客户端(上图user1)向节点A进行写入请求时(准备写入value2),节点A会不接收写入操作,导致写入失败,这样就保证了节点A和节点B的数据一致性,即保证了Consisteny(一致性)。然后,如果有另一个客户端(上图另一个user2)向B节点进行读请求的时候,B请求返回的是网络故障之前所保存的信息(value1),并且这个信息是与节点A一致的,是整个系统最后一次成功写入的信息,是能正常提供服务的,即保证了Partition tolerance(分区容错性)。上述情况就是保障了CP架构,但放弃了Availability(可用性,写入不可用)的方案
AP 架构
AP架构即 Availability(可用性)与 Partition tolerance(分区容错性)的组合架构。
如上图,由于网络问题,节点A和节点B之前不能互相通讯。当有客户端(上图user1)向节点A进行写入请求时(准备写入value2),节点A允许写入,请求操作成功。但此时,由于A和B节点之前无法通讯,所以B节点的数据还是旧的(value1)。当有客户端向B节点发起读请求时候,读到的数据是旧数据,与在A节点读到的数据不一致。但由于系统能照常提供服务,所以满足了Availability(可用性)要求。因此,这种情况下,就是保障了AP架构,但其放弃了 Consisteny(一致性)。
总结
212022-07-22
相似问题