SpringCloud面试题, 什么是 Seata?谈谈建立对于 Seata 的理解?
SpringCloud面试题, 什么是 Seata?谈谈建立对于 Seata 的理解?
QA
Step 1
Q:: 什么是 Seata?
A:: Seata 是一个开源的分布式事务解决方案,它提供了高效且易于使用的分布式事务服务。Seata 最早由阿里巴巴开源,旨在解决微服务架构下分布式事务的处理问题。Seata 主要包括三部分:Transaction Coordinator (TC),Transaction Manager (TM) 和 Resource Manager (RM)。它支持 AT(自动提交模式)、TCC(Try-Confirm-
Cancel 模式)等事务模型。
Step 2
Q:: Seata 的核心组件有哪些?
A:: Seata 的核心组件包括:1) Transaction Coordinator (TC): 负责维护全局事务的生命周期,协调各参与者的提交或回滚。2) Transaction Manager (TM): 负责开启全局事务,提交和回滚全局事务。3) Resource Manager (RM):
负责管理分支事务的资源,处理分支事务的提交和回滚操作。
Step 3
Q:: Seata 的 AT 模式是什么?
A:: AT(Automatic Transaction)模式是 Seata 中最常用的分布式事务模式。它通过对数据库操作的代理,将业务代码中的本地事务改造为全局事务。在 AT 模式下,Seata 自动生成并管理事务日志,确保事务的一致性。AT 模式的优点是对业务代码的侵入性低,性能损耗小。
Step 4
Q:: TCC 模式和 AT 模式的区别是什么?
A:: TCC(Try-Confirm-
Cancel)模式是一种更加灵活的事务控制方式,它要求开发者手动定义事务的 Try、Confirm 和 Cancel 三个阶段。而 AT 模式则由 Seata 自动管理事务,无需开发者手动定义事务的各个阶段。TCC 模式适用于对事务控制要求较高的场景,但对开发者的要求也更高。
Step 5
Q:: 如何配置和部署 Seata?
A:: 配置和部署 Seata 主要分为两部分:服务端和客户端。服务端包括部署 Transaction Coordinator (TC)
,通常需要配置数据库来保存事务日志。客户端需要在微服务中集成 Seata 客户端 SDK,配置 TM 和 RM 的相关参数。此外,还需要在配置中心(如 Nacos)中配置 Seata 的相关信息。
Step 6
Q:: Seata 如何保证数据的一致性?
A:: Seata 通过全局事务和分支事务的协调机制保证数据的一致性。在分布式事务中,每个分支事务都先执行预操作(如 Try 阶段),在全局事务确认提交时(Confirm 阶段),各个分支事务真正提交;在全局事务回滚时,各个分支事务执行回滚操作(Cancel 阶段)。这种机制可以保证即使在网络故障或服务崩溃的情况下,数据的一致性依然能够得到保障。