做者:李智慧
连接:https://www.zhihu.com/question/20496392/answer/17272255
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
1. 秒杀活动的技术挑战
假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统须要面对的技术挑战有:
对现有网站业务形成冲击
秒杀活动只是网站营销的一个附加活动,这个活动具备时间短,并发访问量大的特色,若是和网站原有应用部署在一块儿,必然会对现有业务形成冲击,稍有不慎可能致使整个网站瘫痪。
高并发下的应用、数据库负载
用户在秒杀开始前,经过不停的刷新浏览器页面以保证不会错过秒杀,这些请求若是按照通常的网站应用架构,访问应用服务器、链接数据库,会对应用服务器、数据库服务器形成极大的负载压力。
忽然增长的网络及服务器带宽
假设商品页面大小200K(主要是商品图片大小),那么须要的网络和服务器带宽是2G(200K×10,000),这些网络带宽是由于秒杀活动新增的,超过网站平时使用的带宽。
直接下单
秒杀的游戏规则是到了秒杀时间才能开始对商品下单购买,在此时间点以前,只能浏览商品信息,不能下单。而下单页面也是一个普通的URL,若是获得这个URL,不用等到秒杀开始就能够下单了。
2. 秒杀系统的应对策略
为了应对上述挑战,秒杀系统的策略有:
秒杀系统独立部署
为了不由于秒杀活动的高并发访问而拖垮整个网站,使整个网站没必要面对蜂拥而来的用户访问,将秒杀系统独立部署,若是须要,还可使用独立的域名,以和网站彻底隔离,即便秒杀系统崩溃了,也不会对网站形成任何影响。
秒杀商品页面静态化
秒杀商品页面从新设计,不使用网站原来的商品详情页面,页面内容静态化:商品描述,商品参数,成交记录,用户评价所有写入一个静态页面,用户请求不须要通过应用服务器的业务逻辑处理,也不须要访问数据库。因此秒杀商品服务不须要部署动态的Web服务器、数据库服务器。
租借秒杀活动网络带宽
对于由于秒杀新增的网络带宽,必须和运营商从新购买或者租借。为了减轻网站服务器的压力,须要将秒杀商品页面缓存在CDN,一样须要和CDN服务商临时租借新增的出口带宽。
动态生成随机下单页面
URL 为了不用户直接访问下单页面URL,须要将该URL动态化,即便秒杀系统的开发者也没法在秒杀开始前访问下单页面的URL。办法是在下单页面URL加入由服务器端生成的随机数做为参数,在秒杀开始的时候才能获得。