老徐和阿珍的故事:CAP是什麼?超級愛放P嗎?
人物背景:
老徐,男,本名徐福貴,從事Java相關研發工作多年,職場老油條,摸魚小能手,雖然歲數不大但長的比較著急,人稱老徐。據說之前炒某幣敗光了所有家產,甚至現在還有欠債。
阿珍,女,本名陳家珍,剛剛入職不久的實習生,雖然是職場菜鳥但聰明好學。據說是學校的四大校花之一,追求她的人從旺角排到了銅鑼灣,不過至今還單身。
微信公眾號:萬貓學社
微信掃描二維碼
關注後回覆「電子書」
獲取12本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)的賽斯·吉爾伯特
CAP定理是指在一個互相連線並共享資料的節點的分散式系統中,當涉及讀寫操作時,只能保證一致性(Consistence)、可用性(Availability)、分割槽容錯性(Partition Tolerance)三者中的兩個,另外一個必須被犧牲。
CAP,是Consistence、Availability、Partition三個英文單詞的首字母縮寫。
其中,一致性是指對某個指定的客戶端來說,讀操作保證能夠返回最新的寫操作結果;可用性是指非故障的節點在合理的時間內返回不是錯誤和超時的合理響應。分割槽容忍性
因為網路本身無法做到100%可靠,有可能出故障,分割槽是一個必然的現象,所以我們必須選擇分割槽容忍性(P)。在分散式系統中不可能選擇CA(一致性和可用性),只能選擇CP(一致性和分割槽容錯性)或者AP(可用性和分割槽容錯性)。
當選擇CP時,發生分割槽現象後,為了保證資料的一致性,客戶端訪問任意節點都會被返回錯誤,所以不能滿足可用性,比如ZooKeeper。
當選擇AP時,發生分割槽現象後,為了保證節點的可用性,客戶端可以訪問某個節點上可能過時的資料,所以不能滿足一致性,比如Eureka。
阿珍用手捂著嘴打了一個哈欠,眨了眨還有淚花的眼睛,說:“這理論性也太強了吧,還是說說你的白象方便麵在哪買的吧。”
最後,謝謝你這麼帥,還給我點贊和關注。
微信公眾號:萬貓學社
微信掃描二維碼
關注後回覆「電子書」
獲取12本Java必讀技術書籍