电商项目-秒杀流程

秒杀亮点

一、低价引流,吸引用户

  • 高性价比商品:秒杀活动通常提供价格极具吸引力的商品,这些商品往往具有高性价比,能够迅速吸引大量用户的关注和参与。
  • 快速聚集人气:通过每日的低价秒杀活动,电商平台能够迅速聚集起一批热衷于抢购的用户,为平台带来可观的流量。

二、促进商品快速流通和销售

  • 快速清仓:对于库存积压或即将过季的商品,秒杀活动能够以极低的价格快速清仓,回笼资金并减少仓储成本。
  • 带动关联销售:秒杀商品的高性价比不仅刺激了用户的购买欲望,还能带动其他关联商品的销售,提高整体销售额。

三、提升用户体验和参与度

  • 公平参与机会:秒杀活动通过优化规则和流程,确保每个用户都有平等的机会参与和获胜,提升了用户的购物体验。
  • 分享与推荐机制:平台鼓励用户将秒杀活动分享给亲朋好友,邀请他们一起参与。这种社交化的购物方式不仅增加了用户的参与感,还扩大了活动的传播范围。

四、增强用户粘性和忠诚度

  • 会员专享福利:作为会员专享活动,秒杀活动能够增强会员的特权感和忠诚度,提高会员满意度和续费率。
  • 互动与反馈:秒杀活动过程中的互动环节和用户对商品的反馈,有助于平台更好地了解用户需求,优化商品和服务。

五、数据收集与用户洞察

  • 用户行为分析:秒杀活动过程中,平台可以收集用户参与行为、购买偏好等数据,为后续的精准营销和商品选品提供依据。
  • 市场测试:对于新品上市初期,秒杀活动可以作为一种市场测试手段,快速获得市场反馈和用户评价。

六、创新玩法与营销策略

  • 多样化玩法:秒杀活动可以结合其他营销手段如拼团、满减等,形成多样化的玩法,满足不同用户的需求。
  • 限时限量刺激:通过设置活动倒计时、支付时长限制等,制造促销紧张氛围,刺激用户下单。

综上所述,电商项目中的秒杀活动以其低价引流、快速销售、提升用户体验、增强用户粘性、数据收集以及创新玩法等亮点,成为电商促销的重要手段之一。对于电商平台而言,合理规划和执行秒杀活动,不仅能够提升销售业绩,还能增强品牌影响力和用户忠诚度。

秒杀流程图

整体流程

1.先给热点商品放入缓存 用redis Hash(加载缓存)

2.将商品Id放入布隆过滤器 热点商品必须用的布隆

3.秒杀场景 加队列 左进 右出,

4.商品详情存入缓存

5.判断活动场次时间,抢单时:拿到商品ID判断是否存在布隆过滤器 (不在就不是秒杀商品)

判断缓存队列是否满(队列长度 商品*2) 队列之外直接返回商品卖光

6.判断库存数量是否足够 不够返回商品库存不足

7.足够 ,库存锁定 (虚拟货币锁定,优惠卷锁定)下单 redission加锁 使用延迟队列

8.使用商品id塞入set集合,抢过的人通过id筛选一下不能重复购买

9.判断支付是否成功 是 库存=库存-锁定库存数量 优惠卷过期 货币=货币 扣减 +新货币 积分=积分+锁定积分 结束

10 支付不成功 移除锁定库存 移除优惠卷 移除锁定货币 +新增货币 移除锁定积分 结束

秒杀的问题以及解决方案
问题

1. 超卖

分析秒杀的业务场景,最重要的有一点就是超卖问题,但凡是个秒杀,都怕超卖,比如商家备货只有100个MacBook Pro,商家的预算经费卖100个可以赚点还可以造势,但是因为超卖问题卖出去200个,你不发货用户投诉你,平台封你店,你发货就血亏,你怎么办?因此解决商品的超卖问题是特别重要的。

2. 高并发

大家都知道如果真的营销到位,价格诱人,几十万的流量我觉得完全不是问题,秒杀具有时间短、并发量大的特点,秒杀持续时间只有几分钟。短时间内会有大量请求涌进来,我们需要解决缓存雪崩,缓存击穿,缓存穿透,防止由于流量过高打挂数据库。

3. 恶意请求

有很多黄牛党会有针对秒杀对应的软件,知道你什么时候抢,弄几十台机器加上脚本,可以模拟十几万左右的请求,那这样成功率就会很高了。怎样防止这类软件的重复无效请求也是需要我们解决的。

4. 链接暴露

对于小白用户来说,看到的只是一个比较简单的秒杀页面,在未达到规定时间,秒杀按钮是灰色的,一旦到达规定时间,灰色按钮变成可点击状态。但对于稍微有点电脑功底的用户,都可以打开谷歌的开发者模式,然后看看你的网页代码,有的就有URL,通过特定软件去请求也可以实现秒杀。怎样防止链接暴露也是需要我们解决的。

5. 数据库设计

秒杀每秒上万甚至十几万的QPS(每秒请求数)直接打到数据库,基本上都要把库打挂掉,而且你服务不单是做秒杀的还涉及其他的业务,如果没做降级、限流、熔断,别的业务也可能会挂。

解决方案

1. 数据库设计

针对秒杀的数据库问题,应该单独设计一个秒杀数据库,防止因为秒杀活动的高并发访问拖垮整个网站,这里主要需要两张表,一张是秒杀订单表,一张是秒杀商品表。

2. Redis集群做缓存

秒杀是一个读多写少的场景,可以使用Redis做缓存,但是单体Redis可能顶不住(单机的Redis我感觉3-4W的QPS还是能顶得住的),这时候就需要搭建Redis集群,提升redis的性能和可用性,我们开始秒杀前通过定时任务提前把商品的库存加载到Redis中去,让整个流程都在Redis里面去做,然后等秒杀结束了,再异步的去修改库存就好了,但是要加事务,Redis本身是支持事务的,而且他有很多原子命令的,也可以用LUA脚本。

3. 解决超卖

数据库加唯一索引:防止用户重复购买;SQL加库存数量判断:防止库存变成负数:update miaosha_goods set stock=stock-1 where goos_id={#goods_id} and version=#{version} and sock>0; 这样的话,就可以保证库存不会超卖并且一次更新库存,还有注意一点这里使用了版本号的乐观锁,相比较悲观锁,它的性能较好。

4. 使用nginx

nginx是一个高性能web服务器,它的并发能力可以达到几万,而tomcat只有几百。通过nginx映射客户端请求,再分发到后台tomcat服务器集群中可以大大提升并发能力。

5. 后端限流

同一个用户x秒内重复请求直接拒绝:具体多少秒需要根据实际业务和秒杀的人数而定,一般限定为10秒。

令牌桶算法限流:令牌桶算法的基本思路是每个请求尝试获取一个令牌,后端只处理持有令牌的请求,生产令牌的速度和效率我们都可以自己限定。

6. 异步下单

为了提升下单的效率,并且防止下单服务的失败,需要将下单这一操作进行异步处理。可以采用RocketMQ消息队列,在后台经过了限流、库存校验之后,走到这一步骤的就是有效请求。然后发送到队列里,队列接受消息,进行异步下单,下完单,入库没有问题提示用户秒杀成功。如果失败的话,可以采用补偿机制,利用RocketMQ的事务性消息进行重试。

7. 服务降级

假如在秒杀过程中出现了某个服务器宕机,或者服务不可用,应该做好应对工作。可以通过Hystrix或者sentinel进行服务熔断和降级,假如服务器真的宕机了,直接给用户一个友好的提示返回,而不是直接卡死,服务器错误等生硬的反馈。

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值