电商秒杀项目设计方案
项目启动时将商品库存信息缓存到redis
当前用户秒杀商品时,首先去redis查询用户是否秒杀商品,没秒杀过,再去数据库查询,若该用户已秒杀过商品则不能,在参与秒杀同样商品。
若用户没有参与过秒杀商品,则去redis缓存预减库存,库存数量少于0,则返回错误信息。
预减库存成功后,将订单任务发送到MQ。
MQ收到订单消息后,到数据库预减库存。
若数据库库存减成功,生成订单和秒杀订单并将订单信息缓存到redis,否则将错误信息缓存到数据库里。
前端通过用户id和商品id,轮询查看秒杀结果,后端先去redis查询订单信息不存在,就去数据库查询,查询成功则返回秒杀结果信息。
若缓存和数据库都查询失败,则继续去redis查询是否有秒杀订单失败信息比如库存不足等信息,若存在则返回秒杀失败,否则返回该订单下单正在排队中。
接口
1