亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringCloud中的Seata基本介紹與安裝教程

 更新時間:2024年01月18日 14:44:32   作者:一個風輕云淡  
Seata 是一款開源的分布式事務解決方案,致力于提供高性能和簡單易用的分布式事務服務,這篇文章主要介紹了SpringCloud之Seata基本介紹與安裝,需要的朋友可以參考下

基本介紹

概述

Seata 是一款開源的分布式事務解決方案,致力于提供高性能和簡單易用的分布式事務服務。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式,為用戶打造一站式的分布式解決方案。

阿里巴巴作為國內(nèi)最早一批進行應用分布式改造的企業(yè),很早就遇到微服務架構(gòu)下的分布式事務問題。阿里巴巴對于分布式事務問題先后發(fā)布了以下解決方案:

2014 年,阿里中間件團隊發(fā)布 TXC(Taobao Transaction Constructor),為集團內(nèi)應用提供分布式事務服務。

2016 年,TXC 在經(jīng)過產(chǎn)品化改造后,以 GTS(Global Transaction Service) 的身份登陸阿里云,成為當時業(yè)界唯一一款云上分布式事務產(chǎn)品。在阿云里的公有云、專有云解決方案中,開始服務于眾多外部客戶。

2019 年起,基于 TXC 和 GTS 的技術(shù)積累,阿里中間件團隊發(fā)起了開源項目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社區(qū)一起建設這個分布式事務解決方案。

2019 年 fescar 被重命名為了seata(simple extensiable autonomous transaction architecture)。

核心組件

Seata的核心組件可分為Seata服務端Seata客戶端兩類

Seata 定義了 3 個核心組件:

  • TC(Transaction Coordinator):事務協(xié)調(diào)器,維護全局和分支事務的狀態(tài),協(xié)調(diào)全局事務提交或回滾 ,直接調(diào)度事務參與者RM。負責將RM的反饋結(jié)果響應給TM,并聽從TM的最終決議,將具體決議(提交或回滾)發(fā)送給RM執(zhí)行。相當于中間人,主要負責維護全局事務和分支事務的狀態(tài)。
  • TM(Transaction Manager):事務管理器,定義全局事務的范圍、開始全局事務、提交或回滾全局事務。 它是事務的發(fā)起者(具體的微服務)。根據(jù)RM第一階段的執(zhí)行結(jié)果,進行決議。并將決議反饋給TC。相當于發(fā)號施令的
  • RM(Resource Manager):資源管理器,管理分支事務處理的資源,與TC交談以注冊分支事務和報告分支事務的狀態(tài),并驅(qū)動分支事務提交或回滾。 其實就是事務的參與者。獲取TC的執(zhí)行命令具去執(zhí)行分支事務的第一階段以及第二階段,并將執(zhí)行結(jié)果反饋給TC,相當于具體做事的

三個組件相互協(xié)作,TC 以 Seata 服務器(Server)形式獨立部署,TM 和 RM 則是以 Seata Client 的形式集成在微服務中運行。 

 四種方案

 整體的架構(gòu)如圖:

Seata基于上述架構(gòu)提供了四種不同的分布式事務解決方案:

  • XA模式:強一致性分階段事務模式,犧牲了一定的可用性,無業(yè)務侵入

支持XA協(xié)議 事務的數(shù)據(jù)庫。Java 應用,通過 JDBC 訪問數(shù)據(jù)庫。

執(zhí)行階段(E xecute):XA start/XA end/XA prepare + SQL + 注冊分支

完成階段(F inish):XA commit/XA rollback

  • TCC模式:最終一致的分階段事務模式,有業(yè)務侵入

不依賴于底層數(shù)據(jù)資源的事務支持:

一階段 prepare 行為:調(diào)用 自定義 的 prepare 邏輯。

二階段 commit 行為:調(diào)用 自定義 的 commit 邏輯。

二階段 rollback 行為:調(diào)用 自定義 的 rollback 邏輯。

所謂 TCC 模式,是指支持把 自定義 的分支事務納入到全局事務的管理中。

  • AT模式:最終一致的分階段事務模式,無業(yè)務侵入,也是Seata的默認模式

基于 支持本地 ACID 事務 的 關(guān)系型數(shù)據(jù)庫:

一階段 prepare 行為:在本地事務中,一并提交業(yè)務數(shù)據(jù)更新和相應回滾日志記錄。

二階段 commit 行為:馬上成功結(jié)束,自動 異步批量清理回滾日志。

二階段 rollback 行為:通過回滾日志,自動 生成補償操作,完成數(shù)據(jù)回

  • SAGA模式:長事務模式,有業(yè)務侵入

Saga模式是SEATA提供的長事務解決方案,在Saga模式中,業(yè)務流程中每個參與者都提交本地事務,當出現(xiàn)某一個參與者失敗則補償前面已經(jīng)成功的參與者,一階段正向服務和二階段補償服務都由業(yè)務開發(fā)實現(xiàn)。

無論哪種方案,都離不開TC,也就是事務的協(xié)調(diào)者。

部署TC服務(安裝)

  • 下載 

首先要下載seata-server包,地址在http://seata.io/zh-cn/blog/download.html

在非中文目錄解壓縮這個zip包,其目錄結(jié)構(gòu)如下:

修改registry.conf 

注冊到nacos中 

registry {
  # tc服務的注冊中心類,這里選擇nacos,也可以是eureka、zookeeper等
  type = "nacos"
  nacos {
    # seata tc 服務注冊到 nacos的服務名稱,可以自定義
    application = "seata-tc-server"
    serverAddr = "127.0.0.1:8848"
    group = "DEFAULT_GROUP"
    namespace = ""
    cluster = "SH"
    username = "nacos"
    password = "nacos"
  }
}
config {
  # 讀取tc服務端的配置文件的方式,這里是從nacos配置中心讀取,這樣如果tc是集群,可以共享配置
  type = "nacos"
  # 配置nacos地址等信息
  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
    dataId = "seataServer.properties"
  }
}

nacos添加配置

為了讓tc服務的集群可以共享配置,我們選擇了nacos作為統(tǒng)一配置中心。因此服務端配置文件seataServer.properties文件需要在nacos中配好。

配置內(nèi)容如下:

# 數(shù)據(jù)存儲方式,db代表數(shù)據(jù)庫
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=123
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
# 關(guān)閉metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

 其中的數(shù)據(jù)庫地址、用戶名、密碼都需要修改成你自己的數(shù)據(jù)庫信息。

 Server端存儲模式(store.mode)現(xiàn)有file、db、redis三種(后續(xù)將引入raft,mongodb),file模式無需改動,直接啟動即可。

注: file模式為單機模式,全局事務會話信息內(nèi)存中讀寫并持久化本地文件root.data,性能較高;db模式為高可用模式,全局事務會話信息通過db共享,相應性能差些;

建表(僅db) 

tc服務在管理分布式事務時,需要記錄事務相關(guān)數(shù)據(jù)到數(shù)據(jù)庫中,你需要提前創(chuàng)建好這些表。 

全局事務會話信息由3塊內(nèi)容構(gòu)成,全局事務-->分支事務-->全局鎖,對應表global_table、branch_table、lock_table。

新建一個名為seata的數(shù)據(jù)庫  ,然后執(zhí)行以下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;

啟動 

進入bin目錄,運行其中的seata-server.bat即可:  

啟動成功后,seata-server應該已經(jīng)注冊到nacos注冊中心了。

到此這篇關(guān)于SpringCloud之Seata基本介紹與安裝的文章就介紹到這了,更多相關(guān)SpringCloud Seata安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java整合Redis實現(xiàn)坐標附近查詢功能

    Java整合Redis實現(xiàn)坐標附近查詢功能

    這篇文章主要介紹了Java整合Redis實現(xiàn)坐標附近查詢,我們可以在redis服務器使用命令 help xxx 查看指令的具體用法,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2023-11-11
  • SpringMVC異步處理的 5 種方式示例詳解

    SpringMVC異步處理的 5 種方式示例詳解

    這篇文章主要介紹了SpringMVC異步處理的 5 種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Spring依賴注入與第三方Bean管理基礎詳解

    Spring依賴注入與第三方Bean管理基礎詳解

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調(diào)用者)需要另一個角色(另一個Java實例,被調(diào)用者)的協(xié)助時,在 傳統(tǒng)的程序設計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例
    2022-12-12
  • SpringBoot中@Scheduled實現(xiàn)服務啟動時執(zhí)行一次

    SpringBoot中@Scheduled實現(xiàn)服務啟動時執(zhí)行一次

    本文主要介紹了SpringBoot中@Scheduled實現(xiàn)服務啟動時執(zhí)行一次,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • 將Java程序打包成EXE文件的實現(xiàn)方式

    將Java程序打包成EXE文件的實現(xiàn)方式

    這篇文章主要介紹了將Java程序打包成EXE文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)

    Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)

    這篇文章主要介紹了Java 添加、刪除、替換、格式化Word中的文本(基于Spire.Cloud.SDK for Java),本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java Swing JCheckBox復選框的實現(xiàn)方法

    Java Swing JCheckBox復選框的實現(xiàn)方法

    這篇文章主要介紹了Java Swing JCheckBox復選框的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 啟動Spring項目詳細過程(小結(jié))

    啟動Spring項目詳細過程(小結(jié))

    這篇文章主要介紹了啟動Spring項目詳細過程(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Mybatis 傳參與排序模糊查詢功能實現(xiàn)

    Mybatis 傳參與排序模糊查詢功能實現(xiàn)

    這篇文章主要介紹了Mybatis 傳參與排序模糊查詢功能實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-04-04
  • 在SpringBoot中實現(xiàn)斷點續(xù)傳的實例代碼

    在SpringBoot中實現(xiàn)斷點續(xù)傳的實例代碼

    在 Spring Boot 或任何其他 web 開發(fā)框架中,斷點續(xù)傳是一種技術(shù),允許文件的傳輸在中斷后可以從中斷點重新開始,而不是從頭開始,種技術(shù)在處理大文件或在不穩(wěn)定的網(wǎng)絡環(huán)境中尤為重要,本文給大家介紹了SpringBoot中實現(xiàn)斷點續(xù)傳的實例代碼,需要的朋友可以參考下
    2024-07-07

最新評論