Seata中AT模式下是需要本地事务提交才会像TC注册分支事务吗?

Seata中AT模式下是需要本地事务提交才会像TC注册分支事务吗?

展开
收起
fuxixi 2022-07-04 12:27:07 523 分享 版权
阿里云 AI 助理回答

在Seata的AT模式下,事务流程遵循以下步骤:

  1. 全局事务开始:应用通过Transaction Manager(TM)向Transaction Coordinator(TC)请求开启一个全局事务,TC生成一个全局唯一的XID。

  2. XID传播:该XID会在微服务间的调用链路中传播。

  3. 本地事务执行与分支注册:当业务方法执行到数据访问层时,Resource Manager(RM)会拦截SQL操作,并在本地事务开始之前先向TC注册分支事务,此时会携带XID。这意味着在本地事务实际执行之前,分支事务信息就已经在TC中记录了。

  4. 本地事务提交尝试:RM在执行SQL操作后,如果本地事务提交成功,它会向TC报告分支事务的准备状态(Prepared),表示该分支已准备好提交。

  5. 全局提交或回滚决策:TM根据业务逻辑决定是否提交全局事务,并向TC发送相应的指令(Commit或Rollback)。

  6. 事务完成:TC根据TM的决策,调度所有分支事务进行最终的提交或回滚操作。

综上所述,在AT模式下,本地事务并非必须提交后才向TC注册分支事务。实际上,是在本地事务执行前,通过RM向TC注册分支事务。这样设计是为了确保即使本地事务因故未提交或回滚,TC也能够拥有足够的信息来管理全局事务的生命周期,保证数据一致性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

为企业提供高效、稳定、易扩展的中间件产品。

收录在圈子:
+ 订阅
阿里云中间件主要有包含这么几个: 分布式关系型数据库DRDS_水平拆分 做数据库扩展性的 、消息队列MQ 是做消息的中间件、企业级分布式应用服务EDAS 做分布式服务的、还有一些其他的中间件,比如配置服务、缓存等等。
还有其他疑问?
咨询AI助理