1.seata的基础角色:
TC(Transaction Coordainator):事务协调者,它维护全局和分支事务的状态,驱动全局事务提交和回滚
TM(Transaction Manager):事务管理器,它定义了全局事务的范围,主要包括开始全局事务、提交全局事务和回滚全局事务
RM(Resource Manager):资源管理器,它管理分支事务处理的资源,与TC通信并注册分支事务和报告分支事务的状态,驱动分支事务的提交和回滚。
其中,TC单独部署,TM和RM与应用强绑定,共用一个虚拟就一起部署
在TM和RM与TC之间用RPC完成资源数据的交换
2.seata可以将部署事务协调者的机器实例注册到注册中心,事务管理器和资源管理器可以从注册中心获取部署事务协调者的机器实例的集群列表。
3.seata的服务端(TC)和客户端(TM和RM)都支持分布式配置中心,开发人员可以将配置信息动态的存储在配置中心中。
4.在seata中,事务模式是指运行在seata全局事务框架下得“分支事务的行为模式”(即分支事务模式)
5.seata事务的模式:AT模式,XA模式,TCC模式及Saga模式
(1)AT模式是seata主推的事务模式。AT模式屏蔽了底层JDBC数据层的细节,让应用能够无感的使用分布式事务,自己代理应用数据源,并进行事务相关的操作。
AT模式的两阶段过程:
第一阶段:应用只需关注自己的 “业务SQL代码”,seata将应用的 “业务sql代码的执行”作为第一阶段。seata框架会自动代理应用的数据源,并生成事务第二阶段的提交和回滚事务操作,记录在UNDO LOG日志表中。
第二阶段:如果TC事务协调器通知分支事务处理成功,则seata会提交分支事务(在seata的AT模式中,提交分支事务就是“删除UNDO LOG日志表中的事务相关日志”);如果TC事务协调器通知分支事务吃力失败,则seata会回滚分支事务(从UNDO LOG日志表中读取事务回滚的日志)
6.seata官网地址:https://seata.io/zh-cn/blog/download.html,https://github.com/seata/seata/releases
nacos官网下载地址:https://nacos.io/zh-cn/index.html,https://github.com/alibaba/nacos/releases/tag/1.4.1
安装参考链接:https://blog.csdn.net/weixin_45176509/article/details/123583281
配置参考链接:http://events.jianshu.io/p/223ad263a822
7.同步seata配置到nacos配置中心:https://blog.csdn.net/flying86/article/details/127356811
注意,命名空间要写所指定的命名空间id值
8.seata官方配置说明:https://seata.io/zh-cn/docs/user/configurations.html
http://127.0.0.1:7865/order/buy?userId=1212&goodId=12&accountId=1234&num=100
9.解决seat全局事务xid不一致的问题:https://blog.csdn.net/zdb1314/article/details/124211553
10.解决seata事务不生效的问题:
首先检查下:https://blog.csdn.net/m0_52789121/article/details/125242776
如果上述都没问题,则是数据源的问题,需要配置代理数据源:https://my.oschina.net/u/3535099/blog/5585581
openfeign服务间调用需要手动回滚:https://blog.csdn.net/t0404/article/details/126513753
代码修改: