秒杀逻辑
2019-06-26 17:34:20 7 举报
秒杀逻辑实现
作者其他创作
大纲/内容
成功
是
排队标记是否为空
失败
异步下单成功
页面定时从后台获取订单信息
redis根据产品id原子性自增还原库存
秒杀成功
订单创建失败
用户下单
miaosha-stock-productId
用户是否已秒杀到商品
设置zk商品售完标记为true,通知其他节点设置JVM商品库存标记为true
JVM缓存标志
JVM商品库存标记是否存在
移除JVM商品库存售完标记
异步下单失败
类似分布式锁:setNx,有失效时间
商品已抢完
设置JVM商品库存售完标记
MQ异步下单
秒杀失败
不为空 返回0
商品数据未准备好
存在
操作失败
设置用户排队标记
排队中,请耐心等待
线程池创建订单
订单是否创建成功
设置失败
miaosha-order-wait-accountId-productId
get失败,返回-1
1、用户登录才能秒杀2、用户填写收货地址才能参与秒杀
miaosha-order-accountId-productId
修改zk售完标记为false,通知其他节点设置JVM商品库存标记为false
设置成功
Redis Key标志
用户已参与秒杀
redis设置成功订单信息
不存在
库存是否小于0
清空redis排队标记
否
get失败
操作成功
redis减库存操作
页面显示:排队中
一般性校验
get到成功订单
get成功
秒杀逻辑
查看秒杀商品订单是否创建成功
0 条评论
下一页