分布式锁的特征:
- 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行
- 高可用的获取锁与释放锁
- 高性能的获取锁与释放锁
- 具备可重入特性(可理解为重新进入,由多个任务并发使用,而不必担心数据错误)
- 具备锁失效机制,防止死锁
- 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败
分布式锁的3个核心要素:
加锁
解锁
锁超时:
锁超时是什么意思呢?
如果一个得到锁的线程在执行任务的过程中挂掉,来不及显式地释放锁,这块资源将会永远被锁住(死锁),别的线程再也别想进来。
Zookeeper实现分布式锁:
Zookeeper:利用 Zookeeper 的顺序临时节点,来实现分布式锁和等待队列。
Zookeeper 设计的初衷,就是为了实现分布式锁服务的。