老徐和阿珍的故事:CAP是什么?超級愛放P嗎?
人物背景:
老徐,男,本名
徐福貴
,從事Java相關研發工作多年,職場老油條,摸魚小能手,雖然歲數不大但長的比較著急,人稱老徐。據說之前炒某幣敗光了所有家產,甚至現在還有欠債。
阿珍,女,本名
陳家珍
,剛剛入職不久的實習生,雖然是職場菜鳥但聰明好學。據說是學校的四大校花之一,追求她的人從旺角排到了銅鑼灣,不過至今還單身。
阿珍吃完飯剛剛回來,看到老徐正在吃方便面,說:“老徐,不至于吧。你為了還債,中午就吃這個呀?”
老徐不慌不忙地嚼著方便面,說:“這可是白象的方便面,國貨之光,超級難買,我好不容易才買到的。”
阿珍坐了下來,說:“聞著還挺香,我也買點嘗嘗。對了,老徐,上午開會的時候,聽你們總說CAP、CAP的,CAP是什么意思?超級愛放P嗎?”
老徐嘴里方便面差點噴了出來,笑著說:“第一次聽你這么解釋的,來!我給你科普一下。”
CAP 是加州大學伯克利分校(University of California at Berkeley)的計算機教授
埃里克·布魯爾(Eric A. Brewer)在2000年的分布式計算原理研討會(PODC,Symposium on Principles of Distributed Computing)上提出的一個猜想。
2002 年,麻省理工學院(MIT,Massachusetts Institute of Technology)的賽斯·吉爾伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)發表了對這個猜想的證明,使之成為分布式計算領域公認的一個定理。
CAP定理是指在一個互相連接并共享數據的節點的分布式系統中,當涉及讀寫操作時,只能保證一致性(Consistence)、可用性(Availability)、分區容錯性(Partition Tolerance)三者中的兩個,另外一個必須被犧牲。
CAP,是Consistence、Availability、Partition三個英文單詞的首字母縮寫。
其中,一致性是指對某個指定的客戶端來說,讀操作保證能夠返回最新的寫操作結果;可用性是指非故障的節點在合理的時間內返回不是錯誤和超時的合理響應。分區容忍性是指當出現網絡分區后,系統能夠繼續運行。
因為網絡本身無法做到100%可靠,有可能出故障,分區是一個必然的現象,所以我們必須選擇分區容忍性(P)。在分布式系統中不可能選擇CA(一致性和可用性),只能選擇CP(一致性和分區容錯性)或者AP(可用性和分區容錯性)。
當選擇CP時,發生分區現象后,為了保證數據的一致性,客戶端訪問任意節點都會被返回錯誤,所以不能滿足可用性,比如ZooKeeper。
當選擇AP時,發生分區現象后,為了保證節點的可用性,客戶端可以訪問某個節點上可能過時的數據,所以不能滿足一致性,比如Eureka。
阿珍用手捂著嘴打了一個哈欠,眨了眨還有淚花的眼睛,說:“這理論性也太強了吧,還是說說你的白象方便面在哪買的吧。”
分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。