什么是分布式系統的BASE理論?
BASE理論
eBay的架構師Dan Pritchett源于對大規模分布式系統的實踐總結,在ACM上發表文章提出BASE理論,BASE理論是對CAP理論的延伸,核心思想是即使無法做到強一致性(Strong Consistency,CAP的一致性就是強一致性),但應用可以采用適合的方式達到最終一致性(Eventual Consitency)。
BASE是指基本可用(Basically Available)、軟狀態( Soft State)、最終一致性( Eventual Consistency)。
基本可用(Basically Available)
基本可用是指分布式系統在出現故障的時候,允許損失部分可用性,即保證核心可用。
電商大促時,為了應對訪問量激增,部分用戶可能會被引導到降級頁面,服務層也可能只提供降級服務。這就是損失部分可用性的體現。
以下兩個就是“基本可用”的典型例子
- 響應時間上的損失:正常情況下,一個在線搜索引擎需要0.5秒內返回給用戶相應的查詢結果,但由于出現異常(比如系統部分機房發生斷電或斷網故障),查詢結果的響應時間增加到了1~2秒
- 功能上的損失:正常情況下,在一個電子商務網站上進行購物,消費者幾乎能夠順利地完成每一筆訂單,但是在一些節日大促購物高峰的時候,由于消費者的購物行為激增,為了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面
軟狀態( Soft State)
軟狀態是指允許系統存在中間狀態,而該中間狀態不會影響系統整體可用性。分布式存儲中一般一份數據至少會有三個副本,允許不同節點間副本同步的延時就是軟狀態的體現。mysql replication的異步復制也是一種體現。
最終一致性( Eventual Consistency)
最終一致性是指系統中的所有數據副本經過一定時間后,最終能夠達到一致的狀態。弱一致性和強一致性相反,最終一致性是弱一致性的一種特殊情況。
ACID和BASE的區別與聯系
ACID是傳統數據庫常用的設計理念,追求強一致性模型。BASE支持的是大型分布式系統,提出通過犧牲強一致性獲得高可用性。
ACID和BASE代表了兩種截然相反的設計哲學。
在分布式系統設計的場景中,系統組件對一致性要求是不同的,因此ACID和BASE又會結合使用。