1. 程式人生 > >springcloud分散式事務處理方案

springcloud分散式事務處理方案

1.場景還原

     筆者在公司最近的一個專案採用springcloud框架搭建微服務架構,這勢必會引發分散式事務處理的思考,目前處理分散式主流方案tcc及訊息的最終一致性;今天筆者整合github上較為流行的tx-lcn分散式處理框架,它是基於redis的一種補償型處理方案

2.實現方案

①先截圖,下載該框架

從github上的starts數量來看,目前還是較多開發者採用了這種方案的,而且作者維護迭代也很及時

②將tx-manager微服務單獨拎出來,整合在自己的專案中

將tx-manager中application.properties中的配置改成自己的專案配置

③然後涉及分散式的微服務中新增如下依賴

<!--分散式事物-->
<dependency>
   <groupId>com.codingapi</groupId>
   <artifactId>transaction-springcloud</artifactId>
   <version>${lcn.last.version}</version>
   <exclusions>
      <exclusion>
         <groupId>org.slf4j</groupId>
         <artifactId>*</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<dependency>
   <groupId>com.codingapi</groupId>
   <artifactId>tx-plugins-db</artifactId>
   <version>${lcn.last.version}</version>
   <exclusions>
      <exclusion>
         <groupId>org.slf4j</groupId>
         <artifactId>*</artifactId>
      </exclusion>
   </exclusions>
</dependency>

將其中的兩個實現類複製到自己工程的service中

⑤開啟tx-manager,在各個微服務application.yml配置tx-manager地址

# 分散式事物
tm:
  manager:
    url: http://localhost:8899/tx/manager/

3.應用步驟

①分散式事務起始服務方

@Transactional
@TxTransaction(isStart = true)
public int addAcount(String logId){
   int i = yiViUserAccountMapper.increaseAccount("100","71d8beff-9e70-11e7-9a60-00163e0a3457");

   int n =  paymentDispatchFeignClient.test(logId); //呼叫失敗

   if(n == 0){
       throw new RuntimeException("服務呼叫失敗");
   }
    return i + n;
}

②被呼叫服務方

@Override
@Transactional
@TxTransaction
public int test(String logId) throws YiViException {
    int i = yiViDispatchOrderStatusLogMapper.deleteByPrimaryKey(logId);
    return i;
}

如此便可,好了我是張星,歡迎加入博主技術交流群,群號:526601468

相關推薦

springcloud分散式事務處理方案

1.場景還原      筆者在公司最近的一個專案採用springcloud框架搭建微服務架構,這勢必會引發分散式事務處理的思考,目前處理分散式主流方案tcc及訊息的最終一致性;今天筆者整合github上較為流行的tx-lcn分散式處理框架,它是基於redis的一種補償型處理

SpringCloud 分散式事務解決方案

目錄 TX-LCN分散式事務框架 TX-LCN分散式事務框架 隨著互聯化的蔓延,各種專案都逐漸向分散式服務做轉換。如今微服務已經普遍存在,本地事務已經無法滿足分散式的要求,由此分散式事務問題誕生。 分散式事務被稱為世界性的難題

分散式補償事務處理方案 / 分散式計算是如何控制事務的?

事務原子性,一致性,永續性,隔離性是基本的屬性,這裡不解釋,本篇文章只對分佈性事務方案做說明方案 問題來源 隨著分散式微服務應用盛行,帶來的優勢是顯而易見的,但是在面臨事務的時候,卻變的異常麻煩,因為是在不同的應用內,所以無法在單個應用內做回滾處理,這個時候,就需要有一個單獨的

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

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

springCloud分散式事務實戰(七)改造合服務BlockMicroService支援分散式事務

在BlockMicroService 工程 中加入(1)加入jar <!-- springCloud 事務 關鍵點1 --> <dependency> <groupId>com.codingapi</groupId>

springCloud分散式事務實戰(六)編寫第二個微服務

(1)建立工程 (2)新增 jar pom.xml新增:springboot 父, mysql連線,(mybatis, spring-mybatis springboot ,阿里連線池) ,服務中心客戶端。 <project xmlns="http://maven.apache.org/POM/4.

SpringCloud分散式事務實戰(七)在微服務1中建立整合函式,呼叫微服務2

(1) 新增jar pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-s

springCloud分散式事務實戰(十)分散式事務綜合大測試(全,共10篇)

啟動註冊中心,啟動redis ,啟動事務管理器 啟動mysql 啟動微服務1 ,啟動微服務2(1)正常事務測試:不丟擲異常,兩邊都插入 1 設計沒有故障整合服務@TxTransaction(isStart=true) //關鍵 4 @Overridebr/>@Transactionalpublic

springCloud分散式事務實戰(九)改造ThemeMicroService 支援分散式事務

(1) 新增jar <!-- springCloud 事務 關鍵點1 --> <dependency> <groupId>com.codingapi</groupId> <artifa

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

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

.NET簡談事務分散式事務處理

今天這篇文章我們將使用.NET C#來進行事務性程式設計,從淺顯、簡單的本地事務開始,也就是我們用的最多的ADO.NET事務處理,然後我們逐漸擴大事務處理範圍,包括對分散式事務處理的使用,多執行緒事務處理的使用。  一、資料庫事務處理 資料庫事務處理我們基本都很熟悉了,begin Transac

分散式事務解決方案---------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

深入理解高併發下分散式事務方案

編輯推薦: 本文主要從分散式的原因,事務特性,和解決方案中深入理解了分散式事務,希望對您的學習有所幫助。 1、什麼是分散式事務 分散式事務就是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分散式系統的不同節點之上。以上是百度百科的解釋,

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

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

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

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

TCC和兩階段分散式事務處理的區別

一個TCC事務框架需要解決的當然是分散式事務的管理。關於TCC事務機制的介紹,可以參考TCC事務機制簡介。TCC事務模型雖然說起來簡單,然而要基於TCC實現一個通用的分散式事務框架,卻比它看上去要複雜的多,不只是簡單的呼叫一下Confirm/Cancel業務就可以了的。本文將以Spring容器為例,試圖分析一

分散式事務解決方案

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

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

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