1.秒杀系统独立部署
避免拖垮整个网站独立部署,可以使用独立的域名,使其完全隔离
2.秒杀商品页面静态化
重新设计秒杀商品页面,将商品描述、商品参数、成交记录和用户评价全部写入一个静态页面,秒杀商品服务不需要部署动态的Web服务器和数据库服务器。
3.租借秒杀活动网络带宽
为了减轻网站服务器的压力,需要将秒杀商品页面缓存在CDN,同样需要和CDN服务商临时租借新增的出口宽带
4.动态生成随机下单页面URL
避免用户直接访问下单页面URL,需要将URL动态化。办法是在下单页面URL加入由服务器端生成随机数作为参数,在秒杀开始的时候才能得到。
细节:
秒杀活动未开始下单按钮一直都是灰色不可点击,只有活动开始的时候才点亮,下单页面也尽可能简单,购买数量只能是一个且不可用修改,送货地址和付款方式都是用户默认的,没有默认也可以不填,允许等订单提交后修改,只有第一个提交的订单发送给网站的订单子系统,其余提交订单后看到秒杀结束页面
一。架构图
JavaScript脚本控制,在秒杀商品静态页面中加入一个JavaScript文件引用,改JavaScript文件中加入秒杀是否开始的标志和下单页面URL的随机数参数,当秒杀开始的时候生成一个新的JavaScript文件并被用户浏览器加载,控制秒杀商品的展示。这个JavaScript文件使用随机版本号,并且不被浏览器、CDN和反向代理服务器缓存。这个JavaScript文件非常小,不会对服务器集群和网络带宽造成太大压力。
二。下单流程
由于最终能够成功秒杀到商品的用户只有一个,因此需要在用户提交订单时,检查是否已经有订单提交。事实上,由于最终能够成功提交订单的用户只有一个,为了减轻下单页面服务器的负载压力,可以控制进入下单页面的入口,只有少数用户能进入下单页面,使其用户访问直接进入结束页面。假设下单服务器集群有10台服务器,每台服务器只接受最多10个下单请求。也可以在页面添加随机数,随机进入下单页面,随机本事就是一种负载。