分布式锁
分布式锁的特点
- 互斥性:和我们本地锁一样互斥性是最基本,但是分布式锁需要保证在不同节点的不同线程的互斥。在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
- 高可用的获取锁与释放锁
- 高性能的获取锁与释放锁
- 可重入特性同一个节点上的同一个线程如果获取了锁之后那么也可以再次获取这个锁
- 具备锁失效机制,锁超时:和本地锁一样支持锁超时,防止死锁
- 支持阻塞和非阻塞:和ReentrantLock一样支持lock和trylock以及tryLock(long timeOut)
- 支持公平锁和非公平锁(可选):公平锁的意思是按照请求加锁的顺序获得锁,非公平锁就相反是无序的。这个一般来说实现的比较少
常见的分布式锁
- MYSQL
- Zookeeper
- Redis
- ETCD
接下来会分别分析现有的开源实现,然后自己的代码实现。