MST

星途 面试题库

面试题:分布式系统中Saga模式补偿机制的基本原理

请阐述分布式系统中Saga模式补偿机制的基本原理是什么?并举例说明在一个简单的电商下单场景(包含库存扣减、订单创建、支付等步骤)中,如何运用Saga模式的补偿机制来保证数据一致性。
45.0万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

Saga模式补偿机制基本原理

  1. 事务分拆:将一个长事务分解为多个本地短事务,每个短事务都有明确的业务语义和边界。
  2. 正向执行:按照业务流程依次执行这些本地短事务,完成整体业务功能。
  3. 补偿机制:如果其中某个本地短事务执行失败,Saga模式会调用已执行成功的短事务的补偿操作,将系统状态恢复到事务开始前,以此来保证数据的一致性。这些补偿操作通常是与正向操作相反的逻辑,例如正向操作是增加库存,补偿操作就是减少库存。

电商下单场景运用Saga模式补偿机制保证数据一致性示例

  1. 业务步骤
    • 库存扣减:检查库存并扣减相应商品数量。
    • 订单创建:在订单系统中创建新订单记录。
    • 支付:调用支付系统完成支付流程。
  2. 正向执行
    • 首先执行库存扣减操作,假设库存足够,扣除相应商品数量。
    • 接着执行订单创建操作,在订单数据库中插入一条新订单记录。
    • 最后执行支付操作,向支付系统发起支付请求。
  3. 补偿机制应用
    • 支付失败:如果支付环节出现异常,支付系统返回失败。此时需要调用订单创建的补偿操作,即删除刚刚创建的订单记录;同时调用库存扣减的补偿操作,将已扣减的库存数量加回去,使库存和订单状态恢复到下单前的状态。
    • 订单创建失败:若订单创建失败,在这种情况下支付操作还未执行,只需要调用库存扣减的补偿操作,恢复库存数量,确保库存数据的一致性。