lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

https://mp.weixin.qq.com/s/yJLvFwzEhIrsjHjPng8W_Q

什么是秒杀

 

简单的说就是商家对商品在特定时限内设置极低的价格,由用户在同一时间进行在线抢购的行为。

 

秒杀系统设计

 

很多同学会认为秒杀系统的设计很简单。但是仔细分析这个事情,会发现里面坑很多。

 

从场景上来说,由于商品价格超低,网站涌入的访问量,可能是正常时候的几倍甚至几十倍。而这种状态又不是时常发生的,这就对现有的业务产生了冲击。如何在保证现有系统正常运行,而又不影响秒杀的正常进行,是个很有技术含量的事情。

 

总结来说,限时、限量和海量用户是秒杀的主要特点。而针对这个特点,系统设计上要达到以下的标准:

 

1、如何设计有效的逻辑确保系统访问的稳定性;

 

2、设计哪些手段可以有效防止薅羊毛现象的出现;

 

3、在保证前两个的效果基础上,让用户抢购的体验更好。

 

先简单分析下秒杀系统的设计,从逻辑上讲,主要分为三部分:活动管理、发布秒杀活动和用户参与。基本的产品架构如下图所示:

 

自营性的电商系统只包含商家本身,如果是平台型电商,就涉及到平台秒杀和商家自助秒杀两种模式。在平台秒杀模式下,商家需要报名申请秒杀活动,审核通过后才能参与的。商家自助秒杀模式则由商家自己自行发布组织。秒杀发布的产品结构如如下图所示:

 

 

注意的是,在商品设置中,秒杀的库存是单独设置的,如果秒杀商品和商品设置为同一个库存,恩,结果可想而知。

 

活动设置、商品设置、抢购设置的原型就不画了。

 

恩,下面说一下如何防止薅羊毛这件事情。

 

如何防止用户薅羊毛

 

秒杀大部分时候其实是在赔本赚吆喝,通过秒杀商品吸引用户、流量。因为商品价格极低,就很容易出现用户恶意刷单和作弊的情况,也就是我们俗称的薅羊毛。

 

一般的防止手段可以概括如下:

 

虽然列出了上面的限制,但是需要说明的是,并不是所有的限制都是有效的,限制越多,逻辑越复杂,前台用户的抢购体验越不好。因而,需要持续关注活动期间用户的抢购行为状况,及时作出调整。

 

秒杀系统如何面对高并发量

 

或许你以为咱们的产品设计已经完成了,其实这才刚刚开始。如前所述,由于大量用户的涌入,会造成众多难以想象的问题:

 

1、如何避免对现有网站的冲击?

 

解决办法:描述使用单独的二级域名,独立部署;

 

2、用户在参加活动时候,不停的刷新页面,以保证不错过秒杀

 

解决办法:设计单独的商品页面,页面内容静态化;

 

3、秒杀作为一项活动,时间点到了才能进行,但是下单的页面也是一个URL,如果获取到该URL也能下单

 

解决办法:将该URL动态化处理,在服务端生成随机参数,只有时间点到了才能得到

 

4、如何解决超卖的现象

 

由于同一时间内参与的用户数量极大,导致库存并发更新的问题,实际库存已经不足的情况下,前台依然可以下单,库存依然在减

 

解决办法:技术上设置乐观锁或者悲观锁,实际中,商家多备一些货

 

5、描述活动的概率和控制数量

 

由于秒杀活动非常吸引人,导致一个商品虽然有10W库存,但是却有100W人涌进来,如何解决?

 

解决办法:因为你不可能让所有的用户都抢到商品,通常来说概率设定在十万分之一到五十万分之一,具体还是要看用户量级。

 

而另一方面,面对疯狂进来的用户,网站响应慢,半天加载不出来,这个问题怎么解决?从产品设计的角度讲,一种方式可以采取限流的方式,利用先进先出的规则,将前面的用户先放进来,后面的用户排队引流到其它页面。当然这种方式对用户体验不是很好。另一种方式也可以采用预约码的形式,在秒杀开始之前,发放预约码,凭预约码进入。

 

6、如何应对秒杀器

 

一般采取秒杀答题、秒杀验证码等方式。

 

就到这里:)

posted on 2019-07-21 21:20  白露~  阅读(507)  评论(0编辑  收藏  举报