是什么
CAP理论,就是说一个分布式系统不可能同时满足C、A、P三种特性
- C:一致性,其实说的是强一致性,某个副本被更新后,其他数据副本立刻都能读到最新的数据
- A:可用性,系统处于可用的状态,每个请求都可以被成功响应
- P:分区容错性,比如A、B两个机房作为两个分区,即使两个分区之间网络传输不通,但是整体系统可以对外提供服务
如何权衡
- 保证CA,舍弃P:舍弃分区容错性,相当于系统就这一个区,那就不是分布式系统了,绝对不行
- 保证CP,舍弃A:舍弃可用性
例子1:zookeeper如果一个节点宕机,zookeeper注册中心立刻将它剔除,保证注册中心数据最新
例子2:zookeeper的Master节点如果宕掉,需要重新选举Master节点,这期间是不可用的
- 保证AP,舍弃C:舍弃一致性
例子1:nacos如果有一个节点宕机,nacos选择的不是将它立刻从注册中心剔除,而是返回旧数据
例子2:nacos只要集群中还有一台机器就能对外界提供服务,当然数据可能不是最新的
使用场景
- 保证一致性:如果是一些关于钱的操作,需要保证一致性,不能说读到旧的值,错误地添加金额
- 保证可用性:绝大部分情况下系统都会优先保证可用性
比如说博客,首页最新文章加载出现一些问题,我不是返回首页加载错误,而是返回首页的旧数据,用户体验好