分佈式-CAP與BASE

分佈式基本理論CAP與BASE

1 CAP理論

CAP理論是分佈式系統中最核心的基礎理論,一個分佈式系統最多隻能同時滿足一致性(Consistency)、可用性(Availablity)、分區容錯性(Partition Tolerance)三項中的兩項。

1.1 CAP的含義

在分佈式系統中,由於系統的拆分,P是固定的,CAP的應用模型只能是CP和AP。

1.1.1 Consistency(一致性)

all nodes see the same data at the same time. 所有節點在同一時刻訪問的數據副本都是一樣的。

要麼讀取到最新數據,要麼讀取失敗,強調的是數據正確

1.1.2 Availability(可用性)

Reads and writes always succeed.系統提供的服務必須是一直處於可用狀態,而且對於用戶的每一個請求都能在有限的時間內獲得正常的響應(數據有可能並不是最新的)。

一定返回數據,不返回錯誤,但不保證是最新數據,強調的是不出錯

1.1.3 Partition Tolerance(分區容錯性)

the system continues to operate despite arbitrary message loss or failure of part of the system. 當部分節點出現消息丟失或網絡分區故障時,仍能夠對外提供滿足一致性和可用性的服務。

系統一直運行,不管內部出現何種數據同步問題,強調的是不掛掉

1.2 CAP理論的應用

通常在分佈式系統中,爲了保證數據的高可用,通常會設置多個副本,只能在一致性和可用性之間做選擇。業務上對一致性的要求會直接反映在系統設計中,典型的就是CP和AP架構。

  • CP架構:放棄可用性,追求一致性和分區容錯性。

    Zookeeper就是採用CP架構,Zookeeper是一個分佈式服務框架,主要解決分佈式集羣中應用系統的協調和一致性問題。核心算法是ZAB算法,所有設計都是爲了一致性。在面對網絡分區時,爲了保持一致性,它將是不可用的。

  • AP架構:放棄一致性,追求可用性和分區容錯性。

    Eureka中各個節點都是平等的,幾個節點掛掉並不影響正常節點的工作,剩餘的節點依舊可以提供註冊和查詢服務,只要有一個節點存在,就能保證可用性,只不過數據可能不是最新的。

2 BASE理論

BASE理論由ePay架構師提出,是對CAP理論的延伸,核心思想是無法做到強一致性(Strong Consistency),但應用可以採用合適的方式達到最終一致性(Eventual Consistency)

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

2.1 BASE的含義

2.1.1 基本可用(Basically Available)

不再追求CAP中的”任何時候,讀寫都是成功的“,而是系統能夠基本運行,一直提供服務。基本可用強調了分佈式系統出現不可預知故障時,允許損失部分可用性,比如響應時間變長或者服務被降級。

2.1.2 軟狀態(Soft State)

軟狀態對應ACID事務中的原子性,在ACID的事務中,實現的是強一致性。軟狀態允許系統中的數據存在中間狀態,並認爲該狀態不影響系統的整體可用性,即允許系統在多個不同節點的數據副本存在數據延時。

2.1.5 最終一致性(Eventual Consistency)

最終一致性是弱一致性的特例,強調所有副本數據,在經過一段時間同步後,最終都能達到一致的狀態。最終一致的本質是需要系統保證數據最終能夠達到一致,而不需要實時保證系統數據的強一致。

3 CAP與BASE關係

CAP描述了一致性、可用性、分區容錯性之間的制約關係。BASE理論是CAP理論的實際應用,即在分區和副本存在的前提下,放棄強一致性,實現基本可用。大部分分佈式系統都會做這種選擇,如NoSQL系統、微服務架構等。

除了CAP和BASE,還有ACID,它是一種強一致性模型,強調原子性、一致性、隔離性、持久性,主要用於數據庫實現。Base理論面向的是高可用、高擴展的分佈式系統,ACID適合傳統金融等業務,在實際場景中,不同業務對數據一致性要求不一樣,ACID和BASE往往會結合使用。


參考資料
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章