秒杀场景之双11双12商品促销实现方案

场景介绍

在双十一和双十二进行酒类产品销售时,场景类似于秒杀业务场景,在短时间内,有大量用户进行抢购。用户根据自己拥有的购酒资格进行抢购,在此轮抢购中,实时查看剩余可以购酒的瓶数,抢购成功,则完成后续的支付操作。

实现方案

  1. 多级缓存
    用户频繁的操作就是频繁的查询购买的商品。对于促销商品和价格的信息,提前预制到redis缓存,失效时间通常设置为24小时。对于用户信息缓存,使用本地缓存,通常设置失效时间为1分钟。
  2. 流量削峰漏斗
    漏斗式的减少请求流量,在业务链路的过程中,我们会进行业务校验,层层过滤,如用户的账号安全,是否重复提交,购买资格,购买次数,本轮抢购数量进行校验。在网关层对于同一用户单位时间内(一般是1秒)重复提交的逻辑做统一处理,提示操作频繁。其余业务逻辑校验在下单逻辑做链式校验。
  3. 数据操作
    对于库存的抵扣,我们使用CAS+(失败重试,超时失败)的方式进行数据库的操作,提高扣减库存的并发操作。
  4. 流量限流
    在网关层使用令牌桶算法,对超高流量的并发请求进行了限流操作,超过了就提示操作频繁,避免系统服务超过极限。
  5. 定时检查,取消未支付订单,释放库存
    对于下单成功,但是没有支付的订单,会定时检查,如果在规则时间内(一般是30分钟)未支付,则取消订单释放库存。

深度优化

如果秒杀场景并发量超级高,可以考虑如下两个方案进行优化如下:

  1. 把原来的下单然后支付的操作流程,拆分为下单和支付两步操作。在用户下单的逻辑中,使用消息中间件来对高并发下单流量进行消峰处理。即在下单时,使用消息生产者保存下单的请求,在消费者端,按照服务器承受的流程进行下单逻辑,使用消息中间件暂存了下单信息,使下单操作稍微有些延时。
  2. 分数量,分时段的在业务上进行流量分配操作。
    技术实现可以参考如下:
    1:【58沈剑架构系列】秒杀系统架构优化思路
    2:1分钟出票5万张!阿里电影节抢票技术揭秘
发布了37 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/new_com/article/details/105233606