SpringCloud面试题, Seata 的事务回滚是怎么实现的?
SpringCloud面试题, Seata 的事务回滚是怎么实现的?
QA
Step 1
Q:: Seata 的事务回滚是如何实现的?
A:: Seata 通过 TCC(Try-Confirm-
Cancel)模式、AT(Automatic Transaction)模式等机制实现分布式事务的回滚。在 AT 模式下,Seata 拦截业务 SQL 语句,将其转化为相应的二阶段事务操作。在提交阶段,如果出错,Seata 会自动执行回滚操作,恢复数据至初始状态。通过全局事务 ID 来标识和管理每一个事务操作,从而确保分布式环境下的事务一致性。
Step 2
Q:: TCC 模式的工作原理是什么?
A:: TCC 模式分为三个阶段:Try 阶段预留资源,Confirm 阶段提交事务,Cancel 阶段回滚事务。在 Try 阶段,系统会尝试执行操作并预留必要的资源;在 Confirm 阶段,如果所有的操作都成功完成,系统会正式提交事务;在 Cancel 阶段,如果有任何操作失败,系统会回滚所有的操作,释放预留的资源。TCC 提供了更细粒度的事务控制,适用于需要高性能和灵活性的分布式事务场景。
Step 3
Q:: AT 模式与 TCC 模式的区别是什么?
A:: AT 模式主要针对业务透明化设计,开发者不需要手动编写事务代码,Seata 自动将 SQL 语句转换为分支事务操作。而 TCC 模式则要求开发者明确设计每一个操作的 Try、Confirm 和 Cancel 方法,具有更高的灵活性和控制力。AT 模式适合简单场景,开发成本低;TCC 模式适合复杂的业务场景,能够提供更高的性能和灵活性。
Step 4
Q:: Seata 中的全局事务协调器(TC)的作用是什么?
A:: 全局事务协调器(Transaction Coordinator,
TC)负责协调和管理分布式事务的生命周期。TC 通过维护全局事务的状态来确保事务的原子性和一致性。它接收来自事务管理器(TM)和资源管理器(RM)的请求,并决定是否提交或回滚全局事务。TC 是 Seata 的核心组件,确保在分布式系统中多个节点之间的事务能够正确执行。