简介
CAP指的的分布式系统中的三个指标
- Consistency 一致性
- Availability 可用性
- Partition tolerance 分区容错性
CAP不可能同时达到,所以只能从CA、CP、AP中有倾向的设计系统
![12.png](https://i-blog.csdnimg.cn/blog_migrate/1243d4c738732688e07dd143ea00b67d.png)
一致性Consistency
向分布式系统中完成写操作后,任何操作都应该返回写入后的最新的值。这就要求分布式系统写操作后必须要同步数据到其它节点,且未同步的节点读写都要暂时锁定直到同步完成
可用性Availability
系统要在任何时候都可用,收到请求后一定会有响应
分区容错性Partition tolerance
分布式系统中某个节点故障不影响整体服务
实际应用
- 实际场景中其实P是一定会成立的,因为所有的分布式系统都会考虑到单点故障对整体的影响。
- 分布式系统中C一致性和A可用性是不可能同时达到的,C和A是矛盾的。除非是单体应用才有可能符合CA模型,但是单体应用就没有CAP之说了
- 满足了一致性必然会导致可用性不满足,因为未同步的节点读写都需要暂时锁定才能达到一致性的要求
- 满足了可用性必然需要牺牲一致性,比如使用redis的场景,用户延迟几秒获得最新数据其实也没有多大影响,使用redis的场景其实就是AP模型
- 所以实际场景中只有CP、AP两种模型,也就是C和A之间的权衡