场景介绍
在双十一和双十二进行酒类产品销售时,场景类似于秒杀业务场景,在短时间内,有大量用户进行抢购。用户根据自己拥有的购酒资格进行抢购,在此轮抢购中,实时查看剩余可以购酒的瓶数,抢购成功,则完成后续的支付操作。
实现方案
- 多级缓存
用户频繁的操作就是频繁的查询购买的商品。对于促销商品和价格的信息,提前预制到redis缓存,失效时间通常设置为24小时。对于用户信息缓存,使用本地缓存,通常设置失效时间为1分钟。 - 流量削峰漏斗
漏斗式的减少请求流量,在业务链路的过程中,我们会进行业务校验,层层过滤,如用户的账号安全,是否重复提交,购买资格,购买次数,本轮抢购数量进行校验。在网关层对于同一用户单位时间内(一般是1秒)重复提交的逻辑做统一处理,提示操作频繁。其余业务逻辑校验在下单逻辑做链式校验。 - 数据操作
对于库存的抵扣,我们使用CAS+(失败重试,超时失败)的方式进行数据库的操作,提高扣减库存的并发操作。 - 流量限流
在网关层使用令牌桶算法,对超高流量的并发请求进行了限流操作,超过了就提示操作频繁,避免系统服务超过极限。 - 定时检查,取消未支付订单,释放库存
对于下单成功,但是没有支付的订单,会定时检查,如果在规则时间内(一般是30分钟)未支付,则取消订单释放库存。
深度优化
如果秒杀场景并发量超级高,可以考虑如下两个方案进行优化如下:
- 把原来的下单然后支付的操作流程,拆分为下单和支付两步操作。在用户下单的逻辑中,使用消息中间件来对高并发下单流量进行消峰处理。即在下单时,使用消息生产者保存下单的请求,在消费者端,按照服务器承受的流程进行下单逻辑,使用消息中间件暂存了下单信息,使下单操作稍微有些延时。
- 分数量,分时段的在业务上进行流量分配操作。
技术实现可以参考如下:
1:【58沈剑架构系列】秒杀系统架构优化思路
2:1分钟出票5万张!阿里电影节抢票技术揭秘
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13624.html