本文為博主原創,未經允許不得轉載:
目錄:
1. 下載並啟動Seata Server,並指定nacos作為配置中心和注冊中心
2. 同步seata server的配置到nacos
3. 啟動Seata Server
4. Seata整合到Spring Cloud微服務
5. 接入問題總結:
6.demo項目gitee 鏈接: https://gitee.com/xiangbaxiang/seata-nacos-demo
1. 下載並啟動Seata Server,並指定nacos作為配置中心和注冊中心
1.1 下載地址:http://seata.io/zh-cn/blog/download.html

1.2 通過 seata 的 conf 目錄下的 file.conf 指定server 端存儲模式:
支持 file ,db , redis 三種方式:
file:(默認)單機模式,全局事務會話信息內存中讀寫並持久化本地文件root.data,性能較高(默認)
db:(5.7+)高可用模式,全局事務會話信息通過db共享,相應性能差些
redis:Seata-Server 1.3及以上版本支持,性能較高,存在事務信息丟失風險,請提前配置適合當前場景的redis持久化配置
1.3 在 register.conf 指定注冊中心:

1.4 在 register.conf 指定配置中心:

注意:客戶端配置registry.conf使用nacos時也要注意group要和seata server中的 group 一致,默認group是"DEFAULT_GROUP"
2. 同步seata server的配置到nacos
先啟動本地的nacos
獲取/seata/script/config-center/config.txt,修改配置信息

seata 從1.4 之后,seata 的安裝包中去除了 同步的配置文件,可以從這個目錄中獲取: https://github.com/seata/seata/tree/1.3.0/script
配置事務分組, 要與客戶端配置的事務分組一致
(客戶端properties配置:spring.cloud.alibaba.seata.tx‐service‐group=my_test_tx_group)

sh ${SEATAPATH}/script/config‐center/nacos/nacos‐config.sh ‐h localhost ‐p 8848 ‐g SEATA_GROUP ‐t 5a3c7d6c‐f497‐4d68‐a71a‐2e5e3340b3ca
參數說明:
sh nacos‐config.sh ‐h localhost ‐p 8848 ‐g SEATA_GROUP
3. 啟動Seata Server
啟動Seata Server命令
bin/seata‐server.sh
啟動成功,默認端口8091
4. Seata整合到Spring Cloud微服務
4.1導入依賴:
<!‐‐ seata‐‐>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐starter‐alibaba‐seata</artifactId>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata‐all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata‐all</artifactId>
<version>1.4.0</version>
</dependency>
<!‐‐nacos 注冊中心‐‐>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid‐spring‐boot‐starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql‐connector‐java</artifactId>
<scope>runtime</scope>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis‐spring‐boot‐starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata‐spring‐boot‐starter</artifactId>
<version>1.4.0</version>
</dependency>
4.2 微服務對應數據庫中添加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, 0 PRIMARY KEY (`id`), UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
4.3 在yml中配置
seata: enabled: true application-id: ${spring.application.name} # seata 服務分組,要與服務端nacos‐config.txt中service.vgroup_mapping的后綴對應 tx-service-group: my_test_tx_group config: # 指定nacos作為配置中心 type: nacos nacos: namespace: serverAddr: 127.0.0.1:8848 group: SEATA_GROUP registry: # 指定nacos作為注冊中心 type: nacos nacos: application: seata-server server-addr: 127.0.0.1:8848 namespace:
在事務發起者中添加@GlobalTransactional注解
@GlobalTransactional
5. 接入問題總結:

6.demo項目gitee 鏈接: https://gitee.com/xiangbaxiang/seata-nacos-demo
在查看並使用該項目時,請先查看 ReadMe.md中的相關介紹。
