Когда пользователь добавляет товар с ограниченным запасом в свою корзину, держите его в течение небольшого промежутка времени - скажем, 15 минут.Это их, если они платят в окне, в противном случае удержание снимается, и элемент возвращается в пул.(На время удержания элемент считался «недоступным» для других пользователей.)
AFAIK, это довольно стандартная техника - я видел, например, Gilt , делающей это.