首页 > 解决方案 > 通过库存验证将产品添加到购物车

问题描述

在一次采访中,我被问到一个问题,说明“有一个 product_inventory 表,其中包含product,quantity列。其中有一个数量为 10 的产品。您必须设计一个添加到购物车的功能,以便只有 10 个请求(每个请求 1 个数量) 应该成功,而其他人应该失败”。

我有以下解决这个问题的方法

  1. 在请求到来时使用悲观锁定来更新库存表数量。这个有一个缺点,如果进来的请求数量太多,它们可能会超时,这对用户来说不是一个好的体验。

  2. 使用乐观锁,因此即使有多个同时请求进来,也只有一个请求会成功更新库存,对于那些得到optimisticException的请求,可以在向UI发送错误之前重试一次。

  3. 在更新前使用触发器检查库存数量 - 请求数量是否应 >= 0

这些是解决这个问题的有效方法吗?在谷歌搜索中,我得到购物网站的结果,关于这个的设计没什么。进行产品在线销售的网站如何处理同时请求添加到购物车的请求?

更新:

发现这篇博文正好解决了这个问题

https://codingsight.com/the-lost-update-problem-in-concurrent-transactions/

标签: spring-bootdatabase-designconcurrencysystem-design

解决方案


推荐阅读