一个网站需要多长时间,免费创建企业网站,广告投放系统源码,怎样做自己的销售网站分布式事务面试题讲解 一、问题背景与解决方案概述
因微服务项目涉及远程调用可能引发分布式事务问题#xff0c;需解决。主流解决方案有阿里 Seata 框架#xff08;含 XA、AT、TCC 模式#xff09;和 MQ。
二、Seata 框架关键角色 事务协调者#xff08;TC#xff09;需解决。主流解决方案有阿里 Seata 框架含 XA、AT、TCC 模式和 MQ。
二、Seata 框架关键角色 事务协调者TC维护全局和分支事务状态协调提交或回滚需单独部署。事务管理器TM定义全局事务范围负责开启、提交等操作。资源管理器RM每个微服务即一个 RM代表分支事务需向 TC 注册并报告状态。
三、Seata 框架 XA 模式 流程TM 开启全局事务后调用分支事务注册到 TCRM 执行业务 SQL 但不提交先报告状态给 TCTM 依据 TC 反馈的分支事务状态决定提交或回滚。特点保证数据强一致性属 CP 模式但性能差因分支事务需相互等待。
四、Seata 框架 AT 模式 流程TM 开启全局事务并调用分支事务注册到 TC分支事务执行并提交业务 SQL同时记录更新前后快照到 undo log报告状态给 TCTM 提交或回滚全局事务TC 检查状态成功则通知分支事务删除 undo log失败则依据 undo log 逆向恢复数据。特点性能较好为 AP 模式是官方推荐且开发常用方式。
五、Seata 框架 TCC 模式 流程基于 try资源检查或预留、confirm完成资源操作、cancel预留资源释放三个阶段。TM 开启全局事务并调用分支事务注册到 TC分支事务进行资源预留操作后报告状态TM 根据 TC 检查结果提交执行 confirm 操作或回滚执行 cancel 操作。特点性能较高属 AP 模式但代码耦合度高需手动编写代码维护三个阶段。
六、MQ 解决分布式事务方案 流程以借呗借钱为例借呗审核通过后生成借款单并向 MQ 发消息通知支付宝转账需确保相关操作在同一事务内运行否则不发送消息。特点异步操作性能好但实时性差保证数据最终一致性适用于对数据强一致性要求不高的场景若支付宝增加余额出现异常通常需人工介入。
七、不同方案适用场景与面试应对
适用场景XA 模式和 TCC 模式常用于银行业务AT 模式和 MQ 方式多用于互联网业务。