開(kāi)源分布式事務(wù)中間件Seata使用指南-創(chuàng)新互聯(lián)

介紹

10年的天河網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整天河建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“天河網(wǎng)站設(shè)計(jì)”,“天河網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Seata 是阿里巴巴開(kāi)源的分布式事務(wù)中間件,一種分布式事務(wù)解決方案,具有高性能和易于使用的微服務(wù)架構(gòu)。

初衷

  • 對(duì)業(yè)務(wù)無(wú)侵入:即減少技術(shù)架構(gòu)上的微服務(wù)化所帶來(lái)的分布式事務(wù)問(wèn)題對(duì)業(yè)務(wù)的侵入

  • 高性能:減少分布式事務(wù)解決方案所帶來(lái)的性能消耗

分布式事務(wù)定義

分布式事務(wù)是一個(gè)全局事務(wù),由一批分支事務(wù)組成,通常分支事務(wù)只是本地事務(wù)。

開(kāi)源分布式事務(wù)中間件Seata使用指南

設(shè)計(jì)

Seata中有兩種分布式事務(wù)實(shí)現(xiàn)方案,AT和TCC。

AT

AT模式是基于XA事務(wù)演進(jìn)而來(lái),核心是對(duì)業(yè)務(wù)無(wú)侵入,是一種改進(jìn)后的兩階段提交,需要數(shù)據(jù)庫(kù)支持。

開(kāi)源分布式事務(wù)中間件Seata使用指南

基本組件:

  • 事務(wù)協(xié)調(diào)器(TC):事務(wù)協(xié)調(diào)器,維護(hù)全局事務(wù)的運(yùn)行狀態(tài),負(fù)責(zé)協(xié)調(diào)并驅(qū)動(dòng)全局事務(wù)的提交或回滾。

  • Transaction Manager(TM):?控制全局事務(wù)的邊界,負(fù)責(zé)開(kāi)啟一個(gè)全局事務(wù),并最終發(fā)起全局提交或全局回滾的決議。

  • 資源管理器(RM):控制分支事務(wù),負(fù)責(zé)分支注冊(cè)、狀態(tài)匯報(bào),并接收事務(wù)協(xié)調(diào)器的指令,驅(qū)動(dòng)分支(本地)事務(wù)的提交和回滾。

處理流程:

  1. TM要求TC開(kāi)始新的全局事務(wù)。TC生成表示全局事務(wù)的XID。

  2. XID通過(guò)微服務(wù)的調(diào)用鏈傳播。

  3. RM將本地事務(wù)注冊(cè)為XID到TC的相應(yīng)全局事務(wù)的分支。

  4. TM要求TC提交或回滾XID的相應(yīng)全局事務(wù)。

  5. TC在XID的相應(yīng)全局事務(wù)下驅(qū)動(dòng)所有分支事務(wù)以完成分支提交或回滾。

開(kāi)源分布式事務(wù)中間件Seata使用指南

TCC

Seata要求每個(gè)接口實(shí)現(xiàn)prepare、commit、rollback。

與 AT 模式一樣,在運(yùn)行時(shí),該切面會(huì)攔截所有對(duì) TCC 接口的調(diào)用。每調(diào)用一次 Try 接口,切面會(huì)先向 TC 注冊(cè)一個(gè)分支事務(wù),然后才去執(zhí)行原來(lái)的 RPC 調(diào)用。當(dāng)請(qǐng)求鏈路調(diào)用完成后,TC 通過(guò)分支事務(wù)的資源 ID 回調(diào)到正確的參與者去執(zhí)行對(duì)應(yīng) TCC 資源的 Confirm 或 Cancel 方法。

  1. 初步操作 Try:完成所有業(yè)務(wù)檢查,預(yù)留必須的業(yè)務(wù)資源。

  2. 確認(rèn)操作 Confirm:真正執(zhí)行的業(yè)務(wù)邏輯,不做任何業(yè)務(wù)檢查,只使用 Try 階段預(yù)留的業(yè)務(wù)資源。因此,只要 Try 操作成功,Confirm 必須能成功。另外,Confirm 操作需滿足冪等性,保證一筆分布式事務(wù)能且只能成功一次。

  3. 取消操作 Cancel:釋放 Try 階段預(yù)留的業(yè)務(wù)資源。同樣的,Cancel 操作也需要滿足冪等性。

Seata Server安裝

1.下載最新版本的 Seata Sever

https://github.com/seata/seata/releases

2. 解壓并啟動(dòng) Seata server

unzip?seata-server-xxx.zip
cd?distribution
sh?./bin/seata-server.sh?8091?file

示例

場(chǎng)景:

把數(shù)據(jù)庫(kù)zeroa中proxy表的一條數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫(kù)zerob中proxy表里面。

模塊:

zero-discovery-server:注冊(cè)中心

zero-gateway-server:服務(wù)網(wǎng)關(guān)

zero-consumer:服務(wù)消費(fèi)者

zero-provider-a:服務(wù)提供者A

zero-provider-b:服務(wù)提供者B

架構(gòu)及版本:

Spring-cloud:Finchley.BUILD-SNAPSHOT

spring-cloud-starter-netflix-eureka-server:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-netflix-eureka-client:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-gateway:2.0.4.BUILD-SNAPSHOT

spring-cloud-starter-openfeign:2.0.0.RELEASE

spring-boot:2.0.0.RELEASE

spring-boot-starter-data-jpa:2.0.0.RELEASE

spring-cloud-alibaba-seata:0.9.1.BUILD-SNAPSHOT

seata-all:0.6.1

mysql-connector-java:8.0.11

druid-spring-boot-starter:1.1.18

mysql:5.7

seata-server-0.6.1

實(shí)現(xiàn):

zero-gateway-server

  • 配置application.yml

開(kāi)源分布式事務(wù)中間件Seata使用指南

zero-provider-a:

  • 配置application.yml

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • File.conf

主要配置應(yīng)用名稱和seata server地址

vgroup_mapping.${spring.application.name}-fescar-service-group="default"

default.grouplist = "127.0.0.1:8091"

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • Registry.conf

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • 編寫Entity

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • 編寫Repository

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • 編寫Service

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • 編寫代碼Controller

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • DataSource

開(kāi)源分布式事務(wù)中間件Seata使用指南

zero-provider-b

配置同zero-provider-a工程,編寫相應(yīng)的業(yè)務(wù)邏輯。

在處理添加業(yè)務(wù)時(shí),拋出異常。

開(kāi)源分布式事務(wù)中間件Seata使用指南

zero-consumer

配置同zero-provider-a工程,編寫相應(yīng)的業(yè)務(wù)邏輯。

  • feignClient

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • feignclient

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • Service

開(kāi)源分布式事務(wù)中間件Seata使用指南

  • Controller

開(kāi)源分布式事務(wù)中間件Seata使用指南

測(cè)試

啟動(dòng)Seata Server

啟動(dòng)Mysql,并初始化(每個(gè)庫(kù)都要?jiǎng)?chuàng)建undo_log表)

DROP?SCHEMA?IF?EXISTS?zeroa;

CREATE?SCHEMA?zeroa;

USE?zeroa;

CREATE?TABLE?`undo_log`?(

??`id`?bigint(20)?NOT?NULL?AUTO_INCREMENT,

??`branch_id`?bigint(20)?NOT?NULL,

??`xid`?varchar(100)?NOT?NULL,

??`context`?varchar(128)?NOT?NULL,

??`rollback_info`?longblob?NOT?NULL,

??`log_status`?int(11)?NOT?NULL,

??`log_created`?datetime?NOT?NULL,

??`log_modified`?datetime?NOT?NULL,

??`ext`?varchar(100)?DEFAULT?NULL,

??PRIMARY?KEY?(`id`),

??UNIQUE?KEY?`ux_undo_log`?(`xid`,`branch_id`)

)?ENGINE=InnoDB?AUTO_INCREMENT=1?DEFAULT?CHARSET=utf8;

DROP?SCHEMA?IF?EXISTS?zerob;

CREATE?SCHEMA?zerob;

USE?zerob;

CREATE?TABLE?`undo_log`?(

??`id`?bigint(20)?NOT?NULL?AUTO_INCREMENT,

??`branch_id`?bigint(20)?NOT?NULL,

??`xid`?varchar(100)?NOT?NULL,

??`context`?varchar(128)?NOT?NULL,

??`rollback_info`?longblob?NOT?NULL,

??`log_status`?int(11)?NOT?NULL,

??`log_created`?datetime?NOT?NULL,

??`log_modified`?datetime?NOT?NULL,

??`ext`?varchar(100)?DEFAULT?NULL,

??PRIMARY?KEY?(`id`),

??UNIQUE?KEY?`ux_undo_log`?(`xid`,`branch_id`)

)?ENGINE=InnoDB?AUTO_INCREMENT=1?DEFAULT?CHARSET=utf8;

啟動(dòng)

zero-discovery-server

zero-gateway-server

zero-provider-a

zero-provider-b

zero-consumer

添加數(shù)據(jù)

開(kāi)源分布式事務(wù)中間件Seata使用指南

正常執(zhí)行事務(wù)

開(kāi)源分布式事務(wù)中間件Seata使用指南

可在兩張表中查看數(shù)據(jù)(a庫(kù)中刪除id=2的數(shù)據(jù),b庫(kù)中添加了一條數(shù)據(jù))。

執(zhí)行事務(wù)回滾

開(kāi)源分布式事務(wù)中間件Seata使用指南

查看數(shù)據(jù)庫(kù)數(shù)據(jù)(沒(méi)有變化)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

名稱欄目:開(kāi)源分布式事務(wù)中間件Seata使用指南-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://muchs.cn/article18/dsgigp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、微信小程序、App開(kāi)發(fā)、標(biāo)簽優(yōu)化、網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化