分佈式基礎-CAP理論

CAP概述

    CAP理論:一個分佈式系統最多隻能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance)這三項中的兩項。

CAP定義

C(一致性)

    一致性指“all nodes see the same data at the same time”,即更新操作成功並返回客戶端完成後,所有節點在同一時間的數據完全一致,所以,一致性,說的就是數據一致性(CAP中的一致性指的是強一致性)。

三種一致性策略

    對於關係型數據庫,要求更新過的數據能被後續的訪問都能看到,這是強一致性。

    如果能容忍後續的部分或者全部訪問不到,則是弱一致性。

    如果經過一段時間後要求能訪問到更新後的數據,則是最終一致性。

A(可用性)

    服務一直可用,而且是正常響應時間。

P(分區容錯性)

分佈式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性和可用性的服務。

CAP權衡

    注意:C,A,P三者並不是平等的,對於一個分佈式系統來說。P是一個基本要求,CAP三者中,只能在CA兩者之間做權衡,並且要想盡辦法提升P。故不考慮CA沒有P的情況。

CP

    如果一個分佈式系統不要求強的可用性,即容許系統停機或者長時間無響應的話,就可以在CAP三者中保障CP而捨棄A。

    一個保證了CP而一個捨棄了A的分佈式系統,一旦發生網絡故障或者消息丟失等情況,就要犧牲用戶的體驗,等待所有數據全部一致了之後再讓用戶訪問系統。

    如redis、Zookeeper等。

AP

    要高可用並允許分區,則需放棄一致性。一旦網絡問題發生,節點之間可能會失去聯繫。爲了保證高可用,需要在用戶訪問時可以馬上得到返回,則每個節點只能用本地數據提供服務,而這樣會導致全局數據的不一致性。

    如12306、電商系統等

    但是,放棄了C,只是放棄了強一致性,系統仍會保證最終一致性。比如12306買票,你按照正常流程,付完款之後,過了一段時間,12306提示你出票失敗,這就是最終一致性的表現。

參考

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

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