业务是这样的,有很多不同的商户,每个商户假设有一个计费点,商户使用某个服务要扣一次钱,商户会并发的调这个服务的接口。商户的 id 是唯一的。
1,项目是集群的,我加了分布式锁。 2,数据库是乐观锁。 3,在 java 的 controller 方法的代码块里加锁, 可以用商户的 id 来作为监视器吗? 商户的 id, 接口的参数会传给服务器。
我的问题是第三个? java 线程的锁,在这个 业务上要怎么去加?
谢谢大家
1
gfreezy 2020-10-21 18:15:46 +08:00
你的场景一个商户单机就能搞定吗?单机才能用线程锁。
|
2
zoharSoul 2020-10-21 18:18:21 +08:00
扣钱记 log,
然后扫 log 表更新余额, 不需要锁 |
3
gaobing 2020-10-21 18:30:59 +08:00
使用全局的 ConcurrentHashMap<Long,ReentrantLock> 为每个 id 分配一把锁,业务中先通过 id 获取锁,再加锁
|