创单是交易的起点,也是复杂度最高的一条链路。 它需要在一次请求里完成多个外部系统的协调, 同时保证数据一致性,并且具备完整的失败回滚能力。


一、创单链路的职责边界

在深入创单之前,先明确一件事:创单链路不做价格计算

价格计算(商品总价、运费、优惠金额、各类分摊)由上游结算页营销域在创单请求发起之前完成。创单链路接收的,是一个已经算好价格的下单请求

创单链路的职责

  1. 校验下单请求的合法性
  2. 操作各类资产(库存冻结预占;优惠券、红包等直接扣减)
  3. 将订单数据持久化到数据库
  4. 启动超时倒计时

不在创单链路里做的


二、创单流程设计

2.1 完整创单流程

创单完整流程.png

2.2 资产操作的顺序与回补

资产操作的调用顺序,遵循一个原则:失败代价小的先做,快速感知失败