如何解决秒杀的高并发和超卖的问题?

本文探讨了秒杀活动中常见的高并发与超卖问题,深入解析了前端扩容、限流、静态化及后端内存操作与排队机制的应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、秒杀的问题

秒杀或抢购活动一般会经过【预约】【抢订单】【支付】这3个大环节,而其中【抢订单】这个环节是最考验业务提供方的抗压能力的。

抢订单环节一般会带来2个问题:

  1、高并发

  比较火热的秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。

  2、超卖

  任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难题。

二、如何解决

总的来说就是:前端三板斧(扩容、限流、静态化),后端两条路(内存加排队)。

1)前端:

扩容:加机器,这是最简单的方法,通过增加前端池的整体承载量来扛峰值。

限流:一般都会采用IP级别的限流,即针对某一个IP限制单位时间内发起的请求数量,或者活动入口的时候增加游戏或者

问题环节进行销峰操作。

静态化:将活动页面中所有的可静态化元素全部静态化,并尽量减少动态元素,通过CNN(加速服务器)来扛峰值。

2)后端:

内存:将库存从MySQL前移到Redis中,所有的读写操作放到内存中,由于Redis中没有锁,所以不会存在相互等待,并且

Redis的读写性能都远高于MySQL,这就解决了性能问题。

排队:引入队列,然后将所有写DB操作在单队列中排队,完全串行处理。当达到库存阀值的时候就不在消费队列,并关闭购买功能。这就解决了超卖问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值