秒杀系统的9个细节:1.瞬时高并发、2.页面静态化、3.秒杀按钮、4.读多写少、5.缓存问题、6.库存问题、7.分布式锁、8.mq异步处理、9.如何限流。
一、瞬时高并发
一般在秒杀时间点前几分钟,用户并发量开始突增,然后达到顶峰。秒杀商品较少,故极少部分用户能够成功秒杀。大部分用户会接收到商品已抢完的提醒,收到提醒之后,这部分用户大概率会离开活动界面,此时用户并发量会急剧下降。所以这个峰值持续的时间非常短暂,这样就会出现瞬间高并发的情况,如下图所示:
二、页面静态化
活动页面是用户流量的第一入口,是并发量最大的地方。
1.如果这些流量都能直接访问服务端,服务端会因承受不住这么大的压力而直接挂掉。
2.活动页面绝大部分的内容是固定的,比如:商品名称、商品描述、图片等。为了减少不必要的服务端请求,通常情况下,会对活动页面做静态化处理。用户浏览商品等常规操作,并不会请求到服务端。只有到了秒杀时间点,并且用户主动点了秒杀按钮,才允许访问服务端。
3.经过上述静态化处理,能过滤大部分无效请求。又因用户分布在全国各地,地域相差较远、网速各不相同,如何才能让用户最快访问到活动界面呢?
这就需要使用CDN(Content Delivery Network),即分发网络。使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
三、秒杀按钮
用户大多害怕错过秒杀时间点,一般会提前进入活动界面。只有到了秒杀时间点那一刹那,秒杀按钮才会自动点亮,变成可点击的,在此之前此按钮为置灰,不可点击。