CAP 理论、BASE 理论、FLP 理论
CAP 理論、BASE 理論、FLP 理論
CAP 理論、BASE 理論、FLP 理論
1.CAP 理論
C(Consistency) 一致性:
在寫操作之后的所有讀操作,必須要返回寫入的值。
A(Availability) 可用性:
只要收到用戶的請求,服務端就必須給出回應。
P(Partition tolerance) 分區容錯性:
一個分布式系統里面,節點組成的網絡本來應該是連通的。然而可能因為一些故障,使得有些節點之間不連通了,整個網絡就分成了幾塊區域。數據就散步在了這些不連通的區域中。這就叫分區;當你一個數據項只在一個節點中保存,那么分區出現后,和這個節點不連通的部分就訪問不到這個數據了。這個時候分區就是無法容錯的。
notes:數據存在的節點越多,分區容錯性越高,但要復制更新的數據就越多,一致性就越難保證。為了保證一致性,更新所有節點數據所需要的時間就越長,可用性就會降低。
2.BASE 理論
BASE(Basically Availabl, Softstate, Eventually consistent):
CAP 理論的延申,核心思想是即使無法達到強一致性,但也可以采用適合的方式犧牲一定的一致性,從而達到最終一致性,以及換取一定的可用性。
Basically Available: 基本可用。是指分布式系統在出現故障的時候,允許損失部分可用性,即保證核心可用。
Softstate: 軟狀態。是指允許系統中的數據存在中間狀態,并認為該狀態不影響系統的整體可用性,即允許系統在多個不同節點的數據副本存在數據延時。
Eventual Consistency:
最終一致性。是指分布式系統處于軟狀態的時間必須是有限的,在期限過后,應當保證所有副本保持數據一致性,從而達到數據的最終一致性。這個時間期限取決于網絡延時、系統負載、數據復制方案設計等因素。
最終一致性在實際工程實踐中,分為5種:
1.因果一致性(Causal consistency):
如果節點A在更新完某個數據之后通知了節點 B,那么節點B之后對該數據的訪問和修改都是基于A更新后的值。與此同時,和節點A無因果關系的節點C的數據訪問則沒有這樣的限制。
2.讀己之所寫(Read Your writes)
節點A更新一個數據后,它自己總是能訪問到自身更新過的最新值,而不會看到舊值。屬于因果一致性的一種特殊情況。
3.會話一致性(Session consistency)
會話一致性將對系統數據的訪問過程框定在了一個會話當中:系統能保證在同一個 有效 的會話中實現“讀己之所寫”的一致性,也就是說,執行更新操作之后,客戶端能夠在同一個會話種 始終讀取到該數據項的最新值。(PS:其實這很像關系型數據庫中的可重復讀事務隔離級別。)
4.單調讀一致性(Monotonic read consistency)
如果一個節點從系統中讀取出一個數據項的某個值之后,那么系統對于該節點后續的任何數據訪問都不應返回更舊的值。
5.單調寫一致性(Monotonic write consistency)
一個系統要能夠保證來自同一個節點的寫操作被順序的執行(與禁止指令重排序有點像)。
在實際的項目中,這五種方案往往會結合使用,用以構建分布式系統的最終一致性。
ACID 和 BASE的區別和聯系:
ACID 是傳統數據庫常用的設計理念,追求強一致性模型;
BASE 是大型分布式系統,用最終一致性代替強一致性,來獲取一定的可用性的新模型。
3.FLP理論
FLP理論(FLP Imposibility):
在異步通信的場景中,因為各個節點之間的延時,是否宕機等不確定因素的存在,所以不存在任何算法能達到強一致性。簡而言之在實際的分布式系統中,一致性算法的可靠性是無法保證的,即不存在一個能在異步網絡上能夠容忍各種故障并保持一致的分布式系統。
總結
以上是生活随笔為你收集整理的CAP 理论、BASE 理论、FLP 理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php正则重复匹配,php – 用于匹配
- 下一篇: 技校毕业是什么学历_初中毕业上技校学什么