CAP理论学习

CAP理论

分布式系统最多满足以下三个特性中的两个。

  • 一致性(Consistency) 在分布式系统中对某个数据进行写操作后的任何读操作,都应该读到最新的值,相当于要求分布式系统中各个节点的数据时时刻刻保持一致

  • 可用性(Availability)即要求系统可以提供正常的读写操作

  • 分区容错性(Partition tolerance)当分布式系统的某个节点出现问题的时候,整个系统依然能对外提供服务,即允许节点出问题(某种程度上是必然)

为什么无法同时都满足
  • 保证一致性C的前提下

对某个节点A的数据写操作后,数据需要同步到其他节点B,如果此时访问B节点,则需要等到同步完成之后才能访问,此时满足分区容错性P,无法满足可用性A,如果要保证可用性,则只能取消同步过程,相当于就只有A节点一个分区,这样如果A节点出现问题,系统无法正常提供服务,则又不满足分区容错性P

  • 保证可用性A的前提下

此时如果保证分区容错性,则无法保证访问不同节点的数据能得到一致的结果,违反 一致性,如果绕过同步过程,则能保证一致性,但数据没有备份,又不能保证分区容错性

如何取舍
  • CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的,无法再保证整个系统的高可用

  • CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。

  • AP: 优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值