开发一个电商库存系统时,我们最担心的就是高并发和防超卖了
电商库存系统场景
前提:分布式系统,高并发
商品A只有100库存,现在有1000或者更多的用户购买。如何保证商品库存在高并发的场景下是安全的
高并发场景下,商品展示页上面的信息,除了库存的其他信息属于静态数据,静态数据是可以缓存的。动态数据只有库存
电商项目对并发数据处理要求较高
预期结果:1、不超卖;2、不少卖;3、下单响应快;4、用户体验好
设计思路
1、下单时生成订单,减库存,同时记录库存流水,在这里需要先进行库存操作再生成订单数据,这样库存修改成功,响应超时的特殊情况也可以通过第四步定时校验库存流水来完成最终一致性
2、支付成功删除库存流水,处理完成删除可以让库存流水数据表数据量少,易于维护
3、未支付取消订单,回滚库存+删除库存流水
4、定时校验库存流水,结合订单状态进行响应处理,保证最终一致性
(退单有单独的库存流水,申请退单插入流水,退单完成删除流水+回滚库存)
设计流程图
扣减库存时机方案
- 方案一:加购时减库存
- 方案二:确认订单页减库存