跳转至

电商下单成功,微服务完整流程

一、流程总览

用户 -> 网关 -> 订单服务 -> 库存服务
                  ↓            ↓
               支付服务     MQ
                  ↓            ↓
               账户服务    物流服务

二、详细步骤

1. 用户提交订单

  • 网关鉴权、限流。
  • 订单服务接收请求。

2. 参数校验

  • 商品、地址、优惠券校验。
  • 防重复提交(幂等 token)。

3. 库存校验与扣减

  • 查 Redis 预扣库存。
  • 失败则提示"库存不足"。

4. 创建订单

  • 订单服务写订单表(状态:待支付)。
  • 发送"订单已创建"事件到 MQ。

5. 支付

  • 用户跳支付页。
  • 支付服务调用第三方支付。
  • 支付成功回调。

6. 更新订单状态

  • 订单服务更新状态为"已支付"。
  • 发送"订单已支付"事件。

7. 后续异步动作

MQ 消费者:

  • 扣减 DB 真实库存。
  • 增加用户积分。
  • 通知物流发货。
  • 发送短信通知。
  • 清购物车。

8. 失败处理

  • 支付失败:订单关闭,回滚库存。
  • 库存扣减失败:订单回滚。
  • 用分布式事务 / 本地消息表保证最终一致。

三、关键技术点

  • 幂等:订单接口防重。
  • 分布式事务:本地消息表 / TCC。
  • 异步:积分、物流走 MQ。
  • 缓存:商品信息走 Redis。
  • 限流:下单接口保护。

四、时序图

sequenceDiagram
    participant U as 用户
    participant G as 网关
    participant O as 订单
    participant I as 库存
    participant P as 支付
    participant MQ

    U->>G: 提交订单
    G->>O: 创建订单
    O->>I: 预扣库存
    I-->>O: 成功
    O-->>U: 订单号
    U->>P: 支付
    P-->>O: 支付成功回调
    O->>MQ: 订单已支付事件
    MQ-->>I: 扣真实库存
    MQ-->>U: 通知发货/积分

面试加分

  • 答出"同步核心流程 + 异步非核心流程"是关键。
  • 分布式事务用本地消息表,不要强求强一致。