3分钟读懂分布式CAP理论

现在企业招聘开发,基本都会要求有分布式系统的开发经验,许多面试题也是针对分布式环境下会出现的问题提出。想要在Java开发的道路走上去,熟悉分布式系统可以说是必须的。而CAP理论是业界进行分布式系统设计的一种重要思想,下面就让我们来看看吧。

什么是CAP

CAP是由美国计算机科学家Leslie Lamport在1974年提出的一种理论,他指出一个分布式系统不可能同时满足以下3点情况:

1.一致性(Consistency):

假如你有N份冗余备份的数据,那么同一时刻,无论你读取哪一份数据,都必须确保数据是相同的,我保证每一份数据都是最新的。

2.可用性(Availability):

你的系统必须每周007不间断地进行工作,随叫随到,做一个资本家听了都流泪的好员工。

3.分区容错性(Partition tolerance):

现实生活中,分布式系统经常是集群部署的,网络经常是不可靠的,可能发生丢包,网络故障,甚至某个机房被大水淹了。就算是再怎么糟糕的情况,也要确保系统是可用的,不会崩。

鱼与熊掌不可兼得

举个简单的例子: 我们去签租房合同,一式两份。你们签完第一份合同,要开始签第二份合同时,房东拉肚子(网络故障)跑出去了。摆在你面前有两种选择:

1.你坐在沙发上发呆(牺牲可用性),等待房东从茅厕回来,继续签完合同(分区容错性)。这样无论拿走那份合同,都是一模一样的数据。

2.你赶时间,谁便抓起一份合同就走(可用性),但是拿走的那份合同可能是还没签完的那份(牺牲一致性)

做人需取舍

CA without P

这个看起来就不像是分布式系统该做的选择,而是为单机系统准备的。网络延迟与数据丢失是不可避免的,我们必须要保证自己的系统不能挂掉

CP wihtout A

为了拿到的数据是最新的,在网络故障的情况下,陷入长时间等待,牺牲用户使用体验

AP without C

牺牲数据一致性,比如你正在抢12306火车票,明明页面上显示还有3张票。然后你一下单,提示你票没了。感觉在欺骗我感情。

没有最好的策略,高明的架构师需要根据业务场景去做取舍。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值