面试题答案
一键面试- AT模式:
- 适用场景:适用于大多数微服务架构下的事务场景,尤其是对业务侵入性要求较低的场景。当各微服务之间调用涉及数据库操作,且希望在不改变业务逻辑太多的情况下实现分布式事务时,AT模式非常合适。例如电商系统中的下单、库存扣减、支付等操作,通过AT模式可以在不同数据库间保证事务一致性,业务代码只需关注自身业务逻辑,无需额外编写复杂的事务控制代码。
- TCC模式:
- 适用场景:适用于对性能要求较高,且业务场景需要对资源进行预留和确认的场景。比如在一些高并发的场景下,涉及资金、库存等关键资源的操作,需要对资源进行初步锁定(Try阶段),再根据最终结果进行确认或取消(Confirm/Cancel阶段)。例如航空售票系统,在用户下单时先锁定机票库存(Try),支付成功后确认扣减库存(Confirm),若支付失败则取消库存锁定(Cancel)。
- Saga模式:
- 适用场景:适用于长事务场景,各子事务执行时间较长且可能需要异步执行的情况。当业务流程由多个可补偿的步骤组成,并且希望每个步骤都能独立执行和回滚时,Saga模式较为适用。例如在一个复杂的订单处理流程中,涉及订单创建、物流分配、财务结算等多个环节,若其中某个环节出现问题,可以通过执行相应的补偿操作来恢复到事务开始前的状态。
- XA模式:
- 适用场景:适用于传统的关系型数据库场景,且数据库本身支持XA协议。当对数据一致性要求极高,并且参与事务的微服务都使用支持XA协议的数据库时,XA模式能确保严格的事务一致性。例如银行系统中的转账操作,需要在不同账户间保证资金的准确转移,XA模式能保证在多个数据库操作间的原子性。