《库存系统难破题?京东到家来分享》
多人同时购买 1 件商品,如何安全地库存扣减?
海量的用户秒杀请求,本质上是一个排序,先到先得。但是如此之多的请求,注定了有些人是抢不到的,可以在进入上述伪代码 Dao 层之前增加一个计数器进行控制,比如有 50% 的流量将直接告诉其抢购失败,伪代码如下:
count++;
if (count%2==1) {
Thread.sleep(1000);
return new BuyResult("抢购失败");
} else {
return doBuy();
}
这样真的合适吗?