双十一秒杀系统架构设计,有这几个关键点!

话说立刻要到双11了,就来谈谈如何设计一个秒杀系统架构javascript

双十一秒杀系统架构设计有哪些关键点?

 

技术挑战java

1. 对原有业务造成冲击程序员

秒杀活动只是网站营销的一个附加活动,特色是:时间短、并发访问量大,若是和网站原有应用部署在一块儿,必然会对现有业务形成冲击。数据库

解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站彻底隔离。浏览器

2. 高并发下数据库、应用负载缓存

用户在秒杀开始前,经过不停刷新浏览器页面以保证不会错过秒杀,这些请求若是按照通常的网站应用架构,访问性能优化

应用服务器、链接数据库,服务器

会对应用服务器和数据库服务器形成负载压力。网络

解决方案:从新设计秒杀商品页面,不使用网站原来的商品详细页面,页面内容静态化,用户请求不须要通过架构

应用服务

3. 忽然增大的服务器和网络带宽

假设商品页面大小200K,10000个请求的带宽就是2G。

解决方案:由于秒杀新增的网络带宽,必须和运营商从新购买或者租借。为了减轻网站服务器的压力,

须要将秒杀商品页面缓存到CDN

4. 防止秒杀前下单

秒杀的游戏规则是到了秒杀才能开始对商品下单购买,在此时间点以前,只能浏览商品信息,不能下单。而下单页面也是一个普通的URL,若是获得这个URL,不用等到秒杀开始就能够下单了。

解决方案:为了不用户直接访问下单页面URL,须要将改URL动态化,即便秒杀系统的开发者也没法在秒杀开始前访问下单页面的URL。办法是在下单页面URL加入由服务器端生成的随机数做为参数,在秒杀开始的时候才能获得。

应对策略

1. 独立部署

和原有业务部署在不一样服务器,防止高并发拖垮整个网站

2. 页面静态化

将商品详情、描述静态化到页面

3. 租借秒杀网络带宽

向运营商租借带宽

4. 动态生成随机下单页面URL

没法在秒杀前访问下单页面的URL:加入服务器端生成的随机数做为参数,在秒杀开始前才能获得

架构设计

1. 控制秒杀购买页面的点亮

购买按钮只有在活动开始的时候才能点亮,在此以前是灰色的。若是是动态页面,能够很容易解决这个问题,但为了减轻服务器端负载压力,

更好的利用CDN、反向代理等性能优化手段,

该页面被设计为静态页面,缓存在CDN、反向代理服务器上,甚至用户浏览器上。秒杀开始时,用户刷新页面,请求根本不会到达应用服务器。

解决方案:秒杀商品页面加入一个javascript引用,该javascript中加入秒杀是否开始的标志和下单页面URL的随机数参数,该javascript使用随机版本号,不可被浏览器缓存

当秒杀开始时,生成一个新的javascript文件并被用户浏览器加载

双十一秒杀系统架构设计有哪些关键点?

 

2. 容许第一个订单提交

秒杀开始,因为最终可以成功秒杀到商品的用户只有一个,所以须要在用户提交订单时,检查是否已经有订单提交。

解决方案:为了减轻下单页面服务器的负载压力,能够控制进入下单页面入口,只有先提交的少数用户可进入,后边的用户直接进入秒杀结束页面

双十一秒杀系统架构设计有哪些关键点?

 

双十一秒杀系统架构设计有哪些关键点?

 

下单服务器检查本机已处理的下单请求数目

*若是超过10条,直接返回已结束页面给用户;

*若是未超过10条,则用户可进入填写订单及确认页面;

检查全局已提交订单数目

*已超过秒杀商品总数,返回已结束页面给用户;

*未超过秒杀商品总数,提交到子订单系统。

这样就大大地减小了数据库的负载压力。

那如何学习才能进入一线互联网公司呢?

当真正开始学习的时候不免不知道从哪入手,哪些技术须要重点掌握,学习时频繁踩坑,致使效率低下影响继续学习的信心,最终浪费大量时间

因此有一套实用的视频课程用来跟着学习是很是有必要的。今天给你们免费分享一套阿里架构师传授的一套教学资源。让学习变得轻松、高效!

双十一秒杀系统架构设计有哪些关键点?

后台私信我“架构” 立刻免费得到这套教学资源!

最后,作一个爱思考,懂思考,会思考的程序员。

相关文章
相关标签/搜索