分布式系统之CAP原则

什么是CAP原则?

分布式系统的基础理论,描述分布式系统在CAP三个特性中,最多满足其中两个,不能同时满足CAP。

C:一致性(Consistency)
A:可用性(Availability)
P:分区容错性(Partition tolerance)

CAP不能同时满足

特性说明
一致性分布式系统中的写操作之后的读操作,都应该读到写操作最新写入的值。也就是说要保证分布式系统各个节点每时每刻的数据一致性。(PS:有点类似volatile在JMM中的可见性)
可用性客户端可以一直得到系统的正常响应,也就是一直可以用,一直可以正常读写操作
分区容错性分区,部分出故障不影响整个系统,仍然对外满足A和C

如何理解AP和CP不能同时满足?

个人理解,有不当请指出。
假设系统有S1和S2两个节点,客户端1号去改S1的值,还没有写完,这时客户端2号去读S2的值,此时矛盾产生:

  1. 如果要满足一致性,这时就得让S2无法使用
  2. 如果要满足可用性,两个客户端读取到的值必然不一样,破坏了一致性

所以无法保证同时满足。

如何选择?

  • CP:放弃可用性,在数据一致性要求严格的场景下使用。一旦网络故障发生或者消息丢了,会牺牲用户体验,恢复了才能访问。
  • AP:放弃一致性,数据一致性要求不严格,用户体验好的场景下使用。并不是真的数据不一致,而是慢慢回复一致性。
  • AC:放弃容错就违背了分布式系统啊!不用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值