写在前面的文章
分布式锁简述
在单系统应用中,同步访问临界资源可以通过 JVM 锁进行控制,在分布式应用中,则必须通过分布式锁进行控制。
分布式锁应该具备如下特性:
- 互斥性。在分布式环境下,同一时间只有一个客户端能持有锁。
- 具备锁失效机制,防止死锁。例如锁的持有者在持有锁期间崩溃而没有主动解锁,锁需要在规定时间后自动失效,以保证后续可用。
- 具备可重入性,防止死锁。
- 解铃还须系铃人。释放锁与加锁应该为相同客户端,不能把别人加的锁给解了。
实现分布式锁的方式有很多种,比较常用的有通过 Redis
或者 Zookeeper
进行实现。本文讲解的就是如何通过 Redis
实现分布式锁。