面试去,一个哥们叫嚣CAP理论有问题,让我给他证明,很丢人,我真的没证明出来,甚至连清楚的说明都不算。原来看的真的太皮毛了。
zhibing问你有啥技术博客么,我尴尬的摇摇头,所以啊,还是多记录点东西,自己搞明白,讲清楚,才能真的搞明白。
序
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)诞生了。