SpringCloud面试题, Seata 支持哪些模式的分布式事务?
SpringCloud面试题, Seata 支持哪些模式的分布式事务?
QA
Step 1
Q:: 什么是Seata?它在分布式事务中扮演什么角色?
A:: Seata (Simple Extensible Autonomous Transaction Architecture) 是一款开源的分布式事务解决方案,主要用于解决微服务架构下的数据一致性问题。Seata 提供了对全局事务的管理,并通过协调多个参与者(分支事务)来保证事务的最终一致性。它的主要组成部分包括:事务协调器 (TC)、事务管理器 (TM)、以及资源管理器 (RM)
。
Step 2
Q:: Seata 支持哪些模式的分布式事务?
A:: Seata 主要支持以下几种模式的分布式事务:1. AT 模式(Automatic Transaction):自动化的分布式事务解决方案,基于二阶段提交协议。2. TCC 模式(Try-Confirm-Cancel):手动编排的分布式事务模式,允许开发者对每个操作定义 try、confirm、cancel 方法。3. SAGA 模式:长事务管理方案,适用于长时间业务操作,允许对每个步骤定义补偿机制。4.
XA 模式:基于 XA 协议的强一致性事务解决方案,适用于需要严格事务控制的场景。
Step 3
Q:: Seata 的 AT 模式是如何工作的?
A:: Seata 的 AT 模式基于两阶段提交协议(2
PC)。在第一阶段(准备阶段),TM 会请求 RM 进行事务性操作并生成锁定数据的状态快照。数据实际未提交,只是在本地生成回滚日志。第二阶段,如果事务成功,TM 会通知 RM 提交数据;如果事务失败,RM 会使用第一阶段生成的快照进行回滚操作。这种模式对开发者友好,几乎无需修改业务代码。
Step 4
Q:: Seata 的 TCC 模式与 AT 模式有什么区别?
A:: TCC 模式和 AT 模式的主要区别在于灵活性和业务控制。TCC 模式允许开发者定义 Try (预留资源)、Confirm (确认提交)、Cancel (回滚)
三个操作,因此更适合复杂的业务场景,特别是对事务的控制要求较高的场景。而 AT 模式则更为自动化,开发者几乎无需关注事务的具体执行细节。
Step 5
Q:: 在使用 Seata 时如何保证高可用性?
A:: 保证 Seata 高可用性可以通过以下方法:1. 部署集群模式的 TC(事务协调器),以避免单点故障。2. 数据库的高可用性方案,如主从复制和读写分离,以保证 RM 的可用性。3. 通过分布式缓存(如 Redis)或消息队列(如 Kafka)来缓解并发压力和延迟问题。4.
对 TC 进行健康检查和自动切换,以提高系统的容灾能力。