#CAP理论 主要描述的是任何分布式系统中最多只能同时满足以下三点中的两点
- Consistency(一致性):数据一致更新,所有数据变动都是同步的,强调数据的正确性
- 数据同步成功是一致性最根本表现
- 数据同步不成功,用户访问同步失败的副本节点时不返回数据或者返回错误信息也是一致性
- Availability(可用性):良好的响应性能,尽量保证正常工作,不轻易报错。
- Partition tolerance(分区容错性):可靠性,即使数据同步失败也要继续对外工作。
- 对一致性、可用性和分区容忍性的解读
- Consistency:一致性
- 官方:对于任何从客户端发送到分布式系统的数据读取请求,要么读到最新的数据要么失败。
- 民间:站在分布式系统的角度,对访问本系统的客户端的一种承诺:要么我给您返回一个错误,要么我给你返回绝对一致的最新数据,不难看出,其强调的是数据正确
- Availability:可用性
- 官方:对于任何求从客户端发送到分布式系统的数据读取请求,都一定会收到数据,不会收到错误,但不保证客户端收到的数据一定是最新的数据。
- 民间:站在分布式系统的角度,对访问本系统的客户的另一种承诺:我一定会给您返回数据,不会给你返回错误,但不保证数据最新,强调的是不出错。
- Partition tolerance:分区容忍性
- 官方:分布式系统应该一直持续运行正常服务,即使在不同节点间同步数据的时候,出现了大量的数据丢失或者数据同步延迟。
- 民间:站在分布式系统的角度,对访问本系统的客户端的再一种承诺:我会一直运行,不管我的内部出现何种数据同步问题,强调的是不挂掉。
- Consistency:一致性
- 在分布式网络分区环境中,数据的一致性、可用性和分区容忍性三者之间,至多只能保证两者,无法三者同时保证一般是满足一致性和另外一个,因为他们彼此会有成立条件的相克
- cap的前提是分布式系统
- 有两个或以上节点时,当网络分区发生时,集群中两个节点不能相互通信(也就是说不能保证可用性A)。此时如果保证数据的一致性C,那么必然会有一个节点被标记为不可用的状态,违反了可用性A的要求,只能保证CP
- 如果保证可用性A,即两个节点可以继续各自处理请求,那么由于网络不通不能同步数据,必然又会导致数据的不一致,只能保证AP。