spring_cloud_alibaba之seata使用
概述
https://seata.io/zh-cn/blog/seata-quick-start/
用户文档要看一遍
部署TC server
https://github.com/seata/seata/releases
下载对应版本的压缩包。
解压:
1 |
|
单机启动
查看脚本seata-setup.sh发现日志存放位置,为空时默认$HOME/logs/seata
1 |
|
集群布署
存储使用DB
单机启动的是使用的file模式。
在集群时,多个 Seata TC Server 通过 db 数据库,实现全局事务会话信息的共享。
在解压的目录中例如:/root/seata/script/server/db,mysql.sql是mysql数据库的表。
1 |
|
新建seata数据库:
1 |
|
并执行上面的mysql.sql内容。
修改配置文件:
3.0版本以前是conf/file.conf。
3.0版本是conf/application.yml 与 conf/application.example.yml
修改application.yml中
1 |
|
根据application.example.yml把下面内容添加到application.yml中
1 |
|
这里要注意mysql的连接数
1 |
|
服务注册与配置中心
同样是修改application.yml
1 |
|
这里我只做服务注册。
1 |
|
启动
1 |
|
-p 为Seata TC Server 监听的端口。
-n Server node。在多个 TC Server 时,需区分各自节点,用于生成不同区间的 transactionId 事务编号,以免冲突。
修改application.yml中 server.port=7091 改为 其他的端口,这个端口是spring boot项目的端口。
1 |
|
java应用
https://seata.io/zh-cn/docs/user/quickstart
https://seata.io/zh-cn/docs/ops/deploy-guide-beginner
SQL
1 |
|
1 |
|
1 |
|
1 |
|
每个库同样加上seata使用的表:
1 |
|
应用搭建
先创建父工程springcloud-alibaba-seata:
1 |
|
新建模块storage-service、account-service、order-service:
1 |
|
1 |
|
nacos中存储的配置有:
1 |
|
其中重要的seata配置:
1 |
|
seata默认是AT模式。
集群时:
1 |
|
mapper
StorageTblMapper.xml:
1 |
|
StorageTblMapper:
1 |
|
AccountTblMapper.xml:
1 |
|
AccountTblMapper:
1 |
|
OrderTblMapper.xml:
1 |
|
OrderTblMapper:
1 |
|
service及contoller
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
测试
启动 nacos server、seata-server、启动应用。
访问 post请求
http://localhost:7002/order/create
1 |
|
查看数据库,account库里数据没有变更,说明分布事布生效。