电商下单成功,微服务完整流程¶
一、流程总览¶
二、详细步骤¶
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: 通知发货/积分
面试加分
- 答出"同步核心流程 + 异步非核心流程"是关键。
- 分布式事务用本地消息表,不要强求强一致。