分佈式系統的CAP原理及其應用

什麼是分佈式系統的CAP原理

    在分佈式系統中,一致性(C)指每一次讀都得到最近的寫數據,或者一個異常;可用性(A)指每一個請求都得到一個非異常的響應,而不保證取得最近的寫數據;分區容錯性(P)是指結點間網絡異常時,系統仍然可以繼續運行。原理指出,一個分佈式系統最多隻能提供CAP中的兩個保障。

    值得注意的是,CAP原理指的是在分區發生時,只能在保證一致性或可用性中二選其一。而非因爲分區不可避免,在系統設計時必須放棄一致性或可用性,沒有分區發生時可以同時保證一致性和可用性。

CAP原理的簡單模型解釋

    如圖,網絡中有兩個結點N1和N2,可以簡單的理解N1和N2分別是兩臺計算機,他們之間網絡可以連通,N1中有一個應用程序A,和一個數據庫V,N2也有一個應用程序B和一個數據庫V。

    正常運行時的場景如下圖:


    當結點間的網絡發生問題時,N1和N2間的數據同步失效。此時系統只能在一致性和可用性中二選一。選擇一致性時,結點將對請求返回不可用異常。選擇可用性時,結點將返回現有的數據,而此時數據可能已經過時。


CAP原理在互聯網場景的應用

    對於多數大型互聯網應用的場景,主機衆多、部署分散,而且現在的集羣規模越來越大,所以節點故障、網絡故障是常態,而且要保證服務可用性達到N個9,即保證P和A,捨棄C(退而求其次保證最終一致性)。雖然某些地方會影響客戶體驗,但沒達到造成用戶流失的嚴重程度。

    對於涉及到錢財這樣不能有一絲讓步的場景,C必須保證。網絡發生故障寧可停止服務(或者只讀不寫),這是保證CA,捨棄P。

CAP原理在數據庫領域的應用

    CAP理論在數據庫領域也有廣泛的應用,如下圖中按照CAP中三選二對數據庫系統的分類:


    參考資料

1. http://www.hollischuang.com/archives/666

2. http://zohararad.github.io/presentations/big-data-introduction/

發佈了44 篇原創文章 · 獲贊 35 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章