CAP理论的背景和个人理解

 

背景:

 CAP理论也称在Brewer定理,在2000年由Eric Brewer在ACM研讨会上提出,其认为当应用系统变得越来越web化,应当放弃对数据一致性(data consistency)的担忧,因为要想获得这种新的分布式系统的高可用性(high availability),确保数据一致性是我们无法做到的,这样给予任何人3台服务器和一双关注客户体验的眼睛就可以建立一家互联网公司。Brewer的信徒(当天就有的和后来皈依的)包括像Amazon,EBay和Twitter这类公司。

Brewer认为在分布式的环境下设计和部署系统时,有3个核心的系统需求(systemic requirements),以一种特殊的关系存在。(他主要是谈论Web类的应用,但如今非常多的公司业务是多站点/多国家的,因此该理论同样适用于你的数据中心/LAN/WAN的设计)这3个核心的需求是:Consistency,Availability和Partition Tolerance,赋予了该理论另外一个名字 - CAP。 

2年后,2002年,麻省理工(MIT)的Seth Gilbert和Nancy Lynch,理论上证明了Brewer猜想是正确的,就此Brewer定理(Theorem)诞生了。
 

理解:

Consistency(一致性), 数据一致更新,所有数据变动都是同步的

Availability(可用性), 好的响应性能

Partition tolerance(分区容忍性) 可靠性

 

1:Consistency(一致性):每当一个新数据新增到其中一个服务器上,这个数据要同步到其它服务器,这样的情况下才可以保证C

2:Availability(可用性):用户随时都在访问,都能在可控的时间内返回正确的数据

3:Partition tolerance(分区容忍性):非常可靠,怎么能可靠呢?我有1亿台服务器,挂了几万台,完全没影响。

现在我们对这几个理论有了一定的了解,现在开始分析为啥只能同时满足两个

1:满足C和A,那么P能不能满足呢?

满足C需要所有的服务器的数据要一样,也就是说要实现数据的同步,那么同步要不要时间?肯定是要的,并且机器越多,同步的时间肯定越慢,这里问题就来了,我们同时也满足了A,也就是说,我要同步时间短才行。这样的话,机器就不能太多了,也就是说P是满足不了的

2:满足C和P,那么A能不能满足呢?

满足P需要很多服务器,假设有1000台服务器,同时满足了C,也就是说要保证每台机器的数据都一样,那么同步的时间可就很大,在这种情况下,我们肯定是不能保证用户随时访问每台服务器获取到的数据都是最新的,想要获取最新的,可以,你就等吧,等全部同步完了,你就可以获取到了,但是我们的A要求短时间就可以拿到想要的数据啊,这不就是矛盾了,所以说这里A是满足不了了

3:满足A和P,那么C能不能满足呢?

满足p需要很多服务器,同时还要保证响应时间,这对C来说是很大的挑战性。满足p意味着同步数据需要很大的时间,比如1w台服务器需要同步的同时,还要保证响应时间,就满足不了c。

 

本文章参考了网上其他文章而写,并非全原创,谢谢。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值