自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

運(yùn)維必看!這里有 CAP 分布式最易懂的解釋

新聞 系統(tǒng)運(yùn)維 分布式
CAP 理論是分布式系統(tǒng)的一個(gè)基礎(chǔ)理論,它描述了任何一個(gè)分布式系統(tǒng)最多只能滿足以下三個(gè)特性中的兩個(gè)。

 [[345334]]

CAP 理論是分布式系統(tǒng)的一個(gè)基礎(chǔ)理論,它描述了任何一個(gè)分布式系統(tǒng)最多只能滿足以下三個(gè)特性中的兩個(gè):

  1. 一致性(Consistency)
  2. 可用性(Availability)
  3. 分區(qū)容錯(cuò)性(Partition tolerance)

CAP 理論聽起來(lái)十分抽象,本文嘗試以生活中的例子并用通俗易懂的語(yǔ)言來(lái)解釋 CAP 理論的含義。

一、記憶公司面世

一天晚上,正準(zhǔn)備入睡時(shí),你的妻子對(duì)你記住她生日并送她禮物表示感謝。這時(shí),一個(gè)商業(yè)想法從你的腦海中閃現(xiàn):人們總是弱于記憶生活中的事情,而我卻擁有超群的記憶力,因此,為何不成立一間公司可以充分運(yùn)用自己的記憶天賦來(lái)賺錢。說干就干,接著你在當(dāng)?shù)匾婚g報(bào)社刊登了記憶公司的宣傳廣告:

記憶公司 —— 你的事情永不會(huì)忘記

還在為你老是忘記而苦惱?福音來(lái)了,只須一個(gè)電話。

當(dāng)你需要記著某件事情時(shí),請(qǐng)撥打 400 - 888 - 8888,告訴我們你需要記住的事情,下次你需要找回這件事情,請(qǐng)?jiān)俅螕艽螂娫?,我們將?huì)告訴你的所需。

收費(fèi):每次只需要 10 元。

以下是一次你和顧客的電話對(duì)話。

顧客:Hey,麻煩幫我記住我鄰居的生日。

你:好。你鄰居生日是什么時(shí)候?

顧客:1月2日。

你:(在一個(gè)本子,翻到這位顧客的一頁(yè),記錄下他鄰居的生日。)好的,已記錄好。下次你找回鄰居的生日,請(qǐng)?jiān)俅螕艽螂娫挕?/p>

顧客:謝謝。

你:不客氣,本次收費(fèi) 10 元。

二、業(yè)務(wù)擴(kuò)大了

隨著時(shí)間的推移,記憶公司的業(yè)務(wù)發(fā)展得越來(lái)越好,越來(lái)越多的顧客打電話進(jìn)來(lái)需要服務(wù)。雖然賺到的錢越來(lái)越多,但也產(chǎn)生了一個(gè)新的問題。顧客打電話進(jìn)來(lái)時(shí),需要等待的時(shí)間越來(lái)越多,另外,當(dāng)你生病時(shí),所有顧客都不能獲得服務(wù),這令人很是煩惱。

于是,你想出了一個(gè)新的計(jì)劃:你和你的妻子同時(shí)接收顧客的電話,顧客仍然只需要記著一個(gè)公司的服務(wù)電話 400 - 888 - 8888,一個(gè)路由器會(huì)將顧客的電話分發(fā)到你和妻子電話上。

三、服務(wù)出錯(cuò)了

新計(jì)劃實(shí)施兩天后,你接到了一個(gè)名叫 John 的電話,John 是個(gè)老顧客了。

John:Hey

你:你好,歡迎撥打記憶公司電話,有什么可以幫到你嗎?

John:可以告訴我去新澤西的航班是什么時(shí)候嗎?

你:當(dāng)然。(然后你翻開 John 的頁(yè)面,發(fā)現(xiàn)并沒有 John 航班的記錄)

你:你好,是不是搞錯(cuò)了,我們這里并沒有關(guān)于你航班的信息。

John:什么?!昨天我才剛打電話過來(lái)說去新澤西航班的事情。

哪里出錯(cuò)了?難道 John 撒謊了。你繼續(xù)思考導(dǎo)致出錯(cuò)的原因。會(huì)不會(huì)是妻子接到了電話?你走到妻子的桌子,發(fā)現(xiàn)妻子將 John 的航班記錄在了本子上,這時(shí)你才意識(shí)到導(dǎo)致問題的原因,妻子接聽到 John 的電話,但你的本子沒有 John 的記錄。

如果將上面的實(shí)施計(jì)劃稱一個(gè)分布式的設(shè)計(jì),那這個(gè)設(shè)計(jì)存在明顯的問題——一致性(consistent)的問題。打進(jìn)來(lái)的電話可能其中一人接聽并記錄下來(lái),下次電話查詢時(shí)卻可能由另一人接聽,這樣就會(huì)出現(xiàn)不一致的問題,無(wú)法為顧客準(zhǔn)確提供服務(wù)。

四、解決一致性問題

晚上你在床上翻來(lái)覆去,最后想到一個(gè)解決一致性問題的辦法,你把新的計(jì)劃告訴妻子:

每次接收記錄的電話(顧客要求幫忙記住他們的事情)時(shí),我們同時(shí)告知另一個(gè)人

這樣,我們兩個(gè)人都會(huì)在本子更新這位顧客的記錄

下次這位顧客再次打電話進(jìn)來(lái)查詢,這時(shí)我們不需要告知對(duì)方,因?yàn)閮蓚€(gè)本子都有這位顧客的記錄了

這個(gè)方法只有一個(gè)問題,你告訴妻子,當(dāng)有顧客需要記錄時(shí),我們不能并行地工作。例如,你接收到記錄的電話并這個(gè)信息告知我,這時(shí)我就不能再接聽其他顧客的電話了。但這個(gè)問題基本上也是可以接受的,因?yàn)榇蟛糠诸櫩偷碾娫挾际遣樵兊摹?/p>

老公你真聰明,妻子稱贊你,但這個(gè)設(shè)計(jì)還有一個(gè)問題。如果某天我們其中一個(gè)人有事不能工作了怎么辦?由于我們要求每次接到記錄電話需要同時(shí)更新兩個(gè)本子,這就導(dǎo)致我們不能為顧客提供記錄的服務(wù),這樣就導(dǎo)致無(wú)法滿足 可用性(availability)的要求。例如,當(dāng)我接到一個(gè)記錄的電話時(shí),而你恰好不在,這樣我就無(wú)法完成這個(gè)顧客的服務(wù)。這是由于我無(wú)法要求你更新你的本子。

五、更好的辦法

這時(shí)你才意識(shí)到,設(shè)計(jì)一個(gè)分布式的系統(tǒng)是多么的不容易,難道就沒有同時(shí)滿足 一致性和可用性 的設(shè)計(jì)嗎?

又經(jīng)過一晚的思考,你想到一個(gè)兩全其美的辦法,新的辦法跟之前的很相似。你把新的辦法告訴妻子:

當(dāng)接到記錄的電話(顧客要求為他們記錄事情),如果我們兩人當(dāng)天都上班,那么我們同時(shí)記錄下這位顧客的記錄

但如果另一人當(dāng)天沒上班,我們可以將記錄通過 E-mail 的方式發(fā)送給不上班的人

第二天,沒上班的人上班后第一件事就是接收所有的 E-mail ,并在自己的本子上記錄所有顧客的要求。記錄好后,才開始接收第一個(gè)電話。

真是天才,妻子說,這個(gè)辦法我找不出任何問題了,而且可以同時(shí)滿足一致性和可用性的要求。

六、妻子生氣了

公司所有業(yè)務(wù)繼續(xù)正常運(yùn)作了好一段時(shí)間,即使你和妻子其中一人不上班,服務(wù)仍然可以正常提供。

好景不長(zhǎng),新的問題又出現(xiàn)了。

一天,妻子由于某件小事對(duì)你很是生氣,以至于她接到一位顧客需要記錄的電話并沒告知你。由于記錄沒能在兩個(gè)本子更新,你的設(shè)計(jì)完全被打破了。你的設(shè)計(jì)建立在兩人良好溝通的前提下,如果出現(xiàn)溝通無(wú)法進(jìn)行的情況,系統(tǒng)就出現(xiàn)問題了。也就是說,你的設(shè)計(jì)沒有達(dá)到 分區(qū)容忍性(partition tolerant)的要求。

當(dāng)然,你也可以允許溝通無(wú)法進(jìn)行的情況下繼續(xù)提供服務(wù)。這樣,當(dāng)有顧客需要記錄時(shí),由于需要滿足 一致性 要求,這位顧客的服務(wù)就無(wú)法完成,也就是 可用性 無(wú)法滿足。。。

七、結(jié)論

讓我們?cè)俅位氐?CAP 理論,CAP 理論告訴我們,當(dāng)設(shè)計(jì)一個(gè)分布式系統(tǒng)時(shí),我們無(wú)法同時(shí)滿足 一致性,可用性,分區(qū)容忍性 的要求,我們最多滿足其中的兩個(gè)要求,形式化的證明,可以參考 CAP 理論的證明 。

  • 一致性:一旦顧客更新了記錄,下次再打電話查詢時(shí),總能獲取最新的記錄
  • 可用性:只要你和妻子有人上班,記憶公司總能為顧客提供服務(wù)
  • 分區(qū)容忍性:即使你和妻子的溝通無(wú)法進(jìn)行,記憶公司仍然可以提供服務(wù)

番外篇:背后的記錄員

上面設(shè)計(jì)的系統(tǒng)仍然有優(yōu)化的空間。記憶公司可以雇傭一個(gè)記錄員,當(dāng)你和妻子其中一人接到顧客的記錄電話時(shí),記錄員在背后會(huì)將這個(gè)記錄寫在另一個(gè)人的本子上。這樣一來(lái),另一個(gè)人的服務(wù)就不會(huì)被這個(gè)記錄的電話打斷。許多 NoSQL 系統(tǒng)就使用了這個(gè)方法,一個(gè)節(jié)點(diǎn)更新了數(shù)據(jù),背后會(huì)有一個(gè)進(jìn)程將數(shù)據(jù)同步到其他節(jié)點(diǎn)。

這種設(shè)計(jì)存在的問題是可能在短時(shí)間內(nèi)丟失一致性。例如,顧客打電話進(jìn)來(lái)要求記錄,妻子接聽到這個(gè)電話。緊接著,這位顧客再次打電話進(jìn)來(lái)要求查詢,你接聽到這個(gè)查詢的電話。如果記錄員還沒將這位顧客的記錄更新到你的本子,這時(shí)顧客就沒法正常查詢。雖然存在這種可能性,但你也不用過分擔(dān)心,因?yàn)轭櫩秃苌贂?huì)打完記錄電話后馬上又打查詢電話,所以出現(xiàn)本子內(nèi)容不一致的概率很低。

 

責(zé)任編輯:張燕妮 來(lái)源: 高效運(yùn)維
相關(guān)推薦

2022-11-14 08:14:28

分布式數(shù)據(jù)庫(kù)運(yùn)維

2021-06-02 22:16:56

框架CAPBASE

2018-04-25 09:01:02

2021-03-11 07:27:15

CAPBASE分布式

2016-11-15 13:35:16

2017-03-14 08:57:10

CAP定理可用性

2020-10-16 06:36:57

CapBase定理

2018-06-28 08:18:56

Ceph運(yùn)維存儲(chǔ)

2016-07-12 10:03:37

2020-12-14 14:24:07

CAP分布式數(shù)據(jù)一致性

2024-11-18 17:09:19

2022-02-08 10:21:17

運(yùn)維應(yīng)用監(jiān)控

2019-07-11 16:16:03

智能分布式數(shù)據(jù)

2018-07-16 09:00:06

Ceph運(yùn)維開源

2023-09-21 10:47:29

分布式CAPBASE

2024-03-25 14:31:45

2018-06-20 10:42:47

分布式系統(tǒng)CAP

2025-01-10 15:21:35

2023-04-17 08:21:42

2013-06-07 13:46:29

分布式存儲(chǔ)自動(dòng)化運(yùn)維
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)