舊事重提之CAP定理

問題之由來

我第一次聽說mongodb诽嘉、hbase這些分布式數(shù)據(jù)庫的時(shí)候进每,正是我學(xué)習(xí)mysql的時(shí)候,在那個(gè)遙遠(yuǎn)的年代射亏,mysql可是java web項(xiàng)目的標(biāo)配近忙,恰如今日hadoop之于大數(shù)據(jù)。高可用智润、彈性擴(kuò)展及舍,分布式數(shù)據(jù)庫帶來了種種眼花繚亂令人目眩的特性,深深吸引著當(dāng)時(shí)涉世未深而又孤陋寡聞的我窟绷,然而零基礎(chǔ)轉(zhuǎn)行大數(shù)據(jù)又處處碰壁锯玛,屢戰(zhàn)屢敗之后,才有一個(gè)大數(shù)據(jù)項(xiàng)目組給了一個(gè)降薪的offer讓去給他們做前端。

囊中羞澀前途未卜攘残,應(yīng)該接受這個(gè)降薪的offer么拙友?幾乎毫不猶豫的,我開始了flash開發(fā)之旅歼郭。

學(xué)習(xí)大數(shù)據(jù)時(shí)遗契,CAP定理是我最早接觸的概念,在一段時(shí)間里病曾,它對(duì)我一直都是金科玉律牍蜂,每看到一個(gè)系統(tǒng),我都會(huì)推斷它到底是AP的還是CP的知态,直到我最近突然想到一個(gè)問題:

一直都說zookeeper是強(qiáng)一致性的(實(shí)際上捷兰,zookeeper的一致性是Sequential consistency,等有機(jī)會(huì)了再講)负敏,mongodb的replica set也可以設(shè)置為強(qiáng)一致性贡茅,但是它們又能通過leader選舉等方法保證高可用,那么豈不是說zookeeper和mongodb完全滿足了CAP的三個(gè)特性其做?

一時(shí)間云波詭譎撲朔迷離顶考,于是我決定重新審視一下CAP定理。

CAP定理的來龍去脈

CAP定理(CAP theorem)既然叫做“定理”而不是公理或者猜想妖泄,那就說明它是可以被證明的【匝兀現(xiàn)在比較流行的說法是,Brewer最早做出了推測蹈胡,而Seth Gilbert和Nancy Lynch在《Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services》中做出了證明渊季。

zookeeper、mongodb和CAP的A

在證明里罚渐,A是被定義為every request received by a non-failing node in the system must result in a response却汉。總體來說荷并,定義過于簡潔合砂,理解過于多樣。

  1. 比如源织,在mongodb里翩伪,使用它的客戶端以后,所有的寫請(qǐng)求都發(fā)給了primary谈息,但是假如我能把一個(gè)寫請(qǐng)求直接發(fā)給secondary缘屹,它會(huì)怎么處理?如果secondary返回了一個(gè)錯(cuò)誤侠仇,說“喂囊颅,我們secondary不接受寫請(qǐng)求”,這種情況算不算它“result in a response”?
  2. 再比如踢代,如果發(fā)生網(wǎng)絡(luò)隔離盲憎,一臺(tái)被孤立的zookeeper服務(wù)器就變成了looking狀態(tài),把一個(gè)讀或者寫請(qǐng)求發(fā)給了它胳挎,它返回一個(gè)錯(cuò)誤饼疙,說“我已經(jīng)六神無主了,你還是找別人吧”慕爬,這種情況算不算它“result in a response”窑眯?

如果這些都不算的話,那么zookeeper和mongodb replica set都不滿足CAP的A医窿,但是它們又都是高可用的磅甩,因?yàn)樯鲜銮闆r下,client都能正確處理姥卢,應(yīng)用程序都能正常運(yùn)行卷要。

關(guān)于CAP中A的正確理解,還敬請(qǐng)持續(xù)關(guān)注這個(gè)問題独榴。

CAP定理的嚴(yán)格證明

CAP定理正確不正確呢僧叉?在我看來,從公理上來看是顯而易見的棺榔,從定理上來看是曖昧不明的瓶堕。
為了讀懂《Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services》,我先找了Lynch阿姨的《Distributed Algorithms》看了兩天症歇,然而發(fā)現(xiàn)異步網(wǎng)絡(luò)的定理1還算合理郎笆,然而推論1.1就云山霧罩,半同步網(wǎng)絡(luò)的定理2更是不知所云忘晤。實(shí)在才疏學(xué)淺宛蚓,所以這個(gè)問題也forward給其他大神了,期待更好的回答德频。
同時(shí)苍息,外國幾位老哥也對(duì)CAP定理的證明存在著質(zhì)疑缩幸,大家有興趣可以圍觀一下壹置。
https://maniagnosis.crsr.net/2010/09/some-misconceptions-about-cap-theorem.html
http://markburgess.org/blog_cap.html

后記

經(jīng)過這件小事,我產(chǎn)生了系統(tǒng)性的學(xué)習(xí)分布式系統(tǒng)的想法表谊,倒是讓我始料未及钞护。

原文作者:大神帶我來搬磚
愛好歷史和武俠,專注java爆办、大數(shù)據(jù)的程序員小哥哥难咕。
學(xué)習(xí)資料共享,技術(shù)問題討論,希望和大家一起交流進(jìn)步余佃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暮刃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爆土,更是在濱河造成了極大的恐慌椭懊,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件步势,死亡現(xiàn)場離奇詭異氧猬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坏瘩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門盅抚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人倔矾,你說我怎么就攤上這事妄均。” “怎么了破讨?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵丛晦,是天一觀的道長。 經(jīng)常有香客問我提陶,道長烫沙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任隙笆,我火速辦了婚禮锌蓄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撑柔。我一直安慰自己瘸爽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布铅忿。 她就那樣靜靜地躺著剪决,像睡著了一般。 火紅的嫁衣襯著肌膚如雪檀训。 梳的紋絲不亂的頭發(fā)上柑潦,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音峻凫,去河邊找鬼渗鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荧琼,可吹牛的內(nèi)容都是我干的譬胎。 我是一名探鬼主播差牛,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼堰乔!你這毒婦竟也來了偏化?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤镐侯,失蹤者是張志新(化名)和其女友劉穎夹孔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體析孽,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搭伤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了袜瞬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怜俐。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邓尤,靈堂內(nèi)的尸體忽然破棺而出拍鲤,到底是詐尸還是另有隱情,我是刑警寧澤汞扎,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布季稳,位于F島的核電站,受9級(jí)特大地震影響澈魄,放射性物質(zhì)發(fā)生泄漏景鼠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一痹扇、第九天 我趴在偏房一處隱蔽的房頂上張望铛漓。 院中可真熱鬧,春花似錦鲫构、人聲如沸浓恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽包晰。三九已至,卻和暖如春炕吸,著一層夾襖步出監(jiān)牢的瞬間伐憾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工算途, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塞耕,地道東北人蚀腿。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓嘴瓤,卻偏偏與公主長得像扫外,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廓脆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容