cap定理的含义

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标:

  • Consistency(一致性): 所有的节点上的数据时刻保持同步,强一致性;
  • Availability(可用性): 每个请求都能接受到一个响应,无论返回的数据是否一致;
  • Partition tolerance(分区容错性): 系统应该能持续提供服务,即使在遇到某节点或网络分区故障的时候。

它们的第一个字母分别是 C、A、P。
Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

下面分别讲述下这三个概念:

  • 1.分区容错性
    相对于单点系统,分布式系统会部署在多台机器上,机器之间有可能是跨区域的,比如服务器机房一个在北京,一个在上海,如果在这两个机房之间构建了分布式系统,那么这两个区域的机器是需要通信的,而只要通信就有可能出现通信失败,所以分区容错性P是我们在设计分布式系统中必须要考虑到的问题。

  • 2.一致性
    一致性是说客户端从分布式系统中拿数据,不管从那一台机器中获取,都应该是最新的。
    在这里插入图片描述
    假设某一时间client向server1服务器更新vo->v1,之后不管从server1还是从server2取值都是v1,这样才满足一致性。而如果cleint往server1写过数据后,从server2中去获取值,此时server1和server2之间还未同步,那么就会依然获取到vo,那么就不满足一致性。

  • 3.可用性
    可用性是指,不管任何时候,client向任意一台server发起请求,都能得到响应,不管获得的数据是v0还是v1。

一致性和可用性之间的矛盾
因为分区容错P的必然性,所以一致性C和可用性A无法同时成立。
在这里插入图片描述
如果保证 Server2的一致性,那么 Server1 必须在写操作时,锁定 Server2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,Server2 不能读写,这样可用性就无法满足。

如果保证 Server2 的可用性,那么就不能锁定 Server2,所以一致性不成立。

综上所述,Server2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求强一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到强一致性。

参考:
http://www.ruanyifeng.com/blog/2018/07/cap.html


------------本文结束感谢您的阅读------------
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值