分佈式理論——CAP定理

目錄:

  1. 什麼是CAP
  2. CAP的組合分析
  3. BASE理論

 

1.什麼是CAP?

2000 年的時候,Eric Brewer 教授提出了 CAP 猜想,2年後,被 Seth Gilbert 和 Nancy Lynch 從理論上證明了猜想的可能性,從此,CAP 理論正式在學術上成爲了分佈式計算領域的公認定理。並深深的影響了分佈式計算的發展。

CAP原則又稱CAP定理,指的是在一個分佈式系統中,一致性(Consistency)、可用性(Availability)、分區容錯性(Partition tolerance)。CAP 原則指的是,這三個要素最多隻能同時實現兩點,不可能三者兼顧。

選項 描述
C(Consistency) 一致性,分佈式系統中的數據在多個存儲節點保持一致
A(Availability) 可用性,部分節點出現故障,仍然保持整體對請求作出非錯的響應(但是不能保證所有數據都是最新狀態,即不能保證數據一致性)
P(Partition tolerance)

分區容錯性,存儲節點之間通過網絡進行通信,當出現網絡分區時,仍然能夠對外提供滿足一致性和可用性的服務。

由於網絡硬件肯定會出現延遲丟包等問題,所以分區容錯性是我們必須需要實現的。

2.CAP的組合分析

爲什麼一定要3選2?

如果分佈式系統中的存儲無副本,所有的數據都存在一臺服務器中,那麼系統必然滿足強一致性,因爲只有一份數據,不會出現數據不一致的情況。事務的ACID就是強一致性的。

如果採用的是分佈式存儲,要麼AP,要麼CP,要麼CA,不可能同時滿足CAP。

如,現在有a,b兩個存儲節點,按照正常的情況:

C:a更新數據,b同樣要更新數據

A:a,b對外都是可用的

P:a,b之間出現網絡分區,保證系統對外可用

出現網絡分區,a,b之間已經無法通信,不可能實現C,如果一定要實現C,需要重啓服務,則捨棄了A,所以分佈式存儲系統中無法同時滿足CAP。

選項 描述
CA 滿足一致性和可用性,單機數據庫的使用
CP 滿足一致性和分區容錯性,當出現網絡分區,要滿足一致性需要重啓服務器,捨棄可用性
AP 滿足可用性和分區容錯性,當出現網絡分區,要滿足可用性,就需要對外繼續提供服務,則會捨棄數據的一致性

3.BASE理論

BASE是Basically Available(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的簡寫。

BASE是對CAP中一致性和可用性權衡的結果,其來源於對大規模互聯網系統分佈式實踐的結論,是基於CAP定理逐步演化而來的:

其核心思想是:即使無法做到強一致性(Strong consistency),但每個應用都可以根據自身的業務特點,採用適當的方法達到系統的最終一致性(Eventual consistency)。

選項 描述
Basically Available

基本可用,分佈式系統在遭遇不可預知故障時,允許損失部分可用性。

基本可用的例子:

響應時間上的損失:正常情況下,一個在線搜索引擎需要0.5秒內返回給用戶相應的查詢結果,但由於出現異常(比如系統部分機房發生斷電或斷網故障),查詢結果的響應時間增加到了1~2秒。

功能上的損失:正常情況下,在一個電子商務網站上進行購物,消費者幾乎能夠順利地完成每一筆訂單,但是在一些節日大促購物高峯的時候,由於消費者的購物行爲激增,爲了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面。

Soft state 軟狀態,也稱爲軟狀態,和硬狀態相對,是指允許系統中的數據存在中間狀態,並認爲該中間狀態的存在不會影響系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步的過程存在延時。
Eventually consistent 最終一致性,強調的是系統中所有的數據副本,在經過一段時間的同步後,最終能夠達到一個一致的狀態。因此,最終一致性的本質是需要系統保證最終數據能夠達到一致,而不需要實時保證系統數據的強一致性。

 

參考鏈接:https://www.jianshu.com/p/4118718658ac

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