最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SpringCloud-Alibaba-Seata分布式事務(wù)

 更新時(shí)間:2020年12月16日 11:56:36   作者:T  
這篇文章主要介紹了SpringCloud-Alibaba-Seata分布式事務(wù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言
Seata 是一款阿里巴巴開源的分布式事務(wù)解決方案,致力于在微服務(wù)架構(gòu)下提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù)。

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

術(shù)語(yǔ)

TC (Transaction Coordinator) - 事務(wù)協(xié)調(diào)者
維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局事務(wù)提交或回滾。

TM (Transaction Manager) - 事務(wù)管理器
定義全局事務(wù)的范圍:開始全局事務(wù)、提交或回滾全局事務(wù)。

RM (Resource Manager) - 資源管理器
管理分支事務(wù)處理的資源,與TC交談以注冊(cè)分支事務(wù)和報(bào)告分支事務(wù)的狀態(tài),并驅(qū)動(dòng)分支事務(wù)提交或回滾。
1.
XID:全局唯一事務(wù)ID
TC:事務(wù)協(xié)調(diào)器,維護(hù)全局事務(wù)的運(yùn)行狀態(tài),負(fù)責(zé)協(xié)調(diào)并驅(qū)動(dòng)全局的提交或回滾
TM:控制全局事務(wù)的邊界,負(fù)責(zé)開啟一全局事務(wù),并最終發(fā)起全局提交或者回滾的決議
RM:控制分支事務(wù),負(fù)責(zé)分支注冊(cè),狀態(tài)匯報(bào),并接受事務(wù)協(xié)調(diào)的指令,驅(qū)動(dòng)分支的事務(wù)提交或者回滾
2.
TM向TC申請(qǐng)開啟一個(gè)全局的事務(wù),全局事務(wù)創(chuàng)建成功并生成一個(gè)唯一的全局ID,XID在微服務(wù)調(diào)用鏈路的上下文中傳播
RM向TC注冊(cè)分支事務(wù),將其納入XID對(duì)應(yīng)事務(wù)的 管轄
TM向TC發(fā)起針對(duì)XID的全局提交或者回滾
TC調(diào)度XID下管轄的全部分支事務(wù)完成提交或者回滾

在這里插入圖片描述

官方文檔https://seata.io/zh-cn/docs/overview/what-is-seata.html

示例 win版
下載安裝
https://github.com/seata/seata/releases/tag/v1.3.0

在這里插入圖片描述

下載好的包解壓 解壓
在這里插入圖片描述
配置 seata
打開\seata\seata\conf 下編輯 file.conf文件
在這里插入圖片描述
修改數(shù)據(jù)庫(kù)模式
在這里插入圖片描述
file.conf 文件修改鏈接數(shù)據(jù)的 信息
修改本地mysql的地址與賬號(hào)密碼
在這里插入圖片描述
file.conf 中的service也沒有手動(dòng)添加
vgroup_mapping.my_test_tx_group = “default”
default任意定義名字

service {
 #transaction service group mapping
 #修改,可不改,my_test_tx_grou。
 vgroup_mapping.my_test_tx_group = "default"
 #only support when registry.type=file, please don't set multiple addresses
 # 此服務(wù)的地址
 default.grouplist = "127.0.0.1:8091"
 #disable seata
 disableGlobalTransaction = false
}

創(chuàng)建數(shù)據(jù)庫(kù) 運(yùn)行官方給的額Sql文件
我草!沒有sql腳本, 0.9版本有sql腳本
網(wǎng)上找了一個(gè)

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 = Dynamic;

-- ----------------------------
-- Records of branch_table
-- ----------------------------

-- ----------------------------
-- Table structure for global_table
-- ----------------------------
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(0) NULL DEFAULT NULL,
 `gmt_modified` datetime(0) 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 = Dynamic;

-- ----------------------------
-- Records of global_table
-- ----------------------------

-- ----------------------------
-- Table structure for lock_table
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (
 `row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
 `xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 `transaction_id` bigint(20) NULL DEFAULT NULL,
 `branch_id` bigint(20) NOT NULL,
 `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 `table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 `pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 `gmt_create` datetime(0) NULL DEFAULT NULL,
 `gmt_modified` datetime(0) NULL DEFAULT NULL,
 PRIMARY KEY (`row_key`) USING BTREE,
 INDEX `idx_branch_id`(`branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of lock_table
-- ----------------------------

-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `branch_id` bigint(20) NOT NULL,
 `xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
 `context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
 `rollback_info` longblob NOT NULL,
 `log_status` int(11) NOT NULL,
 `log_created` datetime(0) NOT NULL,
 `log_modified` datetime(0) NOT NULL,
 `ext` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE,
 UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

修改conf文件夾下 registry.conf ,
seata 支持注冊(cè)nacos 、eureka、redis、zk、consul、etcd3、sofa
本地的nacos的地址
在這里插入圖片描述
改完配置文件保存 測(cè)試
啟動(dòng)ncos 在啟動(dòng)seata
在這里插入圖片描述
Seata 下bin目錄在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
代碼示例
pom

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
   <exclusions>
    <exclusion>
     <artifactId>seata-all</artifactId>
     <groupId>io.seata</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>io.seata</groupId>
   <artifactId>seata-all</artifactId>
   <version>1.3.0</version>
  </dependency>

使用庫(kù)下創(chuàng)建`undo_log表

drop table `undo_log`;
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;

yml

server:
 port: 2001
 
spring:
 application:
 name: seata-order-service
 cloud:
 alibaba:
  seata:
  #自定義事務(wù)組名稱需要與seata-server中的對(duì)應(yīng)
  tx-service-group: default
 nacos:
  discovery:
  server-addr: localhost:8848
 datasource:
 driver-class-name: com.mysql.jdbc.Driver
 url: jdbc:mysql://localhost:3306/seata_order
 username: root
 password: root
 
feign:
 hystrix:
 enabled: false
 
logging:
 level:
 io:
  seata: info
 
mybatis:
 mapperLocations: classpath:mapper/*.xml

file.conf

transport {
 # tcp udt unix-domain-socket
 type = "TCP"
 #NIO NATIVE
 server = "NIO"
 #enable heartbeat
 heartbeat = true
 #thread factory for netty
 thread-factory {
 boss-thread-prefix = "NettyBoss"
 worker-thread-prefix = "NettyServerNIOWorker"
 server-executor-thread-prefix = "NettyServerBizHandler"
 share-boss-worker = false
 client-selector-thread-prefix = "NettyClientSelector"
 client-selector-thread-size = 1
 client-worker-thread-prefix = "NettyClientWorkerThread"
 # netty boss thread size,will not be used for UDT
 boss-thread-size = 1
 #auto default pin or 8
 worker-thread-size = 8
 }
 shutdown {
 # when destroy server, wait seconds
 wait = 3
 }
 serialization = "seata"
 compressor = "none"
}
 
service {
 
 vgroup_mapping.fsp_tx_group = "default" 
 
 default.grouplist = "127.0.0.1:8091"
 enableDegrade = false
 disable = false
 max.commit.retry.timeout = "-1"
 max.rollback.retry.timeout = "-1"
 disableGlobalTransaction = false
}
 
 
client {
 async.commit.buffer.limit = 10000
 lock {
 retry.internal = 10
 retry.times = 30
 }
 report.retry.count = 5
 tm.commit.retry.count = 1
 tm.rollback.retry.count = 1
}
 
## transaction log store
store {
 ## store mode: file、db
 mode = "db"
 
 ## file store
 file {
 dir = "sessionStore"
 
 # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
 max-branch-session-size = 16384
 # globe session size , if exceeded throws exceptions
 max-global-session-size = 512
 # file buffer size , if exceeded allocate new buffer
 file-write-buffer-cache-size = 16384
 # when recover batch read size
 session.reload.read_size = 100
 # async, sync
 flush-disk-mode = async
 }
 
 ## database store
 db {
 ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.
 datasource = "dbcp"
 ## mysql/oracle/h2/oceanbase etc.
 db-type = "mysql"
 driver-class-name = "com.mysql.jdbc.Driver"
 url = "jdbc:mysql://127.0.0.1:3306/seata"
 user = "root"
 password = "root"
 min-conn = 1
 max-conn = 3
 global.table = "global_table"
 branch.table = "branch_table"
 lock-table = "lock_table"
 query-limit = 100
 }
}
lock {
 ## the lock store mode: local、remote
 mode = "remote"
 
 local {
 ## store locks in user's database
 }
 
 remote {
 ## store locks in the seata's server
 }
}
recovery {
 #schedule committing retry period in milliseconds
 committing-retry-period = 1000
 #schedule asyn committing retry period in milliseconds
 asyn-committing-retry-period = 1000
 #schedule rollbacking retry period in milliseconds
 rollbacking-retry-period = 1000
 #schedule timeout retry period in milliseconds
 timeout-retry-period = 1000
}
 
transaction {
 undo.data.validation = true
 undo.log.serialization = "jackson"
 undo.log.save.days = 7
 #schedule delete expired undo_log in milliseconds
 undo.log.delete.period = 86400000
 undo.log.table = "undo_log"
}
 
## metrics settings
metrics {
 enabled = false
 registry-type = "compact"
 # multi exporters use comma divided
 exporter-list = "prometheus"
 exporter-prometheus-port = 9898
}
 
support {
 ## spring
 spring {
 # auto proxy the DataSource bean
 datasource.autoproxy = false
 }
}

registry.conf

registry {
 # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
 type = "nacos"
 
 nacos {
 serverAddr = "localhost:8848"
 namespace = ""
 cluster = "default"
 }
 eureka {
 serviceUrl = "http://localhost:8761/eureka"
 application = "default"
 weight = "1"
 }
 redis {
 serverAddr = "localhost:6379"
 db = "0"
 }
 zk {
 cluster = "default"
 serverAddr = "127.0.0.1:2181"
 session.timeout = 6000
 connect.timeout = 2000
 }
 consul {
 cluster = "default"
 serverAddr = "127.0.0.1:8500"
 }
 etcd3 {
 cluster = "default"
 serverAddr = "http://localhost:2379"
 }
 sofa {
 serverAddr = "127.0.0.1:9603"
 application = "default"
 region = "DEFAULT_ZONE"
 datacenter = "DefaultDataCenter"
 cluster = "default"
 group = "SEATA_GROUP"
 addressWaitTime = "3000"
 }
 file {
 name = "file.conf"
 }
}
 
config {
 # file、nacos 、apollo、zk、consul、etcd3
 type = "file"
 
 nacos {
 serverAddr = "localhost"
 namespace = ""
 }
 consul {
 serverAddr = "127.0.0.1:8500"
 }
 apollo {
 app.id = "seata-server"
 apollo.meta = "http://192.168.1.204:8801"
 }
 zk {
 serverAddr = "127.0.0.1:2181"
 session.timeout = 6000
 connect.timeout = 2000
 }
 etcd3 {
 serverAddr = "http://localhost:2379"
 }
 file {
 name = "file.conf"
 }
}
@GlobalTransactional(name = "tang,rollbackFor = Exception.class)開啟全局事物
@Override
 @GlobalTransactional(name = "tang,rollbackFor = Exception.class)
 public void create(Providers providers ){
  test1Mapper.add(providers);
  test2Mapper.add(providers)
  }

到此這篇關(guān)于SpringCloud-Alibaba-Seata分布式事務(wù)的文章就介紹到這了,更多相關(guān)SpringCloud-Alibaba-Seata分布式事務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • HashMap線程不安全問(wèn)題解析

    HashMap線程不安全問(wèn)題解析

    這篇文章主要介紹了HashMap線程不安全問(wèn)題解析,HashMap的線程不安全體現(xiàn)在會(huì)造成死循環(huán)、數(shù)據(jù)丟失、數(shù)據(jù)覆蓋等問(wèn)題,其中死循環(huán)和數(shù)據(jù)丟失是在JDK1.7中出現(xiàn)的問(wèn)題,在JDK1.8中已經(jīng)得到解決,但是1.8中仍會(huì)有數(shù)據(jù)覆蓋這樣的問(wèn)題,需要的朋友可以參考下
    2023-11-11
  • Java拷貝文件夾和刪除文件夾代碼實(shí)例

    Java拷貝文件夾和刪除文件夾代碼實(shí)例

    這篇文章主要介紹了Java拷貝文件夾和刪除文件夾代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 一文帶你了解SpringBoot的啟動(dòng)原理

    一文帶你了解SpringBoot的啟動(dòng)原理

    大家通常只需要給一個(gè)類添加一個(gè)@SpringBootApplication 注解,然后再加一個(gè)main 方法里面固定的寫法 SpringApplication.run(Application.class, args);那么spring boot 到底是如何啟動(dòng)服務(wù)的呢,接下來(lái)咱們通過(guò)源碼解析,需要的朋友可以參考下
    2023-05-05
  • skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用

    skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用

    這篇文章主要為大家介紹了skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問(wèn)題MySQLIntegrityConstraintViolationException

    解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問(wèn)題MySQLIntegrityC

    在MySQL中使用MyBatis時(shí),可能會(huì)遇到由于主鍵重復(fù)導(dǎo)致的插入失敗問(wèn)題,此問(wèn)題通常發(fā)生在連續(xù)插入多條數(shù)據(jù)時(shí),如果selectKey的order配置錯(cuò)誤,如使用BEFORE而不是AFTER,將會(huì)導(dǎo)致獲取的ID未更新,引起主鍵重復(fù)錯(cuò)誤,正確的配置應(yīng)使用AFTER
    2024-10-10
  • java LRU算法介紹與用法示例

    java LRU算法介紹與用法示例

    這篇文章主要介紹了java LRU算法,簡(jiǎn)單介紹了LRU算法的概念并結(jié)合實(shí)例形式分析了LRU算法的具體使用方法,需要的朋友可以參考下
    2017-09-09
  • 啟動(dòng)Tomcat報(bào)錯(cuò)Unsupported major.minor version xxx的解決方法

    啟動(dòng)Tomcat報(bào)錯(cuò)Unsupported major.minor version xxx的解決方法

    這篇文章主要為大家詳細(xì)介紹了啟動(dòng)Tomcat報(bào)錯(cuò)Unsupported major.minor version xxx的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mybatis二級(jí)緩存的實(shí)現(xiàn)代碼

    mybatis二級(jí)緩存的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了mybatis二級(jí)緩存的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • SpringBoot中的YAML配置文件和日志詳解

    SpringBoot中的YAML配置文件和日志詳解

    這篇文章主要介紹了SpringBoot中的YAML配置文件和日志的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Java并發(fā)之BlockingQueue的使用

    Java并發(fā)之BlockingQueue的使用

    這篇文章主要介紹了Java并發(fā)之BlockingQueue的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論

丰镇市| 武宁县| 浦东新区| 岳阳市| 磐安县| 弥渡县| 东乡| 汾阳市| 沈丘县| 南靖县| 神农架林区| 万安县| 海丰县| 灵川县| 成都市| 桂林市| 大悟县| 佛冈县| 馆陶县| 沧源| 湘西| 文化| 青铜峡市| 招远市| 泰宁县| 牙克石市| 栾城县| 西吉县| 水城县| 卢氏县| 临汾市| 皮山县| 平遥县| 遵义县| 大同县| 铜梁县| 准格尔旗| 梁山县| 札达县| 临邑县| 醴陵市|