秒杀接口采用异步下单
这是秒杀接口的伪代码
1) 判断用户是否重复秒杀 if(判断redis中该用户秒杀结果){ sout(请不要重复秒杀) return } 2)redis预减库存 if(判断redis中该用户预减库存标识){ sout(正在排队中) return }else{ redis预减库存 设置该用户的预减库存标识 } 3)封装请求信息,并发送到消息队列 4)从队列中取出消息 mysql中减库存,生成订单,将订单信息写到redis中,并把redis中该用户预减库存标识删除 5)前端通过ajax每隔1秒钟查询redis中的秒杀结果
在部署单个tomcat时,经过压测,当并发量为3000时,QPS达到了2000多。
可以采用的扩展方法有:tomcat部署集群,nginx限流等。