分佈式事務柔性事務解決方案:可靠消息最終一致性(異步確保型) —— 1、大白話理論

分佈式事務簡介

理論很少說,談起事務,必然就繞不過ACID。然而傳統的分佈式事務在當下的分佈式、微服務結構中中並不太合適,數據在傳統的分佈式事務中會被鎖住,並且還要應對XA協議帶來的開銷(創建和關閉與資源管理器的鏈接、預提交、提交和回滾一個本地事務等等)。分佈式

與之相對的,是更符合當下業務需求的基於BASE理論的柔性事務。微服務

看看ACID和BASE的區別

Soft State:柔性狀態

【ACID(A,I)::原子性,隔離性】與【BASE(S)::柔性狀態】:好比說在支付系統中,有一個支付業務系統和積分系統,若是要知足原子性與隔離性,那麼邏輯確定是這樣的:事務

  • 要麼是支付成功,加積分,在這期間,積分數據與支付數據是不可訪問的。
  • 要麼是支付失敗,積分不變,在這期間,積分數據與支付數據是不可訪問的。

可是在BASE的柔性狀態中,容許出現資源

  • 支付成功,積分不變,而且在支付成功後,其餘服務查詢個人支付狀態時,也會是成功的。在這期間,積分數據與支付數據是可訪問的。
  • 加積分,支付失敗,在這期間,積分數據與支付數據是可訪問的。

這樣的狀況,柔性事務中,容許數據短暫的不一致,以及非隔離性的操做。秒殺

Eventual Consistency:最終一致性

【ACID(A,D)::原子性,持久性】與【BASE(E)最終一致性】:最終一致性指的是系統中的全部數據副本通過必定時間後,最終可以達到一致的狀態。支付

  • 事務中的原子性:要麼所有成功,要麼所有失敗(這與上面提到的不一樣,上面說的是容許中間狀態出現,這裏說的是最後的狀態要是一致的);
  • 事務中的持久性:數據必須持久化(其實有些業務不持久化也是沒問題的....);

Basically Available:基本可用。

基本可用有兩個層面,即,call

  • 服務可用,但服務降級了;
  • 分區出現故障,個人業務依舊不受影響;

好比說我有一個秒殺商品的業務,有些用戶會獲取到一個假的秒殺頁,而且秒殺一定失敗...之類的。數據

相關文章
相關標籤/搜索