SpringBoot + 分布式锁续约防过期:长任务执行中途锁失效?WatchDog 自动续期机制
一、问题背景:分布式锁失效的隐患 在分布式系统中,分布式锁是保证数据一致性的重要手段。最常见的实现方式是基于 Redis 的分布式锁,通常设置一个过期时间来防止死锁。 然而,在实际生产环境中,我们遇到了这样的问题: 2024-01-15 10:30:15 ERROR - 订单处理异常:库存扣减成功,但订单状态更新失败 2024-01-15 10:30:15 WARN - 分布式锁已过期释放,其他线程获取了锁 2024-01-15 10:30:16 INFO - 另一个线程开始处理同一订单... 问题分析: 锁的过期时间设置为 30 秒 订单处理任务实际执行了 45 秒 锁在第 30 秒自动过期释放 其他线程获取锁并开始处理 前一个线程继续执行,导致数据不一致 这就是典型的分布式锁续约问题:长任务执行中途锁失效,引发并发安全问题。 二、核心概念:分布式锁与 WatchDog 机制 2.1 分布式锁的基本原理 ┌────────────────────────────────────────────────────────────────┐ │ Redis 分布式锁工作流程 │ ├....