面试官问:你们的分布式锁为什么选 Redis 不选 ZK 七月底跳槽面试,被问到分布式锁。我说我们用 Redis + Redisson。面试官追了一句:"Redis 锁在主从切换时会丢锁,你们业务能接受?为什么不用 Zookeeper?" 我当时答得挺虚的。回来把三种实现都搭了一遍,用 JMeter
一次库存超发,我们把手写的 setnx 锁全换成了 Redisson 3 月底的一次促销活动,某款商品库存 200 件,实际卖出 213 件。超发 13 件。客服赔了 13 张 50 元券,加上运营的抱怨,够我记很久。 查下来是分布式锁失效。我们当时用的是自己封装的 setnx 锁,问题出在一个很隐
同一笔订单被扣了两次款:我写的分布式锁形同虚设 十月下旬,财务对账发现 7 笔订单重复扣款。查下来是用户点了两次支付按钮,两个请求几乎同时打到两台不同的应用服务器上,都通过了库存和状态校验,各扣了一次。 我当时的第一反应是"加个锁不就行了",然后写出了这一版: public boolean pay(