什么是CAP
CAP即:
- Consistency(一致性)
- Availability(可用性)
- Partition tolerance(分区容忍性)
一致性:对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败。保证了用户可以安全的访问分布式系统的数据。
可用性:任何客户端的请求都能得到响应数据,不会出现响应错误。好的可用性主要是指系统能够很好地为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
分区容错性:由于分布式系统通过网络进行通信,网络是不可靠的。当任意数量的消息丢失或延迟到达时,系统仍会继续提供服务,不会挂掉。
CAP如何取舍(相互关系)
- CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的。
- CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。
- AP: 优先保证可用性和分区容错性,放弃一致性。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。
CAP理论指出,在分布式系统中同时满足一致性、可用性和分区容错性是一个不可能的任务,它们之间存在着矛盾,只能从三个维度中选出其中两种来实现。也就是说,在分布式系统中,要么只能保证C和A,也就是一致性和可用性同时存在;要么只能保证A和P,也就是可用性和分区容错性同时存在;要么只能保证C和P,也就是一致性和分区容错性同时存在。这就是CAP理论的定义。