Docker快速部署Seata的TC服務以及微服務引入Seata教程

? ? ? ?

目錄

一、使用docker部署Seata的TC服務

1、拉取TC服務鏡像

2、創建并運行容器?

?3、修改配置文件

4、在Nacos中添加TC服務的配置?

5、重啟TC服務

二、微服務集成Seata

1、引入依賴

2、修改配置文件?


? ? ? ? Seata是阿里的一個開源的分布式事務解決方案,能夠為分布式應用提供高性能和高可靠性的事務支持。使用Docker快速部署Seata的TC服務,可以簡化部署過程并提高效率。本文將介紹如何使用Docker快速部署Seata的TC服務以及如何在微服務中引入Seata。

一、使用docker部署Seata的TC服務

1、拉取TC服務鏡像

docker pull seataio/seata-server:1.4.2

??

2、創建并運行容器?

docker run --name seata --restart=always -p 8091:8091 -e SEATA_IP=192.168.200.130 -e SEATA_PORT=8091 -v seata-config:/seata-server/resources -id seataio/seata-server:1.4.2

?3、修改配置文件

? ?1)進入掛載的目錄

cd /var/lib/docker/volumes/seata-config/_data

?2)修改配置文件內容

? ? ? 在這里我們是配置TC服務的配置和注冊中心類型。這里我們選擇nacos。所以,我們修改配置文件的registry.conf的內容如下:

registry {
? # tc服務的注冊中心類型,這里選擇nacos,也可以是eureka、zookeeper等
? type = "nacos"

? nacos {
? ? # seata tc 服務注冊到 nacos的服務名稱,可以自定義 spring.application.name
? ? application = "seata-tc-server"
? ? serverAddr = "127.0.01:8848"? #換成對應的nacos地址
? ? group = "DEFAULT_GROUP"
? ? namespace = ""
? ? cluster = "zhuoye"
? ? username = "nacos"
? ? password = "nacos"
? }
}

config {
? # 讀取tc服務端的配置文件的方式,這里是從nacos配置中心讀取,這樣如果tc是集群,可以共享配置
? type = "nacos"
? # 配置nacos地址等信息
? nacos {
? ? serverAddr = "127.0.0.1:8848" #換成對應的nacos地址
? ? namespace = ""
? ? group = "DEFAULT_GROUP"
? ? username = "nacos"
? ? password = "nacos"
? ? dataId = "seataServer.properties"
? }
}

4、在Nacos中添加TC服務的配置?

配置內容如下:

# 數據存儲方式,db代表數據庫

store.mode=db

store.db.datasource=druid

store.db.dbType=mysql

store.db.driverClassName=com.mysql.jdbc.Driver

store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true

store.db.user=root

store.db.password=root

store.db.minConn=5

store.db.maxConn=30

#指定全局事務表

store.db.globalTable=global_table?

#指定分支事務表

store.db.branchTable=branch_table

store.db.queryLimit=100

store.db.lockTable=lock_table

store.db.maxWait=5000

# 事務、日志等配置

server.recovery.committingRetryPeriod=1000

server.recovery.asynCommittingRetryPeriod=1000

server.recovery.rollbackingRetryPeriod=1000

server.recovery.timeoutRetryPeriod=1000

server.maxCommitRetryTimeout=-1

server.maxRollbackRetryTimeout=-1

server.rollbackRetryTimeoutUnlockEnable=false

server.undo.logSaveDays=7

server.undo.logDeletePeriod=86400000

# 客戶端與服務端傳輸方式

transport.serialization=seata

transport.compressor=none

# 關閉metrics功能,提高性能

metrics.enabled=false

metrics.registryType=compact

metrics.exporterList=prometheus

metrics.exporterPrometheusPort=9898

創建分支事務表和全局事務表,創建sql如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- 分支事務表
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` ?(
? `branch_id` bigint(20) NOT NULL,
? `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
? `transaction_id` bigint(20) NULL DEFAULT NULL,
? `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `status` tinyint(4) NULL DEFAULT NULL,
? `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `gmt_create` datetime(6) NULL DEFAULT NULL,
? `gmt_modified` datetime(6) NULL DEFAULT NULL,
? PRIMARY KEY (`branch_id`) USING BTREE,
? INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- 全局事務表
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` ?(
? `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
? `transaction_id` bigint(20) NULL DEFAULT NULL,
? `status` tinyint(4) NOT NULL,
? `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `timeout` int(11) NULL DEFAULT NULL,
? `begin_time` bigint(20) NULL DEFAULT NULL,
? `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
? `gmt_create` datetime NULL DEFAULT NULL,
? `gmt_modified` datetime NULL DEFAULT NULL,
? PRIMARY KEY (`xid`) USING BTREE,
? INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
? INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

?5、重啟TC服務

docker restart seata

這個時候可以看到在nacos上?,seata-server服務已經注冊到上面了。

二、微服務集成Seata

1、引入依賴

?<dependency>
? ? <groupId>com.alibaba.cloud</groupId>
? ? <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
? ? <exclusions>
? ? ? ? <!--版本較低,1.3.0,因此排除-->
? ? ? ? <exclusion>
? ? ? ? ? ? <artifactId>seata-spring-boot-starter</artifactId>
? ? ? ? ? ? <groupId>io.seata</groupId>
? ? ? ? </exclusion>
? ? </exclusions>
</dependency>
<!--seata starter 采用1.4.2版本-->
<dependency>
? ? <groupId>io.seata</groupId>
? ? <artifactId>seata-spring-boot-starter</artifactId>
? ? <version>1.4.2</version>
</dependency>

2、修改配置文件?

seata:
? registry: # TC服務注冊中心的配置,微服務根據這些信息去注冊中心獲取tc服務地址
? ? # 參考tc服務自己的registry.conf中的配置
? ? type: nacos
? ? nacos: # tc
? ? ? server-addr: 172.0.0.1:8848
? ? ? namespace: ""
? ? ? group: DEFAULT_GROUP
? ? ? application: seata-tc-server # tc服務在nacos中的服務名稱
? tx-service-group: seata-demo # 事務組,根據這個獲取tc服務的cluster名稱
? service:
? ? vgroup-mapping: # 事務組與TC服務cluster的映射關系
? ? ? seata-demo: zhuoye

通過以上步驟,我們就能夠成功地使用Docker來部署Seata的TC服務,并將Seata引入微服務中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14214.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32學習和實踐筆記(31):輸入捕獲實驗

1.輸入捕獲介紹 在定時器中斷實驗章節中我們介紹了通用定時器具有多種功能&#xff0c;輸入捕獲就是其中一種。STM32F1除了基本定時器TIM6和TIM7&#xff0c;其他定時器都具有輸入捕獲功能。輸入捕獲可以對輸入的信號的上升沿&#xff0c;下降沿或者雙邊沿進行捕獲&#xff0c;…

【博客主頁】博客主旨 精華

前言 與博客園不同, 最近CSDN在進行資本化的轉型.其一部分的VIP代碼和小冊我也有相關消費, 個人認為是一部分做的比較成過, 另一部分又不是特別成功. 其CSDN博客已經失去其原本技術交流的意義, 變成一種免費的知識引流和收費交流. 這其實與我們的開源社區背道而馳, 但是又吸引…

世界電信日 | 紫光展銳以科技創新支撐數字經濟可持續發展

專注科技創新&#xff0c;打造全球數字經濟技術基石 紫光展銳堅持科技創新,為數字經濟蓬勃發展提供基石力量。 面對5G-A技術的巨大潛力&#xff0c;紫光展銳與眾多生態伙伴緊密合作&#xff0c;積極推動5G-A的商用進程。紫光展銳提出的兩項R18 eRedCap演進方案已被3GPP標準采…

為什么要實現設備之間的互通?

設備之間的互通是電信設備的普遍性要求&#xff0c;特別是在接入網領域中&#xff0c;不同廠商的局端設備與用戶端&#xff08;終端&#xff09;設備之間的互通顯得尤其重要。 一、互通能為產業鏈的各個環節帶寬積極影響。 &#xff08;1&#xff09;對用戶而言&#xff0c;互…

安裝新版的Ubuntu WSL以使能BBR擁塞控制算法

【多次嘗試成功的方案】通過> wsl - -list -online列出可以安裝的版本&#xff0c;用命令> wsl --install -d Ubuntu-24.04 安裝。 【未成功的方案】通過掛在ubuntu24.04.iso到E盤后&#xff0c;用命令> wsl --import Ubuntu24.04 C:\WSL\Ubuntu24.04\ E:\ --versio…

Redis系統架構中各個處理模塊是干什么的?no.19

Redis 系統架構 通過前面的學習&#xff0c;相信你已經掌握了 Redis 的原理、數據類型及訪問協議等內容。本課時&#xff0c;我將進一步分析 Redis 的系統架構&#xff0c;重點講解 Redis 系統架構的事件處理機制、數據管理、功能擴展、系統擴展等內容。 事件處理機制 Redis…

API-BigInteger、BigDecimal

BigInteger&#xff1a; demo1: package BigInteger;import java.math.BigInteger; import java.util.Random;public class demo1 {public static void main(String[] args) {//獲取一個隨機最大整數BigInteger bd1 new BigInteger(5, new Random());System.out.println(bd1…

SSMP整合案例第一步 制作分析模塊創建與開發業務實體類

制作分析 我們要實現一個模塊的增刪改查 實際開發中mybatisplus用的不多&#xff0c;他只能對沒有外鍵的單表進行簡單的查詢 但在這個案例中我們還是選擇mybatisplus開發 模塊創建 我們把所有服務器都放在一起 就不用前后端分離 我們嘗試用后端開發進行全棧開發 新建項目添…

macos brew安裝多版本protobuf,切換指定版本protobuf 為默認版本方法

protobuf 不同的版本語法相差很大&#xff0c; 而在不同的項目中可能使用的protobuf版本也不同&#xff0c;所以我們的電腦就可能需要安裝多個版本的protobuf&#xff0c; 下面介紹macos下如何通過brew安裝多版本和設置想要的默認版本的方法 安裝&#xff0c;則可以先執行 bre…

Thinkphp3.2.3網站后臺不能訪問如何修復

我是使用Thinkphp3.2.3新搭建的PHP網站&#xff0c;但是網站前臺可以訪問&#xff0c;后臺訪問出現如圖錯誤&#xff1a; 由于我使用的Hostease的Linux虛擬主機產品默認帶普通用戶權限的cPanel面板&#xff0c;對于上述出現的問題不清楚如何處理&#xff0c;因此聯系Hostease的…

(3)醫療圖像處理:MRI磁共振成像-快速采集--(楊正漢)

目錄 一、磁共振快速采集技術基礎 1.K空間的基本特點 2.快速成像的理由&#xff1a; 3.快速成像的硬件要求&#xff1a; 二、磁共振快速采集技術 1.采集更少的相位編碼線 2.平行采集技術PAT 3.其他與快速采集有關的技術 1&#xff09;部分回波技術 2&#xff09;頻率…

java實現一個動態監控系統,監控接口請求超時的趨勢

目錄 整體思路案例實現1. 數據收集2. 數據聚合3. 趨勢分析4. 異常檢測5. 異常處理定時任務 整體思路 理想情況下&#xff0c;你可以實現一個簡單的動態監控算法來檢測渠道請求的響應時間趨勢&#xff0c;并在發現頻繁超時的情況下進行處理。以下是一個可能的算法框架&#xff…

Oracle表關聯更新幾種方法

1、測試表及數據準備 create table T_update01(ID int ,infoname varchar2(32),sys_guid varchar2(36)); create table T_update02(ID int ,infoname varchar2(32),sys_guid varchar2(36));insert into T_update01 select 1,N1_updateName,sys_guid() from dual union select …

java如何獲取IP和IP的歸屬地?

在Java中&#xff0c;獲取IP地址通常指的是獲取本地機器的IP地址或者通過某種方式&#xff08;如HTTP請求&#xff09;獲取的遠程IP地址。代碼案例如下: 而要獲取IP的歸屬地&#xff08;地理位置信息&#xff09;&#xff0c;則通常需要使用第三方IP地址查詢服務&#xff0c;我…

c++ 排序算法merge使用要求

在C中&#xff0c;std::merge是一個算法&#xff0c;它用于合并兩個已排序的范圍&#xff08;例如數組或容器中的一部分&#xff09;到一個新的范圍中。這個函數在<algorithm>頭文件中定義。 輸入范圍必須已排序 std::merge要求輸入的兩個范圍都必須是已排序的&#xf…

23種設計模式順口溜

口訣&#xff1a; 原型 抽風 &#xff0c;單獨 建造 工廠 &#xff08;寓意&#xff1a;&#xff08;這里代指本來很簡單的東西&#xff0c;卻要干工廠這里復雜的業務&#xff09; 抽風&#xff1a;抽象工廠單獨&#xff1a;單例橋代理組合享元適配器&#xff0c;&#xff0…

Microsoft VBA Excel 去重小工具

問題簡述 在本工作表中&#xff0c;A1:B3單元格樣式如下&#xff0c;通過名稱管理器B列的單元格被命名為"LinkFile"、“SheetName”、“InputArea”&#xff0c;請實現以下功能&#xff1a;讀取Excel文件中的數據&#xff0c;去除重復的數據&#xff0c;并記錄每個數…

亞馬遜云科技介紹

&#x1f525;博客主頁&#xff1a; 小羊失眠啦. &#x1f3a5;系列專欄&#xff1a;《C語言》 《數據結構》 《C》 《Linux》 ??感謝大家點贊&#x1f44d;收藏?評論?? 文章目錄 一、亞馬遜云科技云計算1.1 云計算的優勢 二、領先的云平臺三、亞馬遜云科技區域的全球網絡…

最簡單的,在mac筆記本上安裝Unix-v6系統,進行“Unix內核源碼剖析”

Unix V6 已經是 1975 年的系統了&#xff0c;但是其源代碼攏共只有 1w 行左右&#xff0c;并且使用了 C 語言&#xff08;K & R 之前的標準&#xff09;&#xff0c;還是現代操作系統的鼻祖&#xff0c;所以說是初學者最好的研究對象。 安裝模擬器 brew install simh …

【MySQL精通之路】SQL優化(1)-查詢優化(3)-索引合并

主博客&#xff1a; 【MySQL精通之路】SQL優化(1)-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】SQL優化(1)-查詢優化(2)-范圍查詢優化-CSDN博客 下一篇&#xff1a; 目錄 1.索引合并-交集訪問算法 2.索引合并聯合訪問算法 3.索引合并-排序聯合訪問算法 4.影響索引合…