井然有序,就得等到没有分区

2018年4月3日  16:59:30 来源:168炒股学习网  阅读:2438人次

网友发帖:

井然有序,就得等到没有分区。

发表于 昨天17:02|显示全部楼层

导读
分布式系统中,必然无法同时满足一致性、可用性和分区容忍性。
文章来源:公众号“汤强”

还没开学,你就被拉去操场军训。教官喊:向右看齐。除非你是排头兵,否则多少要踩出些小碎步,给他点面子。教官只向你发出看齐指令,但如何对齐的命令实际来自你右边战友的耳根。​
两周后的你精疲力尽,全班的耳根都被晒黑,但每天第一把向右看齐,总要扑腾好多次。教官照常数落你们:这半个月都练了什么,为什么老是不能马上排齐
如果你能掐会打,完全可以怼教官:队伍本身作为一个分布式系统,能马上排齐那叫奇怪,因为有CAP定理。

一、什么是CAP定理?
分布式系统中,必然无法同时满足一致性、可用性和分区容忍性
分布式系统指一组电脑连成的网络。
一致性(Consistency,简称C)指同一时刻全网数据完全一致,相当于军训队伍整齐划一,越整齐一致性就越高。
可用性(Availability,简称A)一部分节点更新数据后,分布式系统能基于最新数据响应用户读写请求。排头兵挪动后,没跟上的队伍走样越小、排齐耗时越少,可用性就越高。
分区容忍性(Partition Tolerance,简称P)只有两个可选参数:不容忍和容忍。
不容忍分区好比你一个人在word里打字,无需穿行网络,一台电脑全盘搞定;容忍分区就是分布式系统,至少有两台计算机联机组成,比如你保存word文档的瞬间,如果我的电脑没和你交互,就读不到你刚写的文字。
CAP定理意思是:C、A、P三者最多得二。
具体说:分布式系统必然容忍分区(P),所以一致性(C)与可用性(A)注定互斥。如果你想左拥右抱C和A,那就别指望分布式系统,只能用单机版的中心化方式(不容忍分区,无P)。
但是,分布式系统中C和A的不可兼得,与中文语境下鱼和熊掌的不可兼得不同。CAP定理是说:一条队伍永远存在可能不齐的瞬间。这看着像句废话,但只有理解这点,才能避免对CAP原理最习以为常的误解:现在不齐,所以永远无法整齐
你不是教官脑中的提线木偶,不会根据教官意念自动排齐。排头兵一个喷嚏把自己打出去半步,二号兵才能开始反应,跟出瞄齐,而他脖子位置的变化向三号兵发出指令:来,跟上。
最后才轮到你,怎么可能快?所有人的反应时间之外,还要加上挪步用时,于是耗时必然大于零。
映射到分布式系统:如果想要严格一致的数据,那分布式系统就没法用了,因为你无法确保使用数据的瞬间,网络中其他节点不会更新数据;如果你想用相对新的数据,那就得候着。
所以,分布式系统天生就慢。
这种慢,更像是迟钝,原因很简单:分布式系统范围一大,节点间的通信耗时就长。
如果你想获得可靠的最新信息,就得等所有节点汇集出最新数据,这样能保住一致性、放弃可用性。可如果你说全网这么多节点,等到什么时候才能一致?CAP原理告诉你:别等了,你就放弃点一致性,先用着吧,否则你啥也用不了。

请点击输入图片描述

2000年加州大学伯克利分校计算机教授布鲁尔提出了CAP的三选二猜想,两年后被麻省理工学院的两位教授基尔伯特和林奇证明。
他们的反证法让证明过程出奇地简单:
假设存在一个算法同时满足一致性、可用性和分区容忍性,那么在两个节点的网络中,存储的信息分为不相关的非空集合{G和G'},假设G和G'间没有通信,那么,一个节点读的操作将无法访问另一节点稍早前写的结果。

类比一个你熟悉的场景:
妈妈和儿子一起把两只蛋关进冰箱,妈妈回房看电视,儿子一饿之下把蛋全煮了扒光吃尽,此时爸爸在房里问妈妈:冰箱里还有多少蛋?
妈妈关上房门的刹那,本来共享的鸡蛋余额数据就发生了分区。
如果妈妈追求严格一致性,那她应该跑去冰箱检查余额后再答复爸爸,可妈妈追起剧来特别专注,所以直接回答:还有两个。这个回复没有基于准确的最新余额,但为了可用,放弃了一致。
可这并不影响爸爸第二天就去超市买蛋,因为不管零个蛋还是两个蛋,都不够全家吃。
所以,一致性并非不可放弃,只是需要权衡。放弃追求一致性,就能少打断一次电视剧情,少跑一个来回所增加的便利,如果大于因为蛋数认定不一致带来的不便,那不一致就不一致吧。
这是很简单的取舍,但正如“去中心”常被人们误解为“去掉所有中心”一样,人们也常常误读CAP定理中“三者只能居其二”的含义:
CAP定理的确告诉我们:分布式系统中抓走可用性就意味着放手一致性,但并不说明用户想要的一致性被冲进了马桶,再也捞不回来。真实情况是,我们可以在短时间内追回些一致性,就像经过严格训练的队伍可以比普通队伍用更短的时间排齐一样。
很可惜,即使我们只用一刹那的时间就

相关文章:
新手入门推荐
168炒股学习网
一家专注为中小股民提供炒股入门知识的网站!
我们相信客户至上,并真诚为您服务!祝您投资愉快!
商务合作微信QQ:765565686,联系人:陈经理
版权所有:168chaogu.com,粤ICP备14098693号