秒杀系统库存超卖问题优化方案.pdfVIP

  • 0
  • 0
  • 约2.27千字
  • 约 3页
  • 2026-09-08 发布于北京
  • 举报

《132_秒杀抢购库存超卖问题的解决方案(2)》

seckill::product::153={

sale_stock_amount:3000,

locked_stock_amount:0,

saled_stock_amount:0

}

方案一,可以用我们之前讲解过的分布式锁,先获取一个锁,seckill::product::153::lock,

Redisson去做,绝对不会在你获得锁的期间有别人去查询和更新库存数据,此时你可以放心

的查询,如果可以抢,就扣减库存,释放锁,别人获取锁,再重复

对于高并发来说是不太合适的,Redisson分布式锁的实现源码,Lua+watchdog,锁等

待,每个人都得轮询不停的去重新尝试加锁,中间都有一个等待的过程,会产生很多的网络

通信的开销

获取锁的人释放了锁,其他的人还都处于锁等待的过程中,此时过了几十ms才有下一个人

获取了锁,分布式锁的整体并发的能力不是不太好

方案二,FIFO内存队列,秒杀抢购系统里,对所有进来的请求全部进入一个内存队列排队,

按照先后顺序出队再去Redis里执行秒杀抢购逻辑,把针对某个商品的所有抢购请求都hash

路由到一台服务器上去,进入一个内存队列,保证对这个商品的抢购都是有序

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档