如何控制秒杀商品页面购买按钮的定时点亮

本文节选自李智慧著《大型网站技术架构——核心原理与案例分析》一书,版权归原作者所有。本文为个人记录,方便查阅用。


购买按钮只有在秒杀活动开始的时候才能点亮,在此之前是灰色的。如果该页面是动态生成的,当然可以在服务器端构造相应页面输出,控制该按钮是灰色还是点亮,但是为了减轻服务器端负载压力,更好地利用CDN、反向代理等性能优化手段,该页面被设计为静态页面,缓存在CDN、反向代理服务器上,甚至用户浏览器上。秒杀开始时,用户刷新页面,请求根本不会到达应用服务器。

解决办法是使用JavaScript,在秒杀商品静态页面中加入一个JavaScript文件引用,该JavaScript文件中加入秒杀是否开始的标志和下单页面URL的随机参数(秒杀开始之前,标志为false,随机参数为空),当秒杀开始的时候生成一个新的JavaScript文件(秒杀开始之后,标志为true,随机参数为为服务端动态生成的随机参数)并被用户浏览器加载,控制秒杀商品页面的展示。这个JavaScript文件使用随机版本号,并且不被浏览器、CDN和反向代理服务器缓存。

这个JavaScript文件非常小(主要放置秒杀开始后变更的2个动态参数),即使每次浏览器刷新都访问JavaScript文件服务器也不会对服务器集群和网络带宽造成太大压力。


秒杀系统的注意事项:

1.秒杀系统独立部署——防止对现有网站业务造成冲击;

2.秒杀商品的页面静态化——缓解高并发下应用和数据库的负载压力;

3.租借秒杀活动带宽——防止带宽不足问题;

4.动态生成随机下单页面URL——防止知道URL后直接下单;


PS:由于秒杀商品数量通常极少,可以直接在集群的每台下单服务器上都设置一个最大下单数来限制本服务器上提交的请求数,超过该高数目后,其他请求直接跳转至秒杀活动结束页面。这样可以在在全局判断之前在每台服务器上完成初步过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值