英文网站建设方案 PPT,个人摄影网站源码,wordpress建站以后,合作公司做网站Spring Cloud Alibaba学习 5- Seata入门使用
Seata是Spring Cloud Alibaba中用于分布式事务管理的解决方案
一. Seata的基本概念
1. Seata的三大角色
1 TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态#xff0c;驱动全局事务提交或回滚。TC作…Spring Cloud Alibaba学习 5- Seata入门使用
Seata是Spring Cloud Alibaba中用于分布式事务管理的解决方案
一. Seata的基本概念
1. Seata的三大角色
1 TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态驱动全局事务提交或回滚。TC作为单独的服务端部署。
2 TM (Transaction Manager) - 事务管理器
定义全局事务的范围开始全局事务、提交或回滚全局事务。
3 RM (Resource Manager) - 资源管理器
管理分支事务处理的资源与TC交谈以注册分支事务和报告分支事务的状态并驱动分支事务提交或回滚。
2. Seata的四种事务模式
这里只介绍粗略地介绍AT模式其他模式见官方的文档 Seata各事务模式 | Apache Seata
AT
AT模式是基于二阶段提交
一阶段业务数据和回滚日志记录在同一个本地事务中提交释放本地锁和连接资源。二阶段 提交异步化非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿。
TCCSagaXA
二. Spring Cloud 整合 Seata
1. Seata服务器下载和启动
可以参考Seata官方文档 新人文档 | Apache Seata
1.1 下载 Seata服务端
下载地址Seata服务端下载
一开始下载的 Apache Seata(incubating)不知道怎么启动所以建议下载非Apache的版本我下载的版本是1.7.0
2. 运行Seata服务端
Seata的运行模式有三种 file单机模式将信息存在内存中并持久化本地文件root.data性能较高默认 db高可用模式将信息存在数据库中性能次于单机模式 redis
2.1 以默认配置运行
下载完成后双击运行 /seata/bin/seata-server.bat启动成功如下图 默认运行在 127.0.0.1:7091以单机模式运行如果没在配置文件修改过密码默认账号密码都是seata 2.2 以db模式运行
2.2.1 建表
先在Mysql建数据库seata然后运行/seata/script/server/db/mysql.sql对应表 global_table全局事务、branch_table分支事务、lock_table全局锁、distributed lock分布式锁
2.2.2 修改 store.mode
修改/seata/conf/application.yml
store:# support: file 、 db 、 redismode: dbdb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatementstrueuser: xxx #账号password: xxx #密码min-conn: 10max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 1000max-wait: 5000启动报错 究其原因是Mysql的驱动和我的Mysql的版本不匹配打开/seata/lib/jdbc发现有两个驱动 这下搞懂了启动seata时会默认用 5.1.42的驱动程序此时将5.1.42 的驱动拿掉就可以了再次启动此时可以正常访问
D:\seata\seata\binseata-server.bat -m db3 配置Nacos注册中心 可选 registry: # 注册中心服务发现# support: nacos, eureka, redis, zk, consul, etcd3, sofatype: nocosnacos:application: seata-serverserver-addr: 127.0.0.1:8848namespace: public可以看到Nacos上可以看到seata正在运行的服务了 配置中心的配置也和上述类似这里就不过多赘述了。
4. 项目整合 Seata
4.1 引入 Seata 相关依赖
老版本的Spring Cloud和个组件的版本对照版本说明 · alibaba/spring-cloud-alibaba Wiki
在公共模块下引入Seata
!--seata--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId
/dependency4.2 配置 Seata
配置建议参考官方文档事务分组介绍 | Apache Seata
我这里的配置如下
seata:registry: # TC服务注册中心的配置微服务根据这些信息去注册中心获取tc服务地址type: nacos # 注册中心类型 nacosnacos:server-addr: 127.0.0.1:8848 # nacos地址
# namespace: # namespace默认为空会映射到public
# group: DEFAULT_GROUP # 分组默认是DEFAULT_GROUPapplication: seata-server # seata服务名称
# cluster: default #集群默认是defaulttx-service-group: my_test_tx_group # 事务组名称service:vgroup-mapping: # 事务组与cluster的映射关系my_test_tx_group: defaultdata-source-proxy-mode: XA配置好了启动服务查看Seata服务端cmd窗口可以看到 TM 事务管理器 和 RM 资源管理器已经启动 4.3 测试
官方提供了示例测试seata-samples/at-samples后续有业务我再进行补充。