库存 为1 ,集群环境下如何解决并发订单请求

修身0 2016-04-18 01:00:41


如题,
同时有 多个用户提交订单 [A,B,C ......] ,如没有特殊处理,肯定会有库存为负数的情况

请问有什么解决思路或者方案,希望有订单开发经验的回答此问题,


...全文
314 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2016-04-22
  • 打赏
  • 举报
回复
引用 3 楼 ysl_228 的回复:
[quote=引用 1 楼 fengspg 的回复:] 加锁就可以了啊,对你的订单数量加锁,顺序处理。
有具体的实例吗,可以参考一下[/quote] select count from order where id = 'xxx' and count > 0 for update; update order t set count = t.count - 1;
潇湘浪子 2016-04-22
  • 打赏
  • 举报
回复
扣减库存的时候,加上条件,where 库存数量大于等于要扣减的数量
修身0 2016-04-22
  • 打赏
  • 举报
回复
引用 2 楼 zhi_ai_yaya 的回复:
正常情况下,访问库存最多(即查看商品情况,可以缓存),但是修改库存(即真正下单,需要精确控制)是比较少的。 所以,可以分模块,集群下缓存库存量,但是修改库存做成一个服务,集群下都只能访问这个服务,达到修改库存的目的。 在服务内部加锁(用于并发量大的情况,比如只在库存量减1这个地方加锁)或者使用队列顺序(用于并发量小的情况)处理。
你这样的方式可以解决这个问题,但是现在的系统是在一起,可否有其他的方案
修身0 2016-04-22
  • 打赏
  • 举报
回复
引用 1 楼 fengspg 的回复:
加锁就可以了啊,对你的订单数量加锁,顺序处理。
有具体的实例吗,可以参考一下
我叫小菜菜 2016-04-18
  • 打赏
  • 举报
回复
正常情况下,访问库存最多(即查看商品情况,可以缓存),但是修改库存(即真正下单,需要精确控制)是比较少的。 所以,可以分模块,集群下缓存库存量,但是修改库存做成一个服务,集群下都只能访问这个服务,达到修改库存的目的。 在服务内部加锁(用于并发量大的情况,比如只在库存量减1这个地方加锁)或者使用队列顺序(用于并发量小的情况)处理。
Intboy 2016-04-18
  • 打赏
  • 举报
回复
加锁就可以了啊,对你的订单数量加锁,顺序处理。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧