如何理解commit分布式事务的时候,还有分支事务在调用呢?seata中A服务方法添加了全局事务注解, B服务方法里面也加了全局事务注解。 A服务调用B服务方法是这样调用出现的吗?
假设 A调B,B压力太大,A掉Btimeout,有重试,A再调了一次B,此时B有2个相同的请求,A重试B的请求完成提交到seata-server,此时B被阻塞的那个请求(B是多个节点的高可用部署多provider)进行了处理。b1 线程池被打满,请求阻塞,b2比较畅通,consumer掉provider b1阻塞了,timeout,重试至b2,成功注册分支并相应给A,Acommit->seata-server,seata-server 释放锁,修改事务状态 在seata-server释放锁的时候,b1的那个请求进入处理,注册分支到tc,就额外多了一个这样的分支。如果你的b服务做了幂等,那么就不会出现这种情况。此答案整理自钉钉群“3群-Seata 开源讨论群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。