详解分布式CAP定理

什么是CAP定理?


Consistency一致性: 指数据的一致性,特指分布式系统中数据的一致性
Availability:可用性:指服务的高可用,特指分布式系统中服务的高可用,某个服务瘫痪不影响整个分布式系统的运行。
Partition tolerance:分区容错性: 指网络故障,特指分布式系统中,服务之间出现网络故障,整个分布式系统仍然保持可用性和一致性。

一句话概括CAP:在分布式网络中,网络故障,服务瘫痪,整个系统的数据仍然保持一致性

举例分析CAP

在这里插入图片描述
张三有100元优惠券,在淘宝买了件衣服。
1.怎么体现C数据一致性
整个分布式系统中,一致性体现这笔订单,必须扣除100元优惠券
2.怎么体现A可用性
整个分布式系统中,可用性体现在张三下订单的时候,如果订单服务或卡卷服务瘫痪了,这时不能影响张三下订单。(一般做法是采用集群部署)
3.怎么体现P分区容错性?
整个分布式系统中,分区容错体现在张三下订单的时候,突然订单服务和卡卷服务之间的网络断开了,但是不能影响张三下订单。

什么是分区?
在断网的情况下,2台系统变成了独立的网络,各自访问不了,这种情况就是分区。
在分区的情况下,如果保持数据一致性和系统可靠性那就是分区容错性了。

CAP技术实现,所面临的困惑

在分布式系统中,出现网络故障P,服务瘫痪A,整个系统的数据仍然保持一致性C,这是无法做到的。
相对可以实现的方案是CAP中任选其二
CP,AP和CA
在这里插入图片描述
当服务之间出现网络故障的情况下:
1.如何保证订单服务和卡卷服务高可用?
2.下一笔订单同时扣除100元优惠券如何实现?

分布式系统的解决方案:

1.CAP牺牲一致性(AP):保证高可用(保证订单服务可以正常访问,保证卡卷服务可以正常访问,是牺牲了数据的一致性)张三下单成功,但是不扣除100优惠券,这种情况下,张三下订单成功后再去查看100元,居然还存在。
如果解决?
一般的做法是,当网络恢复正常的情况下,订单服务重试请求卡卷服务,再扣除100元优惠卷。
2.CAP牺牲可靠性(CP):保证数据一致性,即为了保证数据的强一致性,当张三来下订单的时候,提示“系统维护中”。等服务间的网络恢复正常后,张三再来下订单。

如果不要P,只要CA可行吗?
不要p分区,即不允许网络出现故障,这是不可能实现的。
所以在分布式系统中,是不存在CA
即使单体系统也做不到CA,因为单体系统也会出现单一故障。

zooKeeper和eureka的CAP原理

zooKeeper是CP的原理:即保证了数据一致性,牺牲了可以用性
eureka是AP的原理:即保证了可用性,却牺牲了一致性

感谢观看!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值