秒杀使用乐观锁解决超卖问题公平吗?先抢的用户并不一定抢得到,有什么更好得方法解决这个问题吗?
秒杀, 现在谁还会现场即时秒杀哦, 这种超卖或少卖或数据量大造成数据不对称的问题很多,
现在大厂都是这样设计秒杀的了:
1 大家抢秒杀的时候, 把数据存到消息队列, 2 后端从消息队列里取出来数据,生成秒杀订单, 3 有多少数量参与秒杀就取出多少, 后面排队的就是注重参与,可能还有一些没付款的让他们候补上来。 4 付款, 如果他们超时付款, 到时再在消息队列里取出候选的补上。
这样保证, 一个都卖的不多, 一个也不少, 还可以让开发者不加班, 不调bug, 睡大觉。