猿问

集群,高并发问题

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

largeQ
浏览 546回答 7
7回答

芜湖不芜

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

慕虎7371278

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

缥缈止盈

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

ibeautiful

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

胡说叔叔

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

PIPIONE

两个思路1:在数据库级别加锁:比如select for update2:在应用级别加锁,你应用是分布式的没错,a.加分布式锁 b.单利管理库存我觉得对于电商来说,压力大的是订单数据库和查询服务,你在应用级别做分布式应该效益不高吧?毕竟写瓶颈在数据库

慕田峪9158850

乐观锁吧如果量很大,那就乐观锁+分库分表
随时随地看视频慕课网APP

相关分类

Java
我要回答