老废物乐园 瓜子的技术笔记 · Java / AI / 金融科技

分布式锁的三种实现对比:Redis、Zookeeper、数据库

面试官问:你们的分布式锁为什么选 Redis 不选 ZK 七月底跳槽面试,被问到分布式锁。我说我们用 Redis + Redisson。面试官追了一句:"Redis 锁在主从切换时会丢锁,你们业务能接受?为什么不用 Zookeeper?" 我当时答得挺虚的。回来把三种实现都搭了一遍,用 JMeter

遥望星星 遥望星星 发布于 2020-02-12

Redis 分布式锁从 setnx 到 Redisson 的演进

一次库存超发,我们把手写的 setnx 锁全换成了 Redisson 3 月底的一次促销活动,某款商品库存 200 件,实际卖出 213 件。超发 13 件。客服赔了 13 张 50 元券,加上运营的抱怨,够我记很久。 查下来是分布式锁失效。我们当时用的是自己封装的 setnx 锁,问题出在一个很隐

遥望星星 遥望星星 发布于 2019-12-05

Redis 分布式锁的正确实现:setnx 的那些坑

同一笔订单被扣了两次款:我写的分布式锁形同虚设 十月下旬,财务对账发现 7 笔订单重复扣款。查下来是用户点了两次支付按钮,两个请求几乎同时打到两台不同的应用Ubuntu 服务器上,都通过了库存和状态校验,各扣了一次。 我当时的第一反应是"加个锁不就行了",然后写出了这一版: public boole

遥望星星 遥望星星 发布于 2019-03-19