创建订单幂等问题
订单号生成规则
下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(加上随机码随机后的数字)+用户user id后4位
淘宝订单后四位取用户id跟数据库分库有关查询,跟业务无关
订单号按上面直接生成,生成后就落库,如果发现订单号冲突就捕获异常再生成一次。
- 电子商务网站中订单号设计有什么规则和依据吗? - 知乎
- 一个基于多次字典迭代的订单号加密方案(含代码) - V2EX
下单时调价问题
《后端存储实战课》极客时间
下单的时候,生成商品价格,价格版本等的快照数据,结算时,和库里的价格版本信息对比,一致则进入支付,不一致则执行价格异常调整策略
下单的时候把请求的参数以及当前的价格做数据签名,后端接收到请求后拿数据库的数据校验签名
生成商品快照 -> 验价 -> save(保存order ,保存快照)
事务锁库存不行?锁库存,锁优惠券。然后再计算价格。再对比价格。一致则提交订单。