面试题答案
一键面试-
Saga模式简介: Saga模式是一种用于管理分布式事务的方法,它将一个大的业务事务拆分成多个子事务,每个子事务都有对应的正向操作和补偿操作。当其中一个子事务出现异常时,会按照一定顺序调用已执行子事务的补偿操作来进行回滚。
-
结合订单发货流程说明回滚: 假设订单发货流程包含以下子事务:
- 子事务1:订单状态更新为“已发货”:正向操作是将订单在订单系统中的状态从“待发货”更新为“已发货”。补偿操作则是将订单状态从“已发货”更新回“待发货”。
- 子事务2:库存扣减:正向操作是在库存系统中扣减相应商品的库存数量。补偿操作是将扣减的库存数量加回去。
- 子事务3:物流单生成并推送至物流系统:正向操作是在物流系统生成物流单并关联订单。补偿操作是在物流系统中删除该物流单(如果允许删除且符合业务规则)。
当子事务2(库存扣减)出现异常时,回滚流程如下: - 首先调用子事务1的补偿操作,将订单状态从“已发货”更新回“待发货”,恢复订单原始状态。 - 然后尝试对已经执行的子事务3(物流单生成并推送至物流系统)进行补偿操作,删除在物流系统生成的物流单,避免物流系统产生无效物流信息。
这样通过依次调用已执行子事务的补偿操作,实现整个Saga流程的回滚,确保业务数据的一致性和完整性。