spring-boot - 通过库存验证将产品添加到购物车
问题描述
在一次采访中,我被问到一个问题,说明“有一个 product_inventory 表,其中包含product,quantity列。其中有一个数量为 10 的产品。您必须设计一个添加到购物车的功能,以便只有 10 个请求(每个请求 1 个数量) 应该成功,而其他人应该失败”。
我有以下解决这个问题的方法
在请求到来时使用悲观锁定来更新库存表数量。这个有一个缺点,如果进来的请求数量太多,它们可能会超时,这对用户来说不是一个好的体验。
使用乐观锁,因此即使有多个同时请求进来,也只有一个请求会成功更新库存,对于那些得到optimisticException的请求,可以在向UI发送错误之前重试一次。
在更新前使用触发器检查库存数量 - 请求数量是否应 >= 0
这些是解决这个问题的有效方法吗?在谷歌搜索中,我得到购物网站的结果,关于这个的设计没什么。进行产品在线销售的网站如何处理同时请求添加到购物车的请求?
更新:
发现这篇博文正好解决了这个问题
https://codingsight.com/the-lost-update-problem-in-concurrent-transactions/
解决方案
推荐阅读
- aframe - 当我单击 a-frame 中的 VR 按钮时,我无法查看它
- arrays - 如何显示对象数组中的标题?
- azure - DataLake 锁定同一文件的读取和写入
- python - 使用 svgwrite 旋转路径
- python - 如何在 QTreeView 中获取当前选择的值我正在使用 StandardItemModel()
- excel - Powershell 使用 OLAP 查询刷新 Excel。凭证问题
- html - ngSubmit“myFunction 不是函数”打字稿,角度
- reactjs - Reactjs 无法设置样式
- python - pyqt5 - QHBoxLayout 中的项目重叠?
- python - 找到最大回文数的最快算法,它是具有相同位数的 2 个数字的乘积