人物背景:老徐,男,本名徐富贵,从事Java相关研发多年,职场老手,青年专家。钓鱼。徐。据说他之前因为炒某币而输光了所有家产,现在还负债累累。阿珍,女,本名陈家珍,是一名刚入职的实习生。虽然是职场新人,但她聪明好学。据说她是校内四大美女之一,追求者从旺角排到铜锣湾,但至今仍单身。阿真刚吃完饭回来,就看到老徐在吃方便面,说:“老徐,你不能这样啊,你为了还债,中午吃这个?”老徐平静地嚼着方便面说:“这是百象的方便面,国货之光,超级难买,终于买了。”阿珍坐下说道:“味道不错,我去买一些试试。对了,徐总,早上开会的时候,我听到你总是说CAP,CAP,CAP是什么意思?”是不是太喜欢放P了?”老徐差点把泡面吐出来,笑着说:“我还是第一次听你这么解释,来吧!给你科普一下。”CAP是2000年由加州大学伯克利分校的计算机教授EricA.Brewer发起的关于分布式计算原理的研讨会。(PODC,SymposiumonPrinciplesofDistributedComputing)关于一个猜想。2002年,麻省理工学院(MassachusettsInstituteofTechnology)的SethGilbert和NancyLynch发表了这个猜想的证明,使其成为分布式计算领域公认的一个定理。CAP定理的意思是,在一个节点相互连接并共享数据的分布式系统中,当涉及到读写操作时,只有一致性(Consistence)、可用性(Availability)和分区容忍度(PartitionTolerance)可以保证。两者之中,必须牺牲另一个。CAP是Consistence、Availability、Partition这三个英文单词的首字母缩写。其中,一致性是指对于一个指定的客户端,读操作保证返回最新的写操作结果;可用性是指非故障节点在合理的时间内返回合理的响应,不是错误和超时。分区耐受性是指系统在发生网络分区后继续运行的能力。因为网络本身不能100%可靠,可能会出现故障,分区是不可避免的现象,所以必须选择分区容忍度(P)。分布式系统不可能选择CA(一致性和可用性),只能选择CP(一致性和分区容错性)或者AP(可用性和分区容错性)。选择CP时,发生分区后,为了保证数据的一致性,客户端访问任何一个节点都会返回错误,因此无法满足可用性,如ZooKeeper。在选择AP时,出现分区现象后,为了保证节点的可用性,客户端可以访问某个节点上可能已经过时的数据,从而无法满足一致性,比如Eureka。阿珍用手捂着嘴打了个哈欠,眨了眨泪眼,说:“太理论了,要不你告诉我你的百象泡面是哪里买的。”最后,谢谢你这么帅,给我点赞和关注。
