CAP总结

C   :一致性(consistency)其实就是数据库中的ACID

A   :可用性(availability)   对一个系统而言,所有的请求都应该在一段时间内‘成功’并且收到’返回’,其实就是不丢报文,总是能响应,可能有延迟。强调下,可用性是系统中每个没有问题的节点在接受请求的时候,能够正确响应。举个例子:ca集群下,如果出现分区,所有节点都无法运转,按照常规的“可用性”看的话,我们认为这种情况是缺乏“可用性的”,这里的“可用性”跟cap中的a是有区别的。a是有前提的,即针对于正常运转的节点

P   :分区容错(partiion-tolerance)所指就是分布式系统的容错性。节点crash或者网络分片都不应该导致一个分布式系统停止服务,放弃Partition-tolerance意味着把所有的机器搬到一台机器内部。也就是单点跟多节点的问题,多节点具有容错性,单点没有

假设两个节点集{G1, G2},由于网络分片导致G1和G2之间所有的通讯都断开了,如果在G1中写,在G2中读刚写的数据, G2中返回的值不可能G1中的写值。由于A的要求,G2一定要返回这次读请求,由于P的存在,也即是多节点情况下,其中一个节点的数据不是最新的,导致C一定是不可满足的。

·放弃P:如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)都放到一台机器上。虽然无法100%地保证系统不会出错,但不会碰到由分区带来的负面效果。当然,这个选择会严重影响系统的扩展性。单节点的典型代表就是关系型数据库,支持CA

·放弃A:相对于放弃“分区容错性”来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待数据一致,因此在等待期间系统就无法对外提供服务,也就是CP。如果不需要数据的强一致性,可以立即进行响应,会导致数据的不一致,也就是AP

·放弃C:这里所说的放弃一致性,并不是完全放弃数据的一致性,而是放弃数据的强一致性,而保留数据的最终一致性。在分布式环境中,放弃强一致性,可以立即进行响应,虽然数据会造成不一致。

base原则其实放弃c,实现最终一致性的AP

转载于:https://my.oschina.net/u/913896/blog/685885

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值