CAP猜想是2000年在ACM PODC上面提出的,这个理论告诉我们一个分布式系统不可能同时满足一致性(C:Consistency)可用性(A:Availability)和分区容错性(P:Partition tolerance)三个基本要求。
一致性:
一致性指的是多个副本之间的数据能否保持一致的特性。在一致性的要求下,当一个系统在数据一致的状态下更新操作后,所有的系统数据必须仍保持一致。(tips:最终一致性不等于一致性)
举个例子:小沙在上海发了一条朋友圈,这条数据会写入上海的集群,如果要保持最终一致性,那么这条数据要同时写入加拿大集群,则远在美国的小叉立马就能看见。
可用性:
可用性指是系统的每一个服务都能够在有限的时间没返回。(部分机器故障不影响服务的是分区容错性。)所以我们可以把可用性理解为速度。
举个例子:小沙在上海发了一条朋友圈,我们希望点击发送后1秒钟内能告诉用户已经成功,这就是可用性。
分区容错性:
分区容错性指的是分布式系统的任何网络分区故障的时候,仍然能够对外保证一致性与可用性。
举个例子:有一天施工,蓝翔队长把上海的光纤挖断了,上海的集群全部挂了,小沙仍然能够通过连接深圳的机器发朋友圈。
这里向大家推荐一篇paper,《CAP Twelve Years Later: How the "Rules" Have Changed》