seata
0. 启动 seata-server服务
下载 seata-server, 然后在 seata-server 下的 registry.conf 配置 服务注册中心地址 和 读取配置文件的 配置中心地址
(seata-server 有自己的单独数据库)
集成 微服务
-
引依赖:spring-cloud-starter-alibaba-seata
-
配置文件(配置 seata-server 相关,服务地址,服务名等等):
seata:
registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址参考tc服务自己的registry.conf中的配置
type: nacos
nacos: # tc
server-addr: 192.168.211.133:8848
namespace: ""
group: DEFAULT_GROUP
application: seata-tc-server # tc服务在nacos中的服务名称
cluster: SH
tx-service-group: seata-demo # 事务组,根据这个获取tc服务的cluster名称
service:
vgroup-mapping: # 事务组与TC服务cluster的映射关系
seata-demo: SH
data-source-proxy-mode: AT -
AT 模式需要一个表来记录全局锁,另一张表来记录数据快照 undo_log;
undo_log(快照表)导入到微服务关联的数据库(RM关联:订单、账户、库存),lock_table(全局锁表)导入到TC服务关联的数据库(TC关联:seata-server) -
在TM(事务管理者),给发起全局事务的入口方法上加全局事务注解 @GlobalTransaction, 其他的"子事务"就直管本地事务即可(@Transaction ,spring提供的事务注解)