云时代架构之秒杀系统架构分析与实战

秒杀系统架构分析与实战

  说到高并发,其实我们中国互联网人最有发言权。中国人口最多,而且特有的社会结构恰好是互联网精神发挥的沃土,所以互联网行业在中国的迅猛发展也属情理之中。而中国现实社会中的地域发展不平衡、产业结构过度区域化、交通不够便利及小企业信息不畅等一道道壁垒,反而成就了电商的独特的商业空间。伴随着电商的蓬勃发展,抢购和秒杀活动作为营销的重要手段,也对电商系统提出了越来越高的要求。当双十一已经从一个简单的噱头演变为可以让全民熬夜万众秒杀的头条事件时,电商系统所面对的高并发压力绝不亚于春节的微信红包系统。

  秒杀业务分析:正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;

  秒杀技术挑战:假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:(1)对现有网站业务造成冲击;(2)高并发下的应用、数据库负载;(3)突然增加的网络及服务器带宽;(4)直接下单;(5)如何控制秒杀商品页面购买按钮的点亮。解决方案:使用JavaScript脚本控制,在秒杀商品静态页面中加入一个JavaScript文件引用,该JavaScript文件中包含 秒杀开始标志为否;当秒杀开始的时候生成一个新的JavaScript文件(文件名保持不变,只是内容不一样),更新秒杀开始标志为是,加入下单页面的URL及随机数参数(这个随机数只会产生一个,即所有人看到的URL都是同一个,服务器端可以用redis这种分布式缓存服务器来保存随机数),并被用户浏览器加载,控制秒杀商品页面的展示。这个JavaScript文件的加载可以加上随机版本号(例如xx.js?v=32353823),这样就不会被浏览器、CDN和反向代理服务器缓存。

  秒杀系统为秒杀而设计,不同于一般的网购行为,参与秒杀活动的用户更关心的是如何能快速刷新商品页面,在秒杀开始的时候抢先进入下单页面,而不是商品详情等用户体验细节,因此秒杀系统的页面设计应尽可能简单。商品页面中的购买按钮只有在秒杀活动开始的时候才变亮,在此之前及秒杀商品卖出后,该按钮都是灰色的,不可以点击。下单表单也尽可能简单,购买数量只能是一个且不可以修改,送货地址和付款方式都使用用户默认设置,没有默认也可以不填,允许等订单提交后修改;只有第一个提交的订单发送给网站的订单子系统,其余用户提交订单后只能看到秒杀结束页面。要做一个这样的秒杀系统,业务会分为两个阶段,第一个阶段是秒杀开始前某个时间到秒杀开始, 这个阶段可以称之为准备阶段,用户在准备阶段等待秒杀; 第二个阶段就是秒杀开始到所有参与秒杀的用户获得秒杀结果, 这个就称为秒杀阶段吧。

  总结:现在我们知道,电商系统所要面对的高并发压力,远高于人们的想象。特别是双十一零点的抢购,绝对是比春节微信红包更严峻的考验。红包本身更倾向于娱乐,金额普遍也不大,并且瞬时洪峰比较分散;但电商面对的都是实际的交易,容错率同样很低,而且会在零点面临极高的流量峰值。

 文章来源:

https://mp.weixin.qq.com/s?__biz=MzAxNTY1NjQzMA==&mid=401277709&idx=3&sn=cae57ddab69bea54f08430278072164c&scene=21#wechat_redirect

posted @ 2019-04-25 10:13  New-s  阅读(181)  评论(0编辑  收藏  举报