设计思路:
1.商品入库
2.把商品的ID存进redis中
3.当秒杀开始,用户的请求到达的时候,先判断这个商品是否已经被秒杀,如果被秒杀返回,秒杀失败。如果存在,判断,库存大于本次购买量:扣减redis中的库存、并且将订单信息推送到MQ;库存小于本次购买量:直接返回、数量不足。进入rabbitmq队列。并在redis中把商品的ID(预处理)移除。
4.队列去处理订单,更新数据库库存(乐观锁),生成订单信息。异步通知用户购买结果。
5.客户预秒杀的商品如果没有付款成功,则重新把数据库中的商品信息存在redis中。
6,如果使用分布式,则要把用户的信息进行session共享(放入redis中)。
来源:oschina
链接:https://my.oschina.net/u/4167465/blog/3212535
