原文同步至 http://waylau.com/cap-theorem/數據庫
本文介紹了介紹了分佈式系統著名的 CAP 理論。什麼是 CAP 理論?爲何說 CAP 只能三選二?瞭解 CAP 對於系統架構又有什麼指導意義?本文將一一做答。緩存
在計算機科學理論,CAP 定理(也稱爲 Brewer 定理),是由計算機科學家 Eric Brewer 提出的,即在分佈式計算機系統不可能同時提供如下所有三個保證:安全
下面分別舉例說明了爲何說 CAP 只能三選二。網絡
上面的圖顯示了在一個網絡中,N1 和 N2 兩個節點。他們都共享數據塊 V,其中有一個值 V0 。運行在 N1 的 A 程序能夠認爲是安全的、無 bug、可預測的和可靠的。運行在 N2 是 B 程序。這個例子中,A 將寫入 V 新值,而 B 從 V 讀取值架構
系統預期執行下面的操做分佈式
若是網絡是分區的,當 N1 到 N2 的消息不能傳遞時,執行上面的第三步,會出現雖然 N2 能訪問到 V 的值(可用性),但其實與 N1 的 V 的值已經不一致了(一致性)。網站
舉例:rem
實現方式:部署
舉例:get
實現方式:
舉例:
實現方式:
在系統架構時,應該根據具體的業務場景,來權衡 CAP。好比,對於大多數互聯網應用來講(如門戶網站),由於機器數量龐大,部署節點分散,網絡故障是常態,可用性是必須須要保證的,因此只有捨棄一致性來保證服務的 AP。而對於銀行等,須要確保一致性的場景,一般會權衡 CA 和 CP 模型,CA 模型網絡故障時徹底不可用,CP 模型具有部分可用性。