CAP理論是皇帝的新裝

CAP 是由Brewer 在 90 年代提出,其核心內容是:在一個分佈式存儲系統裏,無法同時保證一致性、可用性、分區容忍性,只能三選二。

不論面試官、還是研發人員,聊到分佈式,必談CAP理論。儼然一副,把CAP理論當做至理名言,懂CAP就是高手、就是大佬的樣子。而在我看來,CAP理論其誤導性,遠大於其實際中的指導意義。所以我稱它爲:皇帝的新裝。

在CAP理論裏,甚至對於一致性、可用性、分區容忍性的準確定義,都存在不同的解讀。更不用說,我們的系統並不是非黑即白的一致不一致、可用不可用、可容忍分區不可容忍分區。接下來,我們從把一個存儲系統設計爲分佈式的目的開始,分析一下CAP理論。

首先,一個存儲系統,設計成分佈式的目的,除了獲得更高性能外,更多的是爲了更高的可用性(即CAP裏的A)。

其次,要想使一個分佈式系統達到高可用,必然得有對網絡分區的容忍性(即CAP裏的P)。如果分佈式系統沒有P,那就跟單節點沒啥區別了,對吧?(這裏不考慮性能原因)。所以在這裏,A和P的關係是:爲了獲得A,我們不得不先有P。

接下來我們再看一致性。爲了得到A,我們使用了分佈式,且必須得有P。這必然會帶來一致性的問題。如果我們要保持強一致性,則可用性會有所下降。注意這裏說的是可用性下降,並不是沒有。如果我們在一致性上退步,保持最終一致性即可,則可用性就會提高。

從以上分析視角來看:我們分佈式系統的核心目的就是爲了可用性,我們必須得有P。如果要A高一些,C就得退讓一些,反之亦然。他們之間並非三選二的關係。

說到這,是不是可以聯想到BASE理論?因爲分佈式系統必然有P,所以該理論並沒有強調P,而是說了可用性A和一致性C。但該理論更準確的地方是,它沒有把A和C非黑即白化,而是強調了基本可用性和最終一致性。

總的來說,CAP理論誤導性和模糊性太大,甚至說它是錯誤的都沒問題,因爲CAP並不是一個三選二的關係。而是必須有P,然後在C和A之間玩蹺蹺板的關係。還是BASE理論更準確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章