Java多线程分布式同步

yqbboy 发布于 2016/04/07 10:30
阅读 631
收藏 0
首先说一下我的业务场景:我现在有多笔账单要去支付,每笔账单可以让多个人同时去支付,但是只能有一个人支付成功,我想要实现的效果是,当有一个人正在支 付某笔账单时,其它人不能在对这笔账单进行支付操作,我的系统是分布式部署的,使用synchronized 的话不能解决分布式问题,麻烦有这方面经验的指导下,谢谢。
加载中
1
暴走的蛇
暴走的蛇
你这个业务场景相对还比较简单都不太需要自己用分布式锁去实现,直接用redis就可以解决了!
yqbboy
yqbboy
@hgnom 多谢 我已经解决了
hgnom
hgnom
回复 @hgnom : memcache的add也可以实现
hgnom
hgnom
回复 @yqbboy : set 里面有个 NX 选项,相当于之前的setnx
yqbboy
yqbboy
@暴走的蛇 请问redis 在set的时候,如果set的key是一样的,是覆盖,还是会返回失败?
暴走的蛇
暴走的蛇
回复 @tinshen : 他是账单支付类业务,存还是得存一个key的,其实很简单的,该key存在的时候就是有锁,该key不存在就是无锁的,给楼主个文章看看别人的实现 http://www.cnblogs.com/happyday56/p/3454086.html
下一页
0
zjfcyefeng
zjfcyefeng
价格分布式锁不就搞定了
0
J
JCod3r
可以考虑用redis实现一个分布式锁来解决这个问题     不会太难
0
whaon
whaon
zookeeper可以解决
0
tinshen
tinshen

实际上在支付账单里增加一个操作人的字段就可以了。

如果该字段有值,其他人不能操作,提示某某再支付;实际操作人可以释放控制 。

或者是增加一个释放时间。和redis的实现实际差不多。

0
卧枝会中田
卧枝会中田
数据库 悲观锁 for update  或者乐观锁 版本号 时间戳自行代码判断
返回顶部
顶部