为了账号安全,请及时绑定邮箱和手机立即绑定

集群,高并发问题

集群,高并发问题

largeQ 2019-03-29 15:19:40
我遇到一个问题.我做的是关于购物的网站.该java系统集群后.如果同一时间多人购买同一商品时.库存会出现问题.比如,同时购买者有10个人,库存为5件.由于同时点击购买,结果10人都购买成功.库存变成-5.如果十人分散点击购买时没有问题.即只能5人购买.以前不集群时我采用单利模式来解决这个问题.但是现在集群了.不能这么做了.
查看完整描述

7 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

zookeeper实现分布式锁 就是干这事的


查看完整回答
反对 回复 2019-04-30
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

应该采用分布式事务来处理这种case了,看下你们的框架用的是什么事务处理机制,然后再朝分布式事务方向来靠拢。


查看完整回答
反对 回复 2019-04-30
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我觉得不需要弄分布式事务把?用户购买点击提交的时候不是需要更新库存吗?你更新的时候加一个限制 where stock > 0,然后如果更新的条数是大于0的 证明更新成功,更新条数为0的证明没更新上 这时候你提示用户 该商品已售空就行了吧


查看完整回答
反对 回复 2019-04-30
?
ibeautiful

TA贡献1993条经验 获得超5个赞

jvm 一个时,用sync同步下就行,多个jvm确实不行了,可以为数据库记录加锁


查看完整回答
反对 回复 2019-04-30
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

用zk 实现共享锁吧 简单 又方便


查看完整回答
反对 回复 2019-04-30
?
PIPIONE

TA贡献1829条经验 获得超9个赞

两个思路
1:在数据库级别加锁:比如select for update
2:在应用级别加锁,你应用是分布式的没错,a.加分布式锁 b.单利管理库存

我觉得对于电商来说,压力大的是订单数据库和查询服务,你在应用级别做分布式应该效益不高吧?毕竟写瓶颈在数据库


查看完整回答
反对 回复 2019-04-30
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

乐观锁吧
如果量很大,那就乐观锁+分库分表

查看完整回答
反对 回复 2019-04-30
  • 7 回答
  • 0 关注
  • 545 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号