兄弟们,比较好的在高并发下解决超卖问题的方案是什么?

        背景:前几天因为这个问题没回答好导致面评不是很好没过面试,面试官问我你们系统是怎么解决超卖问题的,我说我们用分布式锁,面试官好像对我的回答不满意(但我们就是用分布式锁啊),他说高并发下用锁会造成大量超时等待影响用户体验,有没有其他方法?我说我知道两种方式,一个是加分布式锁,这个方式并发大的话可能导致很多请求超时,一个是用乐观锁的方式在数据库加上版本号,但这种方式如果并发请求多的话可能会有很多失败,体验很不好。
        我确实没深入了解过高并发下解决超卖的问题,所以最近也一直在网上搜看解决方案,但网上搜到的好像都没有特别好特别完整特别能说服我的解决方案,想问下大家你们接触到的系统怎么解决超卖问题的?或者高并发下怎么解决超卖问题比较好?又或者说这个问题在面试时怎么说比较好,已经被问过很多次了。假如并发很高很高,瞬时写入数据库不能承受那种。
      

#Java#
全部评论
先不给用户生成订单。在用户界面显示正在排队中 出队成功再生成订单
1
送花
回复
分享
发布于 2022-03-27 00:56
网上有个方案是将库存先写入redis,假如x商品有10w个库存,就用redis创建个队列放10W个1进去,代表这个商品有​10W个库存,每次预定时先从队列里取个1出来,取到说明有库存,取不到说明没有库存返回下单失败。 然后取到的返回下单成功,将用户信息和商品信息放到MQ里异步去写数据库​。这个方案挺好的,超卖问题是解决了,但是这个时候如果用户去查订单详情怎么办异步写数据库假如这单还没来的及入库呢?
点赞
送花
回复
分享
发布于 2022-03-06 01:53
滴滴
校招火热招聘中
官网直投

相关推荐

3 17 评论
分享
牛客网
牛客企业服务