CAP定理與BASE理論

1. CAP定理

  • C:Consistency,一致性
  • A:Availability,可用性
  • P:Partition tolerance,分區容錯性

CAP定理,指的是在一個分佈式系統中,一致性、可用性、分區容錯性,三者不可得兼。html

2. CAP詳解

2.1 一致性(C)

指全部節點訪問同一份最新的數據副本。通俗理解就是,在分佈式系統中,全部的數據副本,在同一時刻值相同。網絡

2.2 可用性(A)

每次請求都能獲取到相應,能夠對外提供服務併發

2.3 分區容錯性(P)

因爲分佈式系統的一個節點發生網絡延遲或故障,在規定時限內系統不能作到數據一致性,就發生了分區(系統中有多個數據不一致的節點)。此時,必須在一致性和可用性之間作出選擇。分佈式

例如:分佈式系統中有兩個節點,一個節點發生了網絡延遲或故障。若是爲了保證節點數據一致性,那麼就必須放棄可用性,就是兩個節點都再也不提供服務;若是爲了保證可用性,就是說仍要提供服務,那麼就必須放棄一致性,沒有發生網絡延遲或故障的節點仍提供服務。高併發

3. CP仍是AP?

在分佈式系統中,發生網絡延遲或故障是不可避免的,也就是分區容錯性是避免不掉的,而發生了分區後,只能在一致性和分區容錯性自建選擇,那麼咱們只有兩種選擇:.net

  • 數據一致性和分區容錯性(CP)
  • 可用性和分區容錯性(AP)

不管選擇CP,仍是選擇AP,都是根據業務需求來選擇,沒有所謂的誰比誰好。設計

3.1 選擇CP

也就是說,咱們更看重數據的一致性,適用於對數據一致性有嚴格要求的業務場景,例如金融,12306售票。htm

3.2 選擇AP

此時更看重可用性,放棄一致性(仍是要追求最終一致性的,不一致的數據沒有意義),也是各大互聯網公司一直宣稱服務不可用時間有多少秒,強調的就是可用性。blog

4. BASE理論

BASE理論是:ip

  • 基本可用(BA, Basically Available)
  • 軟狀態(Soft State)
  • 最終一致性(Eventual Consistency)

其思想是,在分佈式系統,選擇可用性和分區容錯性時,沒法作到一致性,能夠採用適當的方案達到最終一致性,在保證可用性的同時,數據最終也能達到一致。

例如,在電商的促銷活動中,是爲了追求高可用(相對於CAP中的可用,高可用偏重於能夠處理高併發,也是就高QPS),放棄一致性,選擇最終一致性(下單成功後,不會立馬收到短信,延遲一段時間仍是會收到短信。記得某平臺,在購物節期間,都再也不提供發短信服務了)。爲何要追求可用,甚至是高可用呢?在促銷活動中,1件商品,可能有1百萬我的同時在搶,那麼就是說,當一我的進入搶購時(要判斷這我的是否是知足參加的條件等),剩餘的都在等待,甚至於拒絕你搶購,對用來講,這是不能容忍的,最真實的案例就是12306上搶票。

4.1 基本可用

指在分佈式系統中,發生故障時,容許損失一部分功能,可是其它功能仍是可用的。

4.2 軟狀態

指分佈式系統中,容許存在數據的中間狀態,而中間狀態又不會影響系統的可用性。

4.3 最終一致性

分佈式系統中的數據在一段時間後,最終能達到一致性。

5. CAP定理和BASE理論

CAP定理揭示了在分佈式系統中一致性、可用性和分區容錯性的不能同時知足,而能夠設計知足BASE理論的分佈式系統。

參考文獻

CAP定理

從分佈式一致性談到CAP理論、BASE理論

CAP和BASE理論

相關文章
相關標籤/搜索