分布式数据系统-CAP理论

  What’s CAP

  CAP理论是针对分布式数据系统中,不能同时满足Consistency、Availability、 Partition Tolerance三个要素,最多只能满足其中两个要素

  1.CAP理论关注的数据系统而不是广义的分布式系统

  2.CAP理论不代表我们的整个数据系统只能满足其中2个要素,可以更细粒度控制:系统的A功能模块的数据选择CP,而B功能模块的数据选择AP

  1.一致性(Consistency)

  读取数据都能保证返回最新写操作的结果

  这是一种理想场景,因为在分布式系统中,网络之间的数据同步也是需要时间的,所以我们对一致性的修饰词应该是“高”一致性(代表数据同步的速度比较快,延迟时间比较短),而不是绝对的一致。

  2.可用性(Availability)

  读取数据都能保证有限的时间内返回正常的结果

  1.超时属于不可用

  2.返回不能解析的错误也属于不可用,例如OOM或者系统错误

  3.分区容错性(Partition Tolerance)

  即使节点之间因为网络等原因发生了分区故障,系统也能正常提供服务

  网络分区指因为网络等原因,部分节点之间的通信发生了异常,导致这些节点出现了孤立的情况,但是单个节点内部的网络和状态都是正常。

  Why 2 out of 3?

  1.CA:意即舍弃系统的可扩展性,而我们要设计的是分布式存储系统,所以P是一定不能舍弃的,所以问题就变成了二选一(C和A中选一个),所以CA的选择在分布式数据系统中是不存在的

  1.如果选择了CA,舍弃了P,这种情况其实就是说不考虑分区容错性,这种只能是单点系统,否则如果是多节点系统的话因为网络问题永远无法避免,所以分区容错是永远不能舍弃的,所以CA在分布式数据系统的设计中是不存在的

  2.如果选择了CA,舍弃了P,假设有N1和N2两个节点发生了分区的时候,如果要写入数据,那么为了保证C,系统需要禁止该写入或者返回error,这和我们选择的CA中的A是相冲突的,所以CA在分布式数据系统的设计中是不存在的

  2.AP:读取数据的时候,为了保证系统的可用性,需要在规定的时间范围内返回正确的结果,但是因为舍弃了一致性,这个时候返回的数据是旧数据

  3.CP:读取数据的时候,为了保证数据的一致性,需要等待最需数据同步完毕(可能会等待超时)或者直接返回错误(而超时和错误都导致了系统的不可用性)

  4.CAP:由2和3得知,保证了A就没法保证C,反之亦然,所以CAP这种选择在分布式数据系统中是不存在的

  综上所述,CAP三要素只能选择其中两项,更进一步说是只能是AP和CP

  How to choose?

  CP和AP的选择,其实是在一致性和可用性之间的一个取舍和权衡

  例1:微博的消息发布,我们可以容忍某个明星发送的出轨消息晚点被我们看到,但是我们不太能容忍访问微博的时候报错或者超时了

  例2:以QQ的个人信息(昵称、备注等信息)和账号密码信息(登录密码等信息)为例:针对个人信息,我们可以容忍一定时间内看不到新修改的数据(舍弃一致性),但是必须要保证用户可以去修改(选择了可用性),所以一般会选择AP。但是针对账号密码等登录信息,为了保证一致性,我们可以容忍用户等待一定的时间或者返回一个错误(舍弃了可用性),而不是登录到一个错误的账号密码上去,所以会选择CP,当然对QQ这种量级的公司来说,舍弃可用性只是相对自己的一致性而言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值