无敌萌萌馨

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

事件:生产环境部署两台,每天凌晨1点,定时任务同步更新(先删除,后全部插入)账号表,使用了redis分布式锁,发现定时任务还是执行了两次,导致数据重复,影响对应业务。

 

原因分析:定时任务执行的逻辑是调用异步方法执行,导致对应的已获取分布式锁被快速的释放。因此第二台机器也有机会获取到锁,导致对应的逻辑可能同时执行了两次。

 

解决方案:使用countDownLatch指令枪,将异步执行逻辑阻塞在主线程,等全部执行完了之后,再去释放锁,拉开了执行时间,从而有效避免两个服务都能获取到分布式锁。

posted on 2022-08-31 10:06  无敌萌萌馨  阅读(319)  评论(0)    收藏  举报