色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

瀏覽:11日期:2023-04-18 09:59:49

1. 分布式事務(wù)初探

一般來說,目前市面上的數(shù)據(jù)庫都支持本地事務(wù),也就是在你的應(yīng)用程序中,在一個數(shù)據(jù)庫連接下的操作,可以很容易的實(shí)現(xiàn)事務(wù)的操作。

但是目前,基于SOA的思想,大部分項(xiàng)目都采用微服務(wù)架構(gòu)后,就會出現(xiàn)了跨服務(wù)間的事務(wù)需求,這就稱為分布式事務(wù)

本文假設(shè)你已經(jīng)了解了事務(wù)的運(yùn)行機(jī)制,如果你不了解事務(wù),那么我建議先去看下事務(wù)相關(guān)的文章,再來閱讀本文。

1.1 什么是分布式事務(wù)

對于傳統(tǒng)的單體應(yīng)用而言,實(shí)現(xiàn)本地事務(wù)可以依賴Spring的@Transactional注解標(biāo)識方法,實(shí)現(xiàn)事務(wù)非常簡單。

我們以最常見的電商系統(tǒng)為例,簡單拆分為用戶客戶端、訂單服務(wù)、庫存服務(wù)、商品服務(wù)等等,在用戶下單過程中,需要同時調(diào)用各個服務(wù),但是,每個服務(wù)都是獨(dú)立部署的,數(shù)據(jù)庫連接是不共享的,因此要保證這些操作全部執(zhí)行,或者全部不執(zhí)行,就需要分布式事務(wù)的支持。

1.2 分布式事務(wù)解決方案

全局事務(wù),基于DTP模型實(shí)現(xiàn),需要三種角色即Application 應(yīng)用系統(tǒng),Transaction Manager 事務(wù)管理器,Resource Manager資源管理器; 基于可靠消息服務(wù)的分布式事務(wù),通過消息隊(duì)列實(shí)現(xiàn)事務(wù)的一致性; TCC,即Try、Confirm、Cancel,屬于補(bǔ)償型分布式事務(wù),Try:嘗試待執(zhí)行的事務(wù),Confirm:執(zhí)行事務(wù),Cancel:取消執(zhí)行的事務(wù);

1.3 Seata介紹

Seata 是一款開源的分布式事務(wù)解決方案,致力于在微服務(wù)架構(gòu)下提供高性能和簡單易用的分布式事務(wù)服務(wù)。Seata 于2019.1正式對外開源,前身是阿里巴巴2014年誕生的 TXC(Taobao Transaction Constructor)。以下是Seata官網(wǎng)介紹的特色服務(wù):

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

Seata 將為用戶提供了 AT、TCC 和 XA 事務(wù)模式,為用戶打造一站式的分布式解決方案。更多關(guān)于Seata的介紹,可參考其官網(wǎng)。

2. Spring Boot,Dubbo和Seata實(shí)現(xiàn)分布式事務(wù)案例

2.1 環(huán)境準(zhǔn)備

運(yùn)行本測試,需要你提前準(zhǔn)備如下的軟件運(yùn)行環(huán)境:

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

本案例,主要模仿簡單的下單扣減庫存的過程,架構(gòu)圖如下:

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

2.2 Seata管理端

下載Seata的最新版本,并解壓后,進(jìn)入seata/bin目錄,啟動:

sh seata-server.sh 8091 file

觀察8091端口是否啟動。

2.3 數(shù)據(jù)存儲

本測試服務(wù),需要創(chuàng)建兩張表,分別是訂單表和庫存表:

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

2.4 構(gòu)建Spring Boot服務(wù)

示例代碼可參考Github倉庫,倉庫的目錄結(jié)構(gòu)如下:

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

springboot-base:存儲公共調(diào)用的基類接口,mapper接口,Model層的類等,可mvn install后,供另外三個module調(diào)用。 springboot-dubbo-storage:庫存服務(wù); springboot-dubbo-order:訂單服務(wù); springboot-dubbo-client:RPC消費(fèi)者,提供對外接口;

基于Spring Boot構(gòu)建Dubbo服務(wù)可參考之前的博文《Spring Boot(五)之集成Dubbo部署RPC服務(wù)》,構(gòu)建本項(xiàng)目的過程就不再贅述了。

加入Seata組件后,與普通Dubbo項(xiàng)目的不同之處在于

1,配置Seata數(shù)據(jù)源

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

2,Seata初始化

/** * 配置全局事務(wù)掃描器。有兩個參數(shù),一個是應(yīng)用名稱,一個是事務(wù)分組 * * @return */@Beanpublic GlobalTransactionScanner globalTransactionScanner() { return new GlobalTransactionScanner('springboot-dubbo-storage', 'my_test_tx_group');}

3,配置注冊中心,目前可用的配置中心有file、nacos 、apollo、zk、consul,file類型本身不具備注冊中心的動態(tài)發(fā)現(xiàn)和動態(tài)配置功能,官方的初衷是在不依賴第三方配置注冊中心的基礎(chǔ)上快速集成測試seata功能。配置內(nèi)容在file.conf和registry.conf。

4,注解標(biāo)記事務(wù)方法,在需要分布式事務(wù)的方法上,加上@GlobalTransactional注解即可。

2.5 測試

依次啟動Seata、springboot-dubbo-storage、springboot-dubbo-order、springboot-dubbo-client后,打開postman測試,配置測試參數(shù)為:

詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案

可以看到,在addOrder報(bào)錯后,會有全局事務(wù)的rollback過程。

3. 參考資料

Seata 如何使用Seata保證Dubbo微服務(wù)間的一致性 SpringBoot+Dubbo+Seata分布式事務(wù)實(shí)戰(zhàn) 分布式事務(wù)選型的取舍 常用的分布式事務(wù)解決方案

到此這篇關(guān)于詳解SpringBoot基于Dubbo和Seata的分布式事務(wù)解決方案的文章就介紹到這了,更多相關(guān)SpringBoot 分布式事務(wù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 一区二区三区四区在线播放 | 9lporm自拍视频在线 | 日日狠狠久久偷偷四色综合免费 | 久久精品中文字幕有码日本 | 日韩亚洲一区二区三区 | 久久久久99精品成人片三人毛片 | 亚洲成人免费观看 | 欧美美女视频网站 | 午夜黄色毛片 | 日本天堂网在线观看 | 美国一级毛片片免费 | 香蕉在线观看999 | 国产精品久久久久a影院 | 91在线永久 | 91精品网站 | 精品一区二区三区免费毛片爱 | 成人午夜爽爽爽免费视频 | 成人合集大片bd高清在线观看 | 德国女人一级毛片免费 | 成年人视频网站免费 | 亚洲精品一区二区三区四区手机版 | 久久视频这里只精品3国产 久久视频这里只有精品 | 精品在线一区二区三区 | 视频久久精品 | 欧美日韩国产一区二区三区在线观看 | 欧美一级网址 | 亚洲欧美日韩在线一区 | 朝鲜一级毛片 | 91视频免费播放 | 亚洲m男在线中文字幕 | 亚洲欧美国产18 | 手机在线色 | 亚洲乱人伦精品图片 | 精品国产免费一区二区三区 | 农村寡妇特一级毛片 | jizz国产精品免费麻豆 | 欧美在线黄色 | 欧美日韩一区二区三区在线 | 欧美日韩免费一区二区在线观看 | 成人a视频片在线观看免费 成人a视频在线观看 | 一级毛片区 |