秒杀场景一般会在电商网站举行的一些活动或节假日在12306网站上抢票时遇到,对于电商网站中的一些稀缺或特价商品,电商网站一般会在特定的时间对其进行限量销售,大量用户会因为这些商品的特殊性进行抢购。
- 秒杀时大量用户会在同一时间同时进行抢购,网站瞬间流量激增。
- 秒杀一般都是访问请求大于商品库存,只有部分请求能够秒杀成功。
- 秒杀业务流程较为简单,一般都是下单减库存。
秒杀系统我们应该如何去设置才比较合理呢?
前面讲到了秒杀的场景,秒杀时会有大量请求会在同一时间同时进行抢购,假如有100w个请求来秒杀这件商品,全部都去访问我们的后台秒杀系统,那是不可能的,秒杀系统可能在这么高并发的情况下瞬间就宕机了,那么这个问题怎么解决呢。
我们秒杀系统中最脆弱的地方在哪里,肯定是在数据库啊,所以我们需要把请求拦截在数据库之外,只让数据库处理他力所能及的请求,甚至只处理与库存相等的请求数。
那这么多请求我们应该如何去处理呢?
首先想到的肯定是客户端。
先举个例子,在抢购的前几分钟,大量请求肯定会提前进入到我们的抢购页面,准备抢购。抢购页面,我们肯定是提前准备好数据,放在redis中。在抢购的前几秒大家肯定都是疯狂点抢购按钮的,点一次就向后台