CAP
-
Consistency,一致性。Availability,可用性。Partition tolerance,分区容错性。
CAP指出在分布式系统中,不可能同时满足以上三点。
Partition tolerance 分区容错性
- 在一个分布式系统中,如果一个数据只存在于一个节点上,那么原本连通的网络可能会因为某些问题无法连通到该节点。此时系统就不具有分区容错性。 而如果要考虑分区容错性,就要将一份数据复制到多个节点上。
Consistency 一致性
- 一致性指的是在访问一个分布式系统时(无论哪一个节点),所得到的数据是同样的、最新的数据。
- 在基于分区容错性的基础上,不同节点间的数据需要同步。而这个同步操作需要一定的时间。才能达到最终的一致。
Avaliability 可用性
- 可用性指的是在访问一个分布式系统时,在满足响应时间的前提下得到响应。
为什么说CAP三者不能兼得?
-
首先一个分布式系统,必然是要考虑P的,即通过将数据复制到多个节点来提高容错性。
- 在P的基础上如果选择了C,即数据的一致性,而数据在不同的结点上的同步操作是需要一定时间的,在数据在所有结点完全同步完之前,这些结点都不会响应用户,这个时候就不保证可用性了。
- 而若在P的基础上选择了A,即可用性,那么就必须以快速响应用户为目标,不能保证所有结点的数据同步完成。
-
而如果要选择A、C,放弃P,不将数据备份到多个节点。那么当然,不用考虑不同结点间数据的同步,一致性就不存在了,而不用考虑一致性问题,能够保证响应时间及时响应用户,可用性问题也就解决了。