1. 程式人生 > 程式設計 >分散式理論 BASE

分散式理論 BASE

2008 年 eBay 的架構師 Dan Pritchett 在發表給 ACM 的文章 BASE: An Acid Alternative 中第一次明確提出BASE理論

簡介

BASE 不是 base (基礎) 的意思

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

BASE是對CAP 理論強一致性可用性權衡的結果,其來源於對大規模網際網路系統分散式實踐的總結,是基於CAP定理逐步演化而來的,其核心思想是即使無法做到強一致性(Strong consistency),每個應用都可以根據自身的業務特點,採用適當的方式來使系統達到最終一致性(Eventual consistency)。

Basically Available

BASE 中的 BA,基本可用。

基本可用是指分散式系統在出現不可預知故障的時候,允許損失部分可用性 (響應時間、功能上的可用性).

注意,允許損失部分可用性 不等價於 系統不可用

響應時間上的損失:正常情況下的搜尋引擎 0.5 秒即可返回結果,而基本可用情況下的搜尋引擎 1 秒才返回結果。

功能上的損失:在一個電商網站上,正常情況下,使用者可以順利完成每一筆訂單,但是到了大促期間,為了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面。

Soft state

BASE 中的 S,軟狀態。

軟狀態指的是,允許系統中的資料存在中間狀態,且該狀態不影響系統的整體可用性,即允許系統在多個不同節點的資料副本存在資料延時,前提是這個延時不影響可用性。

硬狀態,要求多個節點的資料副本都是一致的

Eventually consistent

BASE 中的 E,最終一致性。

上面說軟狀態,然後不可能一直是軟狀態,必須有個時間期限。在期限過後,應當保證所有副本保持資料一致性。

亞馬遜技術長Werner Vogels在於2008年發表的一篇經典文章Eventually Consistent-Revisited中,對最終一致性進行了非常詳細的介紹。

他認為最終一致性是一種特殊的弱一致性

系統能夠保證在沒有其他新的更新操作的情況下,資料最終一定能夠達到一致的狀態 ,因此所有客戶端對系統的資料訪問都能夠獲取到最新的值。同時,在沒有發生故障 的前提下,資料達到一致狀態的時間延遲,取決於網路延遲、系統負載和資料複製方 案等因素。

最終一致性強調的是系統中所有的資料副本,在經過一段時間的同步後,最終能夠達到一致的狀態。

強一致性

有弱一致性,就有強一致性。

強一致性要求,在更新的同時,所有節點查詢到的都必須是最新的資料。

5種最終一致性

實際工作中,最終一致性分為 5 種

因果一致性(Causal consistency)

如果節點A在更新完某個資料後通知了節點B,那麼節點B的訪問修改操作都是基於A更新後的值,同時,和節點A沒有因果關係的C的資料訪問則沒有這樣的限制

讀己之所寫(Read your writes)

因果一致性的特定形式,一個節點A總可以讀到自己更新的資料

會話一致性(Session consistency)

訪問儲存系統同一個有效的會話,系統應保證該程式讀己之所寫

單調讀一致性(Monotonic read consistency)

一個節點從系統中讀取一個特定值之後,那麼該節點從系統中不會讀取到該值以前的任何值

單調寫一致性(Monotonic write consistency)

一個系統要能夠保證來自同一個節點的寫操作被順序執行(保證寫操作序列化)