分布式事務的CAP理論 與BASE理論


CAP理論

  一個經典的分布式系統理論。CAP理論告訴我們:一個分布式系統不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)和分區容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中兩項

1、一致性

  在分布式環境下,一致性是指數據在多個副本之間能否保持一致的特性。在一致性的需求下,當一個系統在數據一致的狀態下執行更新操作后,應該保證系統的數據仍然處於一直的狀態。

  對於一個將數據副本分布在不同分布式節點上的系統來說,如果對第一個節點的數據進 行了更新操作並且更新成功后,卻沒有使得第二個節點上的數據得到相應的更新,於是在對第二個節點的數據進行讀取操作時,獲取的依然是老數據(或稱為臟數 據),這就是典型的分布式數據不一致的情況。在分布式系統中,如果能夠做到針對一個數據項的更新操作執行成功后,所有的用戶都可以讀取到其最新的值,那么 這樣的系統就被認為具有強一致性

2、可用性

  可用性是指系統提供的服務必須一直處於可用的狀態,對於用戶的每一個操作請求總是能夠在有限的時間內返回結果。這里的重點是"有限時間內"和"返回結果"。

  "有限時間內"是指,對於用戶的一個操作請求,系統必須能夠在指定的時間內返回對 應的處理結果,如果超過了這個時間范圍,那么系統就被認為是不可用的。另外,"有限的時間內"是指系統設計之初就設計好的運行指標,通常不同系統之間有很 大的不同,無論如何,對於用戶請求,系統必須存在一個合理的響應時間,否則用戶便會對系統感到失望。

  "返回結果"是可用性的另一個非常重要的指標,它要求系統在完成對用戶請求的處理后,返回一個正常的響應結果。正常的響應結果通常能夠明確地反映出隊請求的處理結果,即成功或失敗,而不是一個讓用戶感到困惑的返回結果。

3、分區容錯性

  分區容錯性約束了一個分布式系統具有如下特性:分布式系統在遇到任何網絡分區故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障

  網絡分區是指在分布式系統中,不同的節點分布在不同的子網絡(機房或異地網絡) 中,由於一些特殊的原因導致這些子網絡出現網絡不連通的狀況,但各個子網絡的內部網絡是正常的,從而導致整個系統的網絡環境被切分成了若干個孤立的區域。 需要注意的是,組成一個分布式系統的每個節點的加入與退出都可以看作是一個特殊的網絡分區。

  既然一個分布式系統無法同時滿足一致性、可用性、分區容錯性三個特點,所以我們就需要拋棄一樣:

用一張表格說明一下:

選    擇 說    明
CA 放棄分區容錯性,加強一致性和可用性,其實就是傳統的單機數據庫的選擇
AP 放棄一致性(這里說的一致性是強一致性),追求分區容錯性和可用性,這是很多分布式系統設計時的選擇,例如很多NoSQL系統就是如此
CP 放棄可用性,追求一致性和分區容錯性,基本不會選擇,網絡問題會直接讓整個系統不可用

  需要明確的一點是,對於一個分布式系統而言,分區容錯性是一個最基本的要求。因為 既然是一個分布式系統,那么分布式系統中的組件必然需要被部署到不同的節點,否則也就無所謂分布式系統了,因此必然出現子網絡。而對於分布式系統而言,網 絡問題又是一個必定會出現的異常情況,因此分區容錯性也就成為了一個分布式系統必然需要面對和解決的問題。因此系統架構師往往需要把精力花在如何根據業務 特點在C(一致性)和A(可用性)之間尋求平衡。

 

BASE理論

  BASE是Basically Available(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的縮寫。BASE理論是對CAP中一致性和可用性權衡的結果,其來源於對大規模互聯網系統分布式實踐的總結, 是基於CAP定理逐步演化而來的。BASE理論的核心思想是:即使無法做到強一致性,但每個應用都可以根據自身業務特點,采用適當的方式來使系統達到最終一致性。接下來看一下BASE中的三要素:

1、基本可用

  基本可用是指分布式系統在出現不可預知故障的時候,允許損失部分可用性----注意,這絕不等價於系統不可用。比如:

    (1)響應時間上的損失。正常情況下,一個在線搜索引擎需要在0.5秒之內返回給用戶相應的查詢結果,但由於出現故障,查詢結果的響應時間增加了1~2秒

    (2)系統功能上的損失:正常情況下,在一個電子商務網站上進行購物的時候,消費者幾乎能夠順利完成每一筆訂單,但是在一些節日大促購物高峰的時候,由於消費者的購物行為激增,為了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面

2、軟狀態

  軟狀態指允許系統中的數據存在中間狀態,並認為該中間狀態的存在不會影響系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步的過程存在延時

3、最終一致性

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

  總的來說,BASE理論面向的是大型高可用可擴展的分布式系統,和傳統的事物ACID特性是相反的,它完全不同於ACID的強一致性模型,而是通過犧牲強一致性來獲得可用性,並允許數據在一段時間內是不一致的,但最終達到一致狀態。但同時,在實際的分布式場景中,不同業務單元和組件對數據一致性的要求是不同的,因此在具體的分布式系統架構設計過程中,ACID特性和BASE理論往往又會結合在一起。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM