1. 程式人生 > >學習分散式不得不會的BASE理論

學習分散式不得不會的BASE理論

轉載自   學習分散式不得不會的BASE理論 

eBay的架構師Dan Pritchett源於對大規模分散式系統的實踐總結,在ACM上發表文章提出BASE理論,BASE理論是對CAP理論的延伸,核心思想是即使無法做到強一致性(Strong Consistency,CAP的一致性就是強一致性),但應用可以採用適合的方式達到最終一致性(Eventual Consitency)。

BASE是指基本可用(Basically Available)、軟狀態( Soft State)、最終一致性( Eventual Consistency)。

基本可用(Basically Available)

基本可用是指分散式系統在出現故障的時候,允許損失部分可用性,即保證核心可用。

電商大促時,為了應對訪問量激增,部分使用者可能會被引導到降級頁面,服務層也可能只提供降級服務。這就是損失部分可用性的體現。

軟狀態( Soft State)

軟狀態是指允許系統存在中間狀態,而該中間狀態不會影響系統整體可用性。分散式儲存中一般一份資料至少會有三個副本,允許不同節點間副本同步的延時就是軟狀態的體現。mysql replication的非同步複製也是一種體現。

最終一致性( Eventual Consistency)

最終一致性是指系統中的所有資料副本經過一定時間後,最終能夠達到一致的狀態。弱一致性和強一致性相反,最終一致性是弱一致性的一種特殊情況。

 

ACID和BASE的區別與聯絡

ACID是傳統資料庫常用的設計理念,追求強一致性模型。BASE支援的是大型分散式系統,提出通過犧牲強一致性獲得高可用性。

ACID和BASE代表了兩種截然相反的設計哲學。

在分散式系統設計的場景中,系統元件對一致性要求是不同的,因此ACID和BASE又會結合使用。