背景
在电商系统中买商品过程,先加入购物车,然后选中商品,点击结算,即会进入待支付状态,后续支付。
过程需要检验库存是否足够,保证库存不被超卖。
场景一:买家需要购买数量可以多件
场景二:秒杀活动,到时间点只能购买一件
目的
防止相同用户重复下单
检查库存准确数量
防止扣错库存数量
扣库存时性能效率提升、不阻塞用户
点赞再看,关注公众号:【地藏思维】给大家分享互联网场景设计与架构设计方案
掘金:地藏Kelvin https://juejin.im/user/5d67da8d6fb9a06aff5e85f7
主要解决手段
利用redis的incr、decr的原子性做操作
redis的lpush、rpop的原子性做操作,但是这个只能一个一个的扣,但不能原子地同时扣多个
sql乐观锁
交互流程
主要环节:购物车->结清->支付
本文讲述结清时,扣库存环节,分布式系统产生订单环节后续文章再详细分析。
备注:挺推荐使用https://www.processon.com/在线来做流程图的
一、防止重复
利用redis分布式锁
用分布式锁,是