一个分布式锁「失效」的案例分析

码志 at 
一个分布式锁「失效」的案例分析的配图
小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?故事从接到需求开始说起。接到需求小猿前一阵接到一个小任务,里面有一个功能对应的场景如下:封装一个对账户余额进行加减操作的方法;所属服务部署了多个实例;这个方法可能会有并发调用。注:实际业务场景比较复杂,已做简化。小猿略作思考,就抓住了关键点:余额操作——要注意事务,多实例——要注意并发。小猿的原始代码如下:@Override@Lock(key = "#accountNo")@Transactional(rollbackFor = Exception.class)public void updateBalance(String acco……