1. 程式人生 > >分散式事務與解決方案

分散式事務與解決方案

分散式事務:分散式事務是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分散式系統的不同節點之上。
先來理解幾個概念:事物具有四大特性ACID,分散式系統無法同時滿足CAP中的三種特性,所以我們一般使用最終一致性BASE。
ACID

原子性(Atomicity):原子性指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。
一致性(Consistency):一致性指一個事務執行之前和執行之後資料庫都必須處於一致性狀態。
加入資料庫的狀態滿足所有完整性約束,就說資料庫是一致的。
例如完整性約束a+b=10,如果一個事務改變了a,那麼b也應隨之改變。
隔離性(Isolation)

:隔離性指當併發的事務是相互隔離的,即一個事務內部的操作及正在操作的資料必須封鎖起來,不能被其他企圖修改的事務看到。
永續性(Durability):永續性指對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障。

CAP

一致性(Concistency):這裡說的一致性是指強一致性。分散式系統中,資料都是以多副本的形式儲存在不同的節點中,要任何時刻資料副本之間的狀態保持一致性。即一個程序對一個節點中的資料進行了更新後,同時其他節點中的資料副本實時也進行了更新。另一個程序讀取其他節點的資料是最新版本。
可用性(Availability):是指在任何時刻系統提供的服務都是可用的。使用者或者客戶端傳送一個請求,服務總是在規定的時間內返回請求結果。在規定的時間內,沒有返回請求結果,則認為服務不可用。
分割槽容忍性(Partition Tolerance)

:分散式系統在遇到任何網路分割槽故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網路環境都發生了故障。注意:不是分割槽容錯性

BASE

基本可用(Basically Available):基本可用是指允許發生不可預知的故障,但是服務對外照常可用。只是損失部分可用性。
軟狀態(Soft state):資料副本在整個服務執行期間,允許在某一個時刻(比如,資料複製)允許存在中間狀態,但是最終資料的狀態保持一致。在處於弱狀態時,整個服務可用。
最終一致性(Eventually consistent):在經過一定的時間後,所有資料副本的狀態都已經保持一致。一致性的本質就是要保證資料最終一致性。

解決方案:兩階段提交、最終一致性、TCC、MQ事務訊息、Sagas工作流引擎
1、兩階段提交:事務協調器,準備階段,提交階段,犧牲了可用性;
這裡寫圖片描述
2、TCC:補償事務,TRY,Comfirm,Cancel,需要寫補償程式碼,不能保證強一致性;
3、最終一致性:本地訊息表,非同步處理,最終一致,訊息表容易耦合到業務邏輯中。
這裡寫圖片描述
4、MQ事務訊息:RocketMQ,傳送訊息,確認訊息,傳送方需要提供check介面
這裡寫圖片描述
5、Sagas事務模型:Sagas工作流引擎協調,失敗補償,需要寫補償程式碼。