1.同步場景:
2)、 寫場景 購買商品:下單-》a ; 減庫存-》b ;支付-》c
2.解決方案:
1)、基於非同步補償的分布式事務
2)、架構設計的三大關鍵點
如以寫場景為例:針對每個步驟的請求都需要在事務補償服務的資料庫中存放事務id , state, ts , 每個微服務資料訪問層提供補償介面,如下圖:
3.業務邏輯層proxy設定(基於aop實現)
3.1.邏輯層呼叫上加上事務註解@around("execution(* *(..)) && @annotation(tx)")
3.2.proxy在真正業務邏輯被呼叫之前,生成乙個全域性唯一txid標示事務組,txid儲存在threadlocal變數裡,方法開始前寫入,完成後清除,並向遠端資料庫寫入txid並把事務組置為開始狀態
3.3.業務邏輯層呼叫資料庫訪問層之前,通過rpcproxy**記錄當前呼叫引數
3.4.如果業務正常,呼叫完成後,當前方法的呼叫記錄存檔或刪除
3.5.如果業務異常,查詢呼叫鏈反向補償
4.資料訪問層設計
4.1.原子介面
4.2.補償介面
誰來提供, 冪等性保證
4.3.基於原則介面方法,在方法名加註解標註補償方法名
@compensable (cancelmethod="cancelrecord")
5.分布式事務補償服務
5.1.事務組表(資料庫表tdb)
記錄事務組狀態
txid\state\timestamp
5.2.事務呼叫組表(資料庫表tdb)
記錄事務組內的每一次呼叫 以及相關引數
txid,actionid,callmethod,pramatype,params
5.3.補償策略
呼叫執行失敗,修改事務組狀態,
分布式事務補償服務非同步執行補償
分布式協調與同步之分布式事務
包含一系列操作的,乙個有邊界的工作序列,有明確的開始和結束標誌,且要麼被完全執行,要麼完全失敗 分布式系統中執行的事務,有多個本地事務組合而成 原子性,一致性,隔離性和永續性 剛性事務 遵循acid原則,具有強一致性 柔性事務 根據不同的業務場景使用不同的方法實現最終一致性,可以容忍一定時間內的資料...
核心金融場景分布式事務
分布式事務是分布式系統架構設計中的乙個技術難點,特別是在這幾年越來越火的微服務架構中,服務拆分所帶來的跨服務資料一致性問題亟待解決,本文將圍繞分布式事務產生背景和螞蟻金服的分布式事務解決方案 sofa dtx 向大家進行介紹。1.1 資料庫的水平拆分 通常業務系統的資料庫起初是單庫,但隨著業務資料規...
tcc分布式事務 分布式事務之TCC事務模型
我們先套乙個業務場景進去,如下圖所示 那頁面點了支付按鈕,呼叫支付服務,那我們後台要實現下面三個步驟 1 訂單服務 修改訂單狀態 2 賬戶服務 扣減金錢 3 庫存服務 扣減庫存 達到事務的效果,要麼一起成功,要麼一起失敗!就要採取tcc分布式事務方案!tcc的全稱是 try confirm canc...