1. 程式人生 > >微服務架構的分散式事務解決方案

微服務架構的分散式事務解決方案

分散式系統架構中,分散式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分散式事問題日益突出!

下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分散式事務問題的場景進行詳細的分析!

images/yCGMB8jPtrsxKWf5PCQBpGCeKZKhzPBb.jpg

如上圖所示,假設三大參與平臺(電商平臺、支付平臺、銀行)的系統都做了分散式系統架構拆分,按上數中的流程步驟進行分析:

1、電商平臺中建立訂單:預留庫存、預扣減積分、鎖定優惠券,此時電商平臺內各服務間會有分散式事務問題,因為此時已經要跨多個內部服務修改資料;

2、支付平臺中建立支付訂單(選銀行卡支付):查詢賬戶、查詢限制規則,符合條件的就建立支付訂單並跳轉銀行,此時不會有分散式事務問題,因為還不會跨服務改資料;

3、銀行平臺中建立交易訂單:查詢賬戶、建立交易記錄、判斷賬戶餘額並扣款、增加積分、通知支付平臺,此時也會有分散式事務問題(如果是服務化架構的話);

4、支付平臺收到銀行扣款結果:更改訂單狀態、給賬戶加款、給積分帳戶增加積分、生成會計分錄、通知電商平臺等,此時也會有分散式事務問題;

5、電商平臺收到支付平臺的支付結果:更改訂單狀態、扣減庫存、扣減積分、使用優惠券、增加消費積分等,系統內部各服務間呼叫也會遇到分散式事問題;

images/K4QcRFdKnbkT44AFFtzQYCAAX25FifDS.jpg

如上圖,支付平臺收到銀行扣款結果後的內部處理流程:

1、支付平臺的支付閘道器對銀行通知結果進行校驗,然後呼叫支付訂單服務執行支付訂單處理;

2、支付訂單服務根據銀行扣款結果更改支付訂單狀態;

3、呼叫資金賬戶服務給電商平臺的商戶賬戶加款(實際過程中可能還會有各種的成本計費;如果是餘額支付,還可能是同時從使用者賬戶扣款,給商戶賬戶加款);

4、呼叫積分服務給使用者積分賬戶增加積分;

5、呼叫會計服務向會計(財務)系統寫進交易原始憑證生成會計分錄;

6、呼叫通知服務將支付處理結果通知電商平臺;

images/b387t8iM6nsBkNfbztBABaCRChTWc3Bd.jpg

如上圖,把支付系統中的銀行扣款成功回撥處理流程提取出來,對應的分散式事務問題的程式碼場景:

/** 支付訂單處理 **/

@Transactional(rollbackFor = Exception.class)

public void completeOrder() {

orderDao

.update();  // 訂單服務本地更新訂單狀態

accountService.update();  // 呼叫資金賬戶服務給資金帳戶加款

pointService.update();  // 呼叫積分服務給積分帳戶增加積分

accountingService.insert();  // 呼叫會計服務向會計系統寫入會計原始憑證

merchantNotifyService.notify();  // 呼叫商戶通知服務向商戶傳送支付結果通知

}

本地事務控制還可行嗎?

以上分散式事務問題,需要多種分散式事務解決方案來進行處理。

訂單處理:本地事務

資金賬戶加款、積分賬戶增加積分:TCC型事務(或兩階段提交型事務),實時性要求比較高,資料必須可靠。


會計記賬:非同步確保型事務(基於可靠訊息的最終一致性,可以非同步,但資料絕對不能丟,而且一定要記賬成功)

商戶通知:最大努力通知型事務(按規律進行通知,不保證資料一定能通知成功,但會提供可查詢操作介面進行核對)

相關推薦

服務架構分散式事務解決方案設計思路

第一節:瞭解常用的分散式解決方案 一、分散式事務方案:最終一致性、事務補償、TCC、兩階段提交、最大能力通知等。具體結合業務場景。

聊聊服務架構分散式事務解決方案

分散式事務場景如何設計系統架構及解決資料一致性問題,個人理解最終方案把握以下原則就可以了,那就是:大事務=小事務(原子事務)+非同步(訊息通知),解決分散式事務的最好辦法其實就是不考慮分散式事務,將一個大的業務進行拆分,整個大的業務流程,轉化成若干個小的業務流程,然後通過設計補償流程從而考慮最終一致性。什麼是

更多免費初級中級高階大資料java視訊教程下載 加(***信((號keepper,請備註java或掃下面2二3維4碼第31: 2017年7月最新服務架構分散式事務解決方案價值1399

更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼第31: 2017年7月最新微服務架構的分散式事務解決方案價值1399java視訊教程01 課程介紹.wmvjava視訊教程02 解決方案的效果演示(結合支付系統真實應用場景).mp4java

2019最新服務架構分散式事務解決方案課程 共31課

教程內容:微服務倡導將複雜的單體應用拆分為若干個功能簡單、鬆耦合的服務,這樣可以降低開發難度、增強擴充套件性、便於敏捷開發。當前被越來越多的開發者推崇,很多網際網路行業巨頭、開源社群等都開始了微服務的討論和實踐。Hailo有160個不同服務構成,NetFlix有大約600個服務。國內方面,阿里巴巴、

java服務架構分散式事務解決方案

分散式系統架構中,分散式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分散式事問題日益突出! 下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分散式事務問題的場景進行詳細的分析!   如上圖所示,假設三大參與平臺(電商平臺、支付平臺、銀行)的系統都

阿里服務架構分散式事務解決方案-GTS

雖然微服務現在如火如荼,但對其實踐其實仍處於初級階段。即使網際網路巨頭的實踐也大多是試驗層面,鮮有核心業務系統微服務化的案例。GTS是目前業界第一款,也是唯一的一款通用的解決微服務分散式事務問題的中介軟體,而且可以保證資料的強一致性。本文將對GTS做出深入解讀。 微服務倡導將複雜的單體應用拆分為若干個功能簡

服務架構分散式事務解決方案

分散式系統架構中,分散式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分散式事問題日益突出! 下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分散式事務問題的場景進行詳細的分析! 如上圖所示,假設三大參與平臺(電商平臺、支付平臺、銀行)的系統都做了

服務架構分散式事務解決方案 —— 阿里GTS

原文地址:https://yq.aliyun.com/articles/5420201 微服務的發展微服務倡導將複雜的單體應用拆分為若干個功能簡單、鬆耦合的服務,這樣可以降低開發難度、增強擴充套件性、便於敏捷開發。當前被越來越多的開發者推崇,很多網際網路行業巨頭、開源社群等都

服務架構分散式事務解決方案(Dubbo分散式事務處理)視訊非加密

本人在網上找了好多資料,很多分享的網盤資源中視屏有些加密了無法觀看,經過努力終於找到了一個可以觀看的全部教程。 網盤中包含所有視屏講解,有需要的朋友可儲存在自己網盤,視屏無密碼可線上觀看。 分散式事務是一個繞不過去的挑戰!微服務架構本質上就是分散式服務化架構,微服務架

服務架構分散式事務解決方案》視訊教程--課程列表

分散式系統架構中,分散式事務是一個繞不過去的挑戰!微服務架構本質上就是分散式服務化架構,微服務架構的流行,讓分散式事務問題日益突出!尤其是在訂單業務、資金業務等系統核心業務流程中,一定要有可靠的分散式事務解決方案來保證業務資料的可靠性和準確性。 為了解決大家在實施分散式服

分散式事務解決方案之訊息最終一致性(可靠訊息服務)下篇

背景:1.支付成功 通知訂單完成2.訂單完成,通知會計記賬上游訂單服務,必須開放可查詢訂單狀態介面,判斷訊息是否可以傳送下游會計消費成功後,必須回撥訊息服務,ACK操作(約束:冪等性。 例如:訊息id等)流程:訂單服務: 預儲存訊息 -> 訂單完成 ->

架構師必備的那些分散式事務解決方案!!

為了保證分散式環境下資料強一致性,需要引入分散式事務,而分散式事務由於網路環境的不確定性,天生就很難實現。具體可以見上一篇。 [分散式下,我想要強一致性](https://mp.weixin.qq.com/s/Fa9ybdcnvmaurdKSqumdrQ) 為了保證分散式事務的正確性,目前網際網路領域有幾

億級流量架構分散式事務解決方案對比

上一篇文章( [億級流量架構之分散式事務思路及方法](https://www.cnblogs.com/Courage129/p/14433462.html))中梳理事務到分散式事務的演變過程, 以及分散式事務的處理思路,這篇文章主要從應用的角度對比目前較為流行的一些分散式事務方案,以及一些商業應用。 想讓資

[轉載]使用訊息佇列實現分散式事務-公認較為理想的分散式事務解決方案

前陣子從支付寶轉賬1萬塊錢到餘額寶,這是日常生活的一件普通小事,但作為網際網路研發人員的職業病,我就思考支付寶扣除1萬之後,如果系統掛掉怎麼辦,這時餘額寶賬戶並沒有增加1萬,資料就會出現不一致狀況了。 上述場景在各個型別的系統中都能找到相似影子,比如在電商系統中,當有使用者下單後,除了在訂單表插

服務常見問題及解決方案

1、分解模式:如何把應用分成若干個小服務? 1)按業務功能分解,將應用分解成能產生業務價值的最小單元。 2)對於跨多個業務的類(如訂單會被訂單管理、訂單交付多個服務用到)用領域驅動設計(DDD),使用子域和邊界上下文的概念來著手解決。 2、整合模式 1)API閘道器模式 2)聚合器模式 3、資料庫

分散式事務解決方案---------LCN

1.過多的原理我就不一一介紹了,我就用一個例項來展示LCN分散式事務解決方案的應用。 tx-lcn https://gitee.com/wangliang1991/tx-lcn springcloud-demo版本的demo https://github.com/codingapi/

Spring Cloud分散式事務解決方案

開源專案 我們利用訊息佇列實現了分散式事務的最終一致性解決方案,請大家圍觀。可以參考Github CoolMQ原始碼,專案支援網站: http://rabbitmq.org.cn,最新文章或實現會更新在上面 二 前言 阿里2017雲棲大會《破解世界性技術難題!GTS

分散式事務解決方案

背景 本地事務 一個單體應用中事務由一個數據庫管理,並且限制在單個程序中的事務. 不涉及多個數據來源. 優點:支援嚴格的ACID,可靠,高效,簡單. 不足:沒有分散式處理能力 隔離的最小單位有資源管理器(資料庫)決定,如果資料庫

分散式事務解決方案(二)【基於可靠訊息的最終一致性】

2. 最終一致性(基於可靠訊息) 2.1 訊息傳送的一致性 指產生訊息的業務動作與訊息傳送的一致。(也就是說,如果業務操作成功,那麼由這個業務操作所產生的訊息一定要成功投遞出去,否則就丟訊息) 2.1.1 如何保障訊息傳送一致性 處理方式1

服務閘道器解決方案和使用總結

一.什麼是閘道器 1.1 什麼是閘道器 API Gateway(APIGW / API 閘道器),顧名思義,是出現在系統邊界上的一個面向API的、序列集中式的強管控服務,這裡的邊界是企業IT系統的邊界,可以理解為企業級應用防火牆,主要起到隔離外部訪問與內部系統的作用。在微服務概念的流行之前,API閘道