支付做计费,如何加锁?

2020-10-21 17:54:37 +08:00
 kikione

业务是这样的,有很多不同的商户,每个商户假设有一个计费点,商户使用某个服务要扣一次钱,商户会并发的调这个服务的接口。商户的 id 是唯一的。

1,项目是集群的,我加了分布式锁。 2,数据库是乐观锁。 3,在 java 的 controller 方法的代码块里加锁, 可以用商户的 id 来作为监视器吗? 商户的 id, 接口的参数会传给服务器。

我的问题是第三个? java 线程的锁,在这个 业务上要怎么去加?

谢谢大家

1446 次点击
所在节点    程序员
3 条回复
gfreezy
2020-10-21 18:15:46 +08:00
你的场景一个商户单机就能搞定吗?单机才能用线程锁。
zoharSoul
2020-10-21 18:18:21 +08:00
扣钱记 log,
然后扫 log 表更新余额, 不需要锁
gaobing
2020-10-21 18:30:59 +08:00
使用全局的 ConcurrentHashMap<Long,ReentrantLock> 为每个 id 分配一把锁,业务中先通过 id 获取锁,再加锁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX