CAP理解

一、理论

        CAP是分布式系统理论中的一个重要概念,它指的是一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。

        CAP定理表明,在一个分布式系统中,无法同时满足这三个特性:

1.1 一致性(C)

        在分布式系统中的所有节点上,对于同一份数据的读操作都应该返回最新写入的值。换句话说,所有节点的数据应该保持一致。

1.2 可用性(A)

        分布式系统在面对用户请求时,应该保证每个请求都能够得到响应,即系统具有高可用性。

1.3 分区容错性(P)

        分布式系统应该能够继续正常运行,即使系统内部发生了网络分区(节点之间无法通信)或者消息丢失等故障。

 

 二、为什么无法同时满足三个?

        根据CAP定理,分布式系统只能满足其中的两个特性,无法同时满足三个

        因为在面对网络分区时,系统必须要做出选择,是保证一致性还是可用性。如果选择保证一致性,那么在网络分区期间,系统将无法提供服务;如果选择保证可用性,那么在网络分区期间,系统可能会返回过期的数据。

 三、取舍策略


3.1 CA舍弃P

        假设不考虑分区(P)的情况下,只有一个分区(副本),副本的一致性自不必说,自然是一致的;可用性方面,一个节点的写入不需要同步到其他节点,可以高效完成。

        如果增加多个分区(提高分区容错性),数据的写入需要同步到多个节点(强一致性,所有节点同步成功后再返回用户),增加了同步时间和同步失败的可能性,降低了可用性;如果采用弱一致性,即写入操作在主节点成功后即返回用户结果,再通过异步方式同步到多个分区,那么会增加同步失败和数据丢失的几率,降低了一致性。

3.2 CP 舍弃A

        假设不考虑可用性(A)的情况下,多个分区之间可以采用强一致性的机制,保证数据的高度一致性(要么都成功要么都失败)。比如某个分区出现了故障或者分隔,分区没有了响应,由于放弃了可用性,所以可以无限等待并不断重试直到网络恢复,分区可用后将副本数据同步到所有节点。

3.3 AP 舍弃C 
        

        不考虑一致性(C)的情况下,多个分区和副本可以提供高可用性。

        分区越多,用户越能就近访问,提供响应速度;放弃了一致性后,副本的写入操作可以写入主节点成功后即可返回成功,获得高可用性,然后通过异步的方式将副本同步到多个分区节点上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值