面试题答案
一键面试1. 技术方案
TCC(Try - Confirm - Cancel)
- 原理:将事务处理过程分为三个阶段。Try阶段尝试预留业务资源;Confirm阶段确认执行业务操作,提交预留资源;Cancel阶段在Try成功但Confirm失败时,释放预留资源。
- 优点:实现相对简单,适合高并发场景,对业务侵入性较高但可控。
- 示例:在订单和库存场景中,订单服务Try阶段创建订单记录并冻结金额,库存服务Try阶段冻结库存;Confirm阶段订单服务确认订单,库存服务扣减库存;若出现异常,Cancel阶段订单服务取消订单,库存服务解冻库存。
Saga
- 原理:将长事务分解为多个本地短事务,通过协调器按顺序依次执行。若某个本地事务失败,协调器会反向执行已成功的事务进行补偿。
- 优点:对业务侵入性低,适合业务流程复杂的场景。
- 示例:以电商业务为例,包括订单创建、库存扣减、物流分配等本地事务。当库存扣减失败时,协调器会调用订单取消事务进行补偿。
2. 实施挑战及应对策略
网络问题
- 挑战:分布式系统中网络不可靠,可能导致消息丢失、延迟,影响事务一致性。
- 应对策略:采用可靠的消息队列(如RabbitMQ、Kafka),设置合理的重试机制,对关键消息进行持久化。
业务补偿逻辑复杂
- 挑战:Saga模式下,业务补偿逻辑编写困难,且可能存在补偿顺序不当的问题。
- 应对策略:制定清晰的补偿逻辑设计规范,通过自动化工具生成部分补偿代码,进行充分的测试和模拟异常场景演练。
性能问题
- 挑战:TCC模式预留资源可能导致资源长时间锁定,Saga模式多次本地事务执行可能降低系统性能。
- 应对策略:优化资源预留策略,尽量缩短资源锁定时间;对Saga本地事务进行并行化处理,提高执行效率。
事务协调与监控
- 挑战:分布式事务涉及多个服务,难以实时监控事务状态,协调各服务难度大。
- 应对策略:构建统一的事务监控平台,记录事务执行日志,通过可视化界面展示事务状态;采用分布式追踪技术(如Spring Cloud Sleuth),便于排查问题。