秒杀系统的设计
Posted 就这么做产品经理
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒杀系统的设计相关的知识,希望对你有一定的参考价值。
什么是秒杀
简单的说就是商家对商品在特定时限内设置极低的价格,由用户在同一时间进行在线抢购的行为。
秒杀系统设计
很多同学会认为秒杀系统的设计很简单。但是仔细分析这个事情,会发现里面坑很多。
从场景上来说,由于商品价格超低,网站涌入的访问量,可能是正常时候的几倍甚至几十倍。而这种状态又不是时常发生的,这就对现有的业务产生了冲击。如何在保证现有系统正常运行,而又不影响秒杀的正常进行,是个很有技术含量的事情。
总结来说,限时、限量和海量用户是秒杀的主要特点。而针对这个特点,系统设计上要达到以下的标准:
1、如何设计有效的逻辑确保系统访问的稳定性;
2、设计哪些手段可以有效防止薅羊毛现象的出现;
3、在保证前两个的效果基础上,让用户抢购的体验更好。
先简单分析下秒杀系统的设计,从逻辑上讲,主要分为三部分:活动管理、发布秒杀活动和用户参与。基本的产品架构如下图所示:
自营性的电商系统只包含商家本身,如果是平台型电商,就涉及到平台秒杀和商家自助秒杀两种模式。在平台秒杀模式下,商家需要报名申请秒杀活动,审核通过后才能参与的。商家自助秒杀模式则由商家自己自行发布组织。秒杀发布的产品结构如如下图所示:
注意的是,在商品设置中,秒杀的库存是单独设置的,如果秒杀商品和商品设置为同一个库存,恩,结果可想而知。
活动设置、商品设置、抢购设置的原型就不画了。
恩,下面说一下如何防止薅羊毛这件事情。
如何防止用户薅羊毛
秒杀大部分时候其实是在赔本赚吆喝,通过秒杀商品吸引用户、流量。因为商品价格极低,就很容易出现用户恶意刷单和作弊的情况,也就是我们俗称的薅羊毛。
一般的防止手段可以概括如下:
虽然列出了上面的限制,但是需要说明的是,并不是所有的限制都是有效的,限制越多,逻辑越复杂,前台用户的抢购体验越不好。因而,需要持续关注活动期间用户的抢购行为状况,及时作出调整。
秒杀系统如何面对高并发量
或许你以为咱们的产品设计已经完成了,其实这才刚刚开始。如前所述,由于大量用户的涌入,会造成众多难以想象的问题:
1、如何避免对现有网站的冲击?
解决办法:描述使用单独的二级域名,独立部署;
2、用户在参加活动时候,不停的刷新页面,以保证不错过秒杀
解决办法:设计单独的商品页面,页面内容静态化;
3、秒杀作为一项活动,时间点到了才能进行,但是下单的页面也是一个URL,如果获取到该URL也能下单
解决办法:将该URL动态化处理,在服务端生成随机参数,只有时间点到了才能得到
4、如何解决超卖的现象
由于同一时间内参与的用户数量极大,导致库存并发更新的问题,实际库存已经不足的情况下,前台依然可以下单,库存依然在减
解决办法:技术上设置乐观锁或者悲观锁,实际中,商家多备一些货
5、描述活动的概率和控制数量
由于秒杀活动非常吸引人,导致一个商品虽然有10W库存,但是却有100W人涌进来,如何解决?
解决办法:因为你不可能让所有的用户都抢到商品,通常来说概率设定在十万分之一到五十万分之一,具体还是要看用户量级。
而另一方面,面对疯狂进来的用户,网站响应慢,半天加载不出来,这个问题怎么解决?从产品设计的角度讲,一种方式可以采取限流的方式,利用先进先出的规则,将前面的用户先放进来,后面的用户排队引流到其它页面。当然这种方式对用户体验不是很好。另一种方式也可以采用预约码的形式,在秒杀开始之前,发放预约码,凭预约码进入。
6、如何应对秒杀器
一般采取秒杀答题、秒杀验证码等方式。
就到这里:)
以上是关于秒杀系统的设计的主要内容,如果未能解决你的问题,请参考以下文章