MST

星途 面试题库

面试题:分布式系统中Saga模式在电商库存管理场景的应用

在电商分布式系统的库存管理场景下,简述Saga模式如何处理商品库存扣减以及订单状态更新的一致性问题,假设存在多个微服务协同工作,如订单服务、库存服务等。
20.9万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试
  1. Saga模式简介
    • Saga模式是一种用于管理分布式事务的方法,它将一个大的分布式事务分解为多个本地事务,通过协调这些本地事务的执行来保证最终一致性。
  2. 商品库存扣减与订单状态更新流程
    • 正向流程
      • 当用户下单时,订单服务首先创建一个订单记录,并将订单状态设置为“待支付”。这是订单服务的本地事务。
      • 订单服务调用库存服务的接口,请求扣减商品库存。库存服务执行库存扣减操作,如果库存足够,则扣减成功并返回成功响应,这是库存服务的本地事务。
      • 订单服务接收到库存服务的成功响应后,将订单状态更新为“已支付(假设下单即支付成功简化场景)”或“已确认(等待支付确认场景)”,完成整个正向流程。
    • 补偿流程
      • 如果在正向流程中,库存服务扣减库存失败(比如库存不足),库存服务会抛出异常。订单服务捕获到这个异常后,启动补偿流程。
      • 订单服务将已创建的订单记录状态更新为“已取消”,这是订单服务的补偿本地事务。
      • 如果之前库存服务已经成功扣减库存,但后续订单服务更新订单状态失败,库存服务也需要执行补偿操作,即增加已扣减的库存,这是库存服务的补偿本地事务。
  3. Saga协调器
    • 可以引入一个Saga协调器来管理整个流程。协调器可以通过消息队列等方式,按顺序发送消息给订单服务和库存服务,触发正向或补偿事务。例如,协调器先发送消息给订单服务创建订单,订单服务成功后发送消息给库存服务扣减库存,若库存服务失败,协调器发送补偿消息给订单服务取消订单。
  4. 日志记录
    • 每个微服务在执行本地事务和补偿事务时,都要记录详细的日志。这些日志可以用于故障排查、恢复以及审计。比如订单服务记录订单创建、状态更新、取消等操作的时间、参数等信息,库存服务记录库存扣减、增加等操作的日志。通过这些日志,在系统出现问题时可以快速定位并恢复到正确状态。