赤壁之战中的CAP定理

Posted 孙晓凯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了赤壁之战中的CAP定理相关的知识,希望对你有一定的参考价值。

东汉末年的一天早上,洛阳的一个深宅大院戒备森严,不到八点,已经有十几位将领开着宝马表情严肃的进入府中。似乎有什么大事要发生。

这些将领来不及把车停到车位,就步履匆匆的进入后堂。虽然后堂聚集了十几个人,但是他们并没有相互交谈,而是直勾勾的盯着投影上的主题–“南下?”。似乎在等一位重要的人。

不一会儿,一位矮胖男子走了进来。此男子身高大概165cm,体重大约80公斤,长相猥琐,但是眼神异常的犀利。手里似乎还端着一碗什么东西。来不及坐下就对参会人员说道:“诸位来的挺早,待我先把这碗胡辣汤喝完再说如何?”。参会人员那敢推辞,都笑着说道:“曹总,吃饭要紧。”。此曹总正是三国时期北方最大的军事集团首领–曹操。

伴随着吸溜吸溜的声音戛然而止,曹操用袖子把嘴一擦,说道:“我今召集大家来的目的,想必大家也都知道。自从我们打败了袁绍,在北方已经没有谁是我们的对手了。所以这些年其实你我都很寂寞,如果一个军人不打仗,那还是正经的军人吗?有仗要打,我们打。没有仗要打,我们创造仗也要打。所以我决定南下,把刘备和孙权的地盘给收了。不知各位意下如何?接下来请各位畅所欲言”。

曹仁:“我早就想收拾他们了,老大,就等你一声令下了”。

曹操呵呵一笑,说道:“知己知彼 方能百战不殆。我得到消息说,目前孙刘已经结成联盟,并且为了他们传递消息的方便与可靠,他们还专门修建了一个什么东西。”

“老板 我研究过这个东西,此物名叫“分布式消息收发器””,说话的正是张辽。

众将领顿时大眼瞪小眼,嘴里嘟囔着,什么是分布式?什么是消息收发器?什么又是分布式消息收发器?想我戎马一生,怎么听都没听过?

姜还是老的辣,曹操虽然不懂,但是强装镇定。说道:“各位安静,请张将军为大家讲解一下”。

张辽继续说道:“此物是那诸葛亮设计并主持建造的,说着就在沙盘画起了图.”

诸位请看,此乃总体战略架构图。接下来我为大家解答一番,孙刘在我所标注的位置,大家都知道。此番孙刘结盟,需要共享情报。但是因为孙刘老巢路途遥远,中间还要经过长江,信使直接传递信息并不可靠。于是那诸葛村夫设计了一个分布式系统,正如图中A,B所示。比如刘备得到了消息,想把消息传递给孙权,刘备只需把消息传给B这个情报驿站,然后B会把情报同步给A,孙权只需要从A获取信息即可。

大将军于禁道:“这诸葛老儿为何要如此设计?以本将看来此物比直接快马传递消息要复杂许多。”

张辽道:“大将军所言极是,此物乍一看甚是复杂。其实说白了他就是一个驿站,用于转送消息用的。但是每个信息都会复制一份,每个驿站各存放一份。”

“那诸葛老儿总喜欢以理论作为支撑,此物可有相关理论?” 曹操说道。

张辽道:“老板英明,此物的理论根基乃是CAP定理”。

曹操道:“何为CAP定理?”

张辽道:“那诸葛老儿为了让别人看不懂此理论,故意把其弄的看似异常复杂。待我把其本质解释给各位。这CAP其实代表了三个名词:

C:代表的是一致性。也就是说A和B的信息是一样的。

A:代表的是可用性。也就是说A和B都能正常的收发信息。

P:代表的是分区容错性。这也是最不容易理解的一个名词,诸位将军请看沙盘,在A和B直接隔了一条长江,万一长江江水暴涨,无法行船,那么A和B就无法联系。分区容错就表示A和B无法通信的情况。

最为关键的是,经诸葛亮推演,此定理只能同时满足两种情况。

“欧?快快说来!” 曹操禁不住说道。

张辽道:“是 老板。

比如说如果要保证A和B的信息总是一样的,并且A和B的系统总是可以正常收发信息,那么A和B就必须得通信正常,不能发生分区的情况。也即满足CA,不能有P。

再比如,如果要保证A,B信息总是一样,并且允许有时候A和B发生通信异常。那么就没办法做到任意时刻A,B都能正常收发信息。因为一旦江水暴涨,A,B不能通信,此时A,B的信息必然会造成不一样,而有要求信息一样,只能是等到江水退去,信使把A,B信息同步程一样,再恢复A,B的正常收发信息的功能,也即只能满足CP。

最后一种情况,如果要求A,B一定可用,且允许江水暴涨无法通信的情况发生,那么在江水暴涨的时候就无法保证A,B的一致性。也即只能满足AP

“诸位猜下诸葛村夫使用的那种方式?” 曹操若有所思的问道

一个个面面相觑,无人作答。

曹操微微一笑说道:“那村夫一定使用的CA方案。在A,B以及长江上定有重兵把守,且有大船。即使江水暴涨也无甚影响。”

张辽道:“老板,实在是高!”

曹操从小被人取笑身高,狠狠的瞪了张辽一眼。

张辽慌忙说道:“老板英明,英明。因为战场实时性要求很高,所以诸葛老儿确实选择了此方案。但是平时他们选用的是AP方案,而撤出大量军队用于种田,即使江水暴涨,影响AB的一致性,等江水过后AB依然可以同步,这也叫做最终一致性”。

曹操哈哈一笑道:“花里胡哨!我八十万大军岂是他这一套小小的系统能够打败的? 无需理会此物,按照原计划直接攻打江东。”

第一次尝试用讲故事的方式写技术文章,希望各位朋友指出错误。

以上是关于赤壁之战中的CAP定理的主要内容,如果未能解决你的问题,请参考以下文章

从赤壁之战看思维模式带来的行动力

洛谷——P2128 赤壁之战

洛谷 P2128 赤壁之战

区块链: 哈希算法

赤壁之战

转帖赤壁之战,曹操大败只因缺了Service Mesh