You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分布式系统服务间通信中断处理:电商与仓库场景常用算法有哪些?

应对分布式场景下两军问题类挑战的常用方法

以下是实际业务中解决这类分布式一致性问题的常用方案:

  • 幂等性设计
    给每笔库存扣减请求分配唯一的请求ID,仓库服务收到请求时先校验该ID的处理记录:如果已经处理过,直接返回成功响应;未处理则执行扣减。这样商店在重试请求时,既不会重复扣减库存,还能获取到之前的处理结果。

  • 消息队列+最终一致性
    商店完成客户支付后,把库存扣减指令存入本地持久化的消息队列,先给客户返回“支付成功,等待发货”的反馈。仓库服务持续监听队列,处理完库存扣减后,再发送发货确认消息给商店。商店收到消息后更新订单状态,若中间出现失败,队列会自动重试,直到双方状态最终对齐。

  • 状态查询补偿机制
    商店设置定时任务,针对未确认状态的订单,主动向仓库发起库存扣减状态查询。仓库根据订单号或请求ID返回结果:如果库存已扣减,商店就更新订单为发货状态并通知客户;如果未处理,就重新发起扣减请求。

  • TCC分布式事务协议
    采用Try-Confirm-Cancel三段式流程:

    • Try阶段:仓库锁定对应数量的库存,确保后续可执行扣减;
    • Confirm阶段:商店收到Try成功的响应后,触发Confirm操作,仓库正式扣减库存;若未收到响应,商店可重试Confirm或触发Cancel;
    • Cancel阶段:若订单取消或超时,仓库释放锁定的库存。
      通过这种补偿机制保证事务最终一致。
  • 本地事件表+重试机制
    商店发起库存扣减前,先把“待扣减库存”的订单事件写入本地数据库的事件表。之后发起请求,若请求失败,定时任务会扫描事件表中的未完成事件,不断重试请求,直到收到仓库的响应,再更新事件状态为完成。

内容的提问来源于stack exchange,提问作者Andrei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:26:10