1. 程式人生 > >CAP和BASE理論

CAP和BASE理論

CAP和BASE理論

CAP和BASE理論用於分散式系統的架構設計指導。

CAP理論

CAP理論由電腦科學家Eric Brewer在2000年提出,其理論觀點是,在分散式計算機系統中不可能同時以下三個保證:

  • 一致性(Consistency) => 所有節點統一事件看到的是相同資料;
  • 可用性(Avaliability) => 每一個請求都能接收到響應;
  • 分割槽容錯性(Partition Tolerance) => 將系統分割槽後,在網路故障時,仍能操作;

其中一致性可以說是資料庫系統中的ACID的另一種表述:

  • 一個使用者請求要麼成功,要麼失敗,不能處於中間狀態;
  • 一旦一個事務完成,將來的所有事務必須基於這個完成後的狀態;
  • 未完成的事務不會互相影響;
  • 一旦一個事務完成,就是持久的;

對於可用性,跟字面意思一樣,也就是所有的請求都應該“成功”並且收到“返回”。 分割槽容錯性指在分散式系統中,節點崩潰或者網路阻塞都不應該導致系統停止服務。

CAP常見模型

現實情景中,由於CAP理論中三點不可同時具備,一般會選擇其中兩點。由此形成常見的CACPAP模型。相關模型示例如下:

CA模型

犧牲分割槽容錯性意味著把所有的機器搬到一臺機器內部,該模型明顯違背了分散式系統中對於可伸縮性的追求。CA模型的常見例子有:

  • 單站點資料庫
  • 叢集資料庫
  • LDAP
  • xFS檔案系統

CP模型

犧牲可用性意味著一旦系統中出現分割槽或者節點出現錯誤,則系統將直接停止服務。CP模型常見的例子有:

  • 分散式資料庫
  • 分散式鎖定
  • 絕大部分協議

AP模型

犧牲一致性意味著系統存在中間轉態,多個請求使用的資料可能是不同的。AP模型常見例子有:

  • Coda
  • Web快取
  • DNS

BASE理論

BASE理論來自網際網路電子商務領域的實踐,它是基於CAP理論逐步演化而來,核心思想是即便不能達到強一致性,也可以根據應用特點採用適當的方式來達到最終一致性的效果。BASE理論是對CAP中的C和A的延伸。BASE的含義如下:

  • Basically Available: 基本可用;
  • Soft state: 軟狀態,柔性事務,即狀態可以有一段時間的不同步;
  • Eventual consistency: 最終一致性;

BASE是反ACID的,它完全不同於ACID模型,通過犧牲一致性獲得基本可用性和柔性可靠性並要求達