秒杀抢购网 网购秒杀是什么意思( 三 )


5、提交订单
【秒杀抢购网 网购秒杀是什么意思】这一步流量已经第一步进行控制,提交到底以同步方式和异步方式取决于自己之前的系统设计 。
删除当前用户的下单token
6、token过期监控
token过期回滚秒杀活动数
压测分析:对于该场景的压测,我选择短时间高并发的压测,观察TPS和cpu占用情况 。
为什么选择短时间压测 。对于秒杀来说库存有限,如果采样器执行次数远远大于库存数,那超出库存数的大量请求都在有效性校验这块第一时间拦截,没有太大意义了 。
压测时间:60秒
并发数:50
库存3000
用户数:2w
同步接口测试
TPS 323/sec

秒杀抢购网 网购秒杀是什么意思

文章插图

异步接口测试
TPS 548/sec
秒杀抢购网 网购秒杀是什么意思

文章插图

cpu占用率对比
秒杀抢购网 网购秒杀是什么意思

文章插图

从下单逻辑接口方案来比对异步方案明显高于同步方案 。cpu使用率略高于同步方案 。
库存分割存储方案优化:在我们上述的内容中,虽然购物车流程极大的提高了吞吐量,但是我们的秒杀库存是根据活动ID构建的redis存储key,那么当前这个秒杀活动的数据就只会存在一个Redis实例中 。如果在实际秒杀应用中,那么我们发起秒杀的接口在校验当前秒杀活动库存是否有效,或者业务逻辑都会将请求打到单台redis实例 。

秒杀抢购网 网购秒杀是什么意思

文章插图

按照redis的最大承载并发量我们算每秒平均6w 。那么在大型秒杀平台,每秒并发量可能在几十万以上 。那么一台Redis难以承载 。
秒杀抢购网 网购秒杀是什么意思

文章插图

针对于这个问题,我使用了分割的思想,在库存存的时候将库存分成多份,以及建立虚拟秒杀key 。

秒杀抢购网 网购秒杀是什么意思

文章插图

在发起秒杀接口,首先查询redis当前秒杀key是否存在映射的虚拟key 。如果存在,则将对应数据记录到本地缓存,以及记录一个轮询计数 。
之后每次接收到秒杀请求先去缓存中轮询计算出一个虚拟key 。
这样就有效的将请求分散到不同的redis节点,实现了分而治之,也方便水平扩容 。
核心代码如下:
后台配置
秒杀抢购网 网购秒杀是什么意思

文章插图

发起秒杀-查询映射key
秒杀抢购网 网购秒杀是什么意思

文章插图

轮询虚拟key
秒杀抢购网 网购秒杀是什么意思

文章插图

本文分享到此结束,如果有疑问,可以留言加关注 。谢谢。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。