淘宝抢购秒杀技巧 淘宝秒杀技巧问题


秒杀活动是指网络商家为促销等目的组织或网上限时抢购活动,这种活动具有瞬时并发量大、库存量少和业务逻辑简单等特点 。设计一个秒杀系统需要考虑的因素很多,比如对现有业务的影响、网络带宽消耗以及超卖等因素 。本文会讨论秒杀系统的各个环节可能存在的问题以及解决方案 。
秒杀系统
傻瓜式秒杀系统
秒杀系统的核心难点是并发量,如果不考虑并发问题,那么我们可以用如下图所示的简单的系统结构来实现秒杀系统,用户只有两个简单操作:刷新界面和秒杀按钮,服务端也只有两个服务接口:返回秒杀界面和处理秒杀逻辑 。假设本文中秒杀商品有100个,参与秒杀的用户有100w个 。


淘宝抢购秒杀技巧 淘宝秒杀技巧问题

文章插图

但是在高并发场景下,这个系统会有很多问题,我们全文会针对这些问题——进行优化
1.大量用户同时刷新界面,会对服务器的带宽造成非常大的压力;
2.用户在秒杀前后可以多次重复点击按钮,造成很多不必要的请求;
3.用户可以通过脚本进行抢购,并且抢购成功率非常高;
4.服务端承受高并发请求,会出现响应过慢或失败等情况;
5.数据库承受高并发请求,会导致连接池耗尽和响应缓慢;
6.如果数据库更新设计得不合理,可能会出现超卖的情况;
秒杀界面CDN
秒杀开始之前,用户都会请求秒杀界面,有的用户甚至会不断地刷新秒杀界面,100W用户可能产生上千万次秒杀界面请求 。秒杀界面往往包含很多静态资源,如果这些界面请求全部通过服务器获取,会造成大量的带宽消耗,甚至造成秒杀还没开始服务器就崩了的情况 。对于网页这种静态资源的并发访问,业内早就有成熟的解决方案:内容分发网络(CDN) 。我们可以在秒杀开始前,预先把网页的静态资源存放在CDN节点,用户在刷新界面时直接从CDN获取静态资源,从而降低刷新秒杀界面对服务器造成的压力 。添加了CDN服务之后,秒杀界面有大量用户同时访问和刷新并不会给服务端带来多大压力 。


淘宝抢购秒杀技巧 淘宝秒杀技巧问题

文章插图

秒杀按钮优化
我们知道,秒杀系统往往会有一个秒杀按钮,如果不对按钮进行限制,可能存在以下问题:用户在秒杀开始前点击按钮,造成很多无用的请求;用户在秒杀开始后多次点击按钮,造成很多重复请求;所以我们可以对按钮做一些限制:秒杀开始前按钮不可用,用户点击一次秒杀按钮后,按钮也进入不可用状态 。这种方式无法限制通过脚本请求后端的情况,但是可以限制正常用户的多次无效点击,大大降低请求量 。


淘宝抢购秒杀技巧 淘宝秒杀技巧问题

文章插图

秒杀链接优化
普通情况下,用户在点击秒杀按钮的时候,前端会请求一个固定的URL,这个URL可以在前端界面查到 。对于普通不懂技术的用户来说,这没有什么问题,如果用户稍微懂点Http协议,就可以在秒杀开始前拿到URL,在秒杀开始前或开始的毫秒级时间内请求秒杀链接,不仅会给服务端带来很大的压力,还会造成不公平现象:商品都被开脚本的人抢走了 。
为了避免这种现象,我们可以将URL动态化,即使秒杀系统的开发人员也无法在知晓在秒杀开始时的URL 。具体实现方法是在获取秒杀URL的接口中,返回一个服务器端生成的随机数,并在下单URL中传递该参数完成下单 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。