网购秒杀的系统架构设计

1.秒杀活动的技术挑战:

        1.1 对现有网站业务造成冲击

        1.2 高并发下的应用,数据库负载

        1.3 突然增加的网络及服务器带宽

        1.4 直接下单

2.秒杀系统对应策略:

        2.1 秒杀系统独立部署:

                为了避免高并发访问拖垮整个网站,使整个网站不必面对蜂拥而来的用户访问,可将秒杀系统独立部署,如果需要,还可以使用独立域名,使其与网站完全隔离,即使秒杀系统崩溃了,也不会对网站造成任何影响。

        2.2 秒杀商品页面静态化:

                重新设计秒杀商品页面,不使用原来的商品详情页面,页面内容静态化,将商品描述,参数,成交记录和用户评价全部写入到新的静态页面,用户请求就不需要经过应用服务器的业务逻辑处理,也不需要访问数据库。所以秒杀商品服务不需要部署动态的web服务器和数据库服务器。

        2.3 租借秒杀活动网络带宽:

                因为秒杀新增的网络带宽,必须和运营商重新购买和租借,为了减轻网站服务器压力,需要将秒杀商品页面缓存在CDN,同样需要和CDN服务商临时租借新增的出口带宽。

        2.4 动态生成随机下单页面URL:

                为了避免用户直接访问下单页面URL,可将URL动态化,办法是在下单页面URL加入服务器端生成的随机数作为参数,在秒杀的时候才可以得到。

3.秒杀系统架构设计:

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

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

                解决办法是js脚本控制,在秒杀商品静态页面时加入一个js文件引用,该js文件中加入秒杀是否开始的标志和下单页面的随机参数。当秒杀开始,生成一个js文件并被用户所加载,控制秒杀商品页面的展示。这个js文件使用随机版本号,并且不被浏览器,CDN,反向代理服务器缓存。要求js文件必须要小,这样保证每次浏览器访问js文件服务器不会对服务器集群和网络带宽造成太大压力。

        3.2 如何只允许第一个提交的订单发送到订单子系统:

                可以控制进入下单页面的数量,只有少量用户可以进入到下单页面。

 

注意:在秒杀活动中,即使出现故障或者错误,不要将错误信息返回到用户页面,要显示活动结束的页面。

转载于:https://my.oschina.net/u/3110937/blog/1577457

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值