CAP简介

CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。

Consistency (一致性)
简单的说就是在分布式环境中,用于存储相同数据的多个节点中所保存的数据是否完全相同,如果相同就是一致,否则就是不一致。

Availability(可用性)
指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据)。

Partition tolerance(分区容错性)
分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

假设有五个节点: n1-n5, 出现网络分区时被分成两组:[n1-n2]和[n3-n5]。当n1处理客户端请求时。

  • 如果要保证C(一致性),那么它需要把消息复制到所有节点,但是网络分区导致无法成功复制到n3-n5,所以它只能返回"处理失败"的结果给客户端,这时系统就处于不可用状态,即丧失了A。

  • 如果要保证可用性A,那么n1就只能把消息复制到n2,而不用复制到n3-n5(或者无视复制失败/超时),但n3同时也可能在处理客户端请求(譬如对同一个值进行修改),n3也为了保证A而做了同样的处理。 那么[n1-n2]和[n3-n5]的状态就不一致了,于是就丧失了C。

  • 如果不支持P(也就是不容忍网络分区), A和C同时满足,这就意味着系统不会出现网络分区,当然在分布式环境下这是不可能的。

猜你喜欢

转载自www.cnblogs.com/polaris16/p/9643640.html
CAP