CAP爲什麼不能同時滿足, BASE理論

在分佈式系統中, 我們經常會提到CAP理論和BASE理論.

其中CAP代表什麼呢?

  • C(Consistency): 一致性, 就是說我們部署一套系統, 肯定都是部署在多臺機器上, 形成一個集羣, 而集羣中的各個結點上面的數據要保持一致.
  • A(Availability): 可用性, 可用性就是指各個結點都必須保持可用.
  • P(Partition tolerance): 分區容錯性, 這點是分佈式系統最基本的要求.

通常我們會說CAP中的C和A不能同時滿足, 爲什麼呢?

首先我們應有個基本的理解, 系統部署在多個結點, 各個結點是需要進行通信, 數據共享的. 假如我們有3個結點.

  • 如果滿足C(一致性), 也就是說當Server1收到一條最新的數據, 需要把這條數據廣播到Server2和Server3, 在廣播期間, 爲了保證一致性, Server是不對外保證服務的. 所以在有限時間內, 不能保證所有結點的可用性, 也就是CAP中的A.
  • 如果滿足A(可用性), 很顯然, Server1收到一條新的數據更新, 在數據更新到Server2和Server3期間, 如果有新的請求到Server2和Server3, 那麼Server1和Server2或者Server1和Server3之間的數據是不一致的, 也就是滿足不了CAP中的C.

由此可見, CAP有個重要的點是A(可用性), 因爲客戶端請求有時間限制的, 所以可用性必須是在有限時間內必須保證可用.

那麼BASE理論又是什麼呢?

  • Base Available(基本可用),系統在出現不可預知的故障的時候,允許喪失部分可用性
  • Soft state, 允許數據存在的中間狀態, 灰度狀態, 過渡狀態
  • Eventually consistent,最終一致性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章