关于CAP定理的一点说明

一、CAP是什么
    CAP是理解分布式系统的基础,它其实是三个英文单词Consistency,Availability,Partition tolerance的缩写,这三个英文单词也就是CAP的三大组成部分。
    提出这个指标的人指出:这三个指标不能同时做到。这就是著名的CAP定理。
    下面我们来说说这三个指标,注意不考虑单服务器的情况。
    
    1.Consistency,一致性
    一致性意味着当用户发起写操作后,所有的读操作都必须返回该值。这就要求用户在向A服务器发起写操作成功后,A服务器必须向与它相关联的B服务器发送一条消息,要求B服务器也完成相同的写操作。这样后面的用户发起读操作时,无论读取的是哪个服务器的信息,得到的数据都是一样的,这就是一致性。
    
    2.Availability,可用性
    即有求必应,服务器收到请求,就必须在有限的时间内返回结果给用户。
    
    3.Partition tolerance,分区容错
    即分布式系统在遇到任何网络分区故障的时候,仍然能够保证提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。
    
二、主要矛盾
    对于一个分布式系统架构而言,分区容错性是一个最基本的要求,而如果不满足分区容错性,那实际上意味着如果分布式系统某个分区出故障了,整个系统都会停掉,这和分布式架构的设计理念不符。所以其实CAP原理的主要矛盾在于一致性和可用性。
    那为什么一致性和可用性无法同时成立呢?
    首先,假设我们拥有A和B两台数据服务器,那么如果要保证一致性,A在写入操作后,对B进行同步操作完成之前,这段时间必然B是不可用的;而如果要保证可用性,此时读取B时数据必然又是不一致的。所以实际上架构师们只能二择其一,根据业务的优先级选择保证高可用或强一致性。
    
三、应用
    1.放弃可用性
    即一旦某个网络分区法师故障,那么受到影响的服务在等待期间,整个系统都无法对外提供正常服务,等待故障分区维护完成以保证强一致性。
    
    2.放弃一致性
    其实就如上文一直提到的强一致性,这里的放弃一致性也是指强一致性,即并不是说完全不需要数据一致性,而是指保留数据的最终一致性。即承诺各分区的数据最终会达到一个一致的状态,而这个达到最终一致性的时间往往取决于系统的设计,主要包括数据副本的复制时间长短等。
    
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值