1. 程式人生 > >Base與CAP理論、最終一致性

Base與CAP理論、最終一致性

acid屬於剛性的

 

由於對系統或者資料進行了拆分,我們的系統不再是單機系統,而是分散式系統,針對分散式系統的CAP原理包含如下三個元素。
C:Consistency,一致性。在分散式系統中的所有資料 備份,在同一時刻具有同樣的值,所有節點在同一時刻讀取的資料都是最新的資料副本。

A:Availability,可用性,好的響應效能。完全的可用性指的是在任何故障模型下,服務都會在有限的時間內處理完成並進行響應。
P: Partition tolerance,分割槽容忍性。儘管網路上有部分訊息丟失,但系統仍然可繼續工作。

 

 

實際開發中大部分只遵循了p和a

CAP原理指的是,這三個要素最多隻能同時實現兩點,不可能三者兼顧。因此在進行分散式架構設計時,必須做出取捨。而對於分散式資料系統,分割槽容忍性是基本要求,否則就失去了價值。因此設計分散式資料系統,就是在一致性和可用性之間取一個平衡。對於大多數web應用,其實並不需要強一致性,因此犧牲一致性而換取高可用性,是目前多數分散式資料庫產品的方向。

當然,犧牲一致性,並不是完全不管資料的一致性,否則資料是混亂的,那麼系統可用性再高分散式再好也沒有了價值。犧牲一致性,只是不再要求關係型資料庫中的強一致性,而是隻要系統能達到最終一致性即可,考慮到客戶體驗,這個最終一致的時間視窗,要儘可能的對使用者透明,也就是需要保障“使用者感知到的一致性”。通常是通過資料的多份非同步複製來實現系統的高可用和資料的最終一致性的,“使用者感知到的一致性”的時間視窗則取決於資料複製到一致狀態的時間。

 

CAP原理證明,任何分散式系統只可同時滿足以上兩點,無法三者兼顧。由於關係型資料庫是單節點無複製的,因此不具有分割槽容忍性,但是具有一致性和可用性,而分散式的服務化系統都需要滿足分割槽容忍性,那麼我們必須在一致性和可用性之間進行權衡。如果在網路上有訊息丟失,也就是出現了網路分割槽,則複製操作可能會被延後,如果這時我們的使用方等待複製完成再返回,則可能導致在有限時間內無法返回,就失去了可用性:而如果使用方不等待複製完成,而在主分片寫完後直接返回,則具有了可用性,但是失去了一致性。

 

Base(鹼)

BASE 是 Basically Available(基本可用)、Soft state(軟狀態)和 Eventually consistent(最終一致性)三個短語的簡寫,由 eBay 架構師 Dan Pritchett 於 2008 年在《BASE: An Acid Alternative》論文中首次提出。BASE 思想與 ACID 原理截然不同,它滿足 CAP 原理,通過犧牲強一致性獲得可用性, 一般應用於服務化系統的應用層或者大資料處理系統中,通過達到最終一致性來儘量滿足業務的絕大多數需求。
BASE 模型包含如下三個元素:

  • BA:(Basically Available ),基本可用。
  • S:( Soft State),軟狀態,狀態可以在一段時間內不同步。
  • E:(Eventually Consistent ),最終一致,在一定的時間視窗內, 最終資料達成一致即可。

關於最終一致的幾種變種參見上面,在實際系統實踐中,可以將若干變種結合起來,來實現各種業務需求。

 

BASE理論是基於CAP定理演化而來,是對CAP中一致性和可用性權衡的結果。核心思想:即使無法做到強一致性,但每個業務根據自身的特點,採用適當的方式來使系統達到最終一致性。
1、基本可用:指分散式系統在出現故障的時候,允許損失部分可用性,保證核心可用。但不等價於不可用。比如:搜尋引擎0.5秒返回查詢結果,但由於故障,2秒響應查詢結果;網頁訪問過大時,部分使用者提供降級服務,等。
2、軟狀態:軟狀態是指允許系統存在中間狀態,並且該中間狀態不會影響系統整體可用性。即允許系統在不同節點間副本同步的時候存在延時。
3、最終一致性:
系統中的所有資料副本經過一定時間後,最終能夠達到一致的狀態,不需要實時保證系統資料的強一致性。最終一致性是弱一致性的一種特殊情況。BASE理論面向的是大型高可用可擴充套件的分散式系統,通過犧牲強一致性來獲得可用性。ACID是傳統資料庫常用的概念設計,追求強一致性模型。

 

當通知接口出現延遲或者異常情況下,支付寶會發生自動重試。

重試過程。toov5注意冪等性

 

 同步回撥地址:支付完成後,支付寶採用瀏覽器方式重定向回撥方

 非同步回撥地址:支付完成後,採用後臺也就是HttpClient進行呼叫toov5介面通知支付介面