一、什么是分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式,为了防止分布式系统中的多个进程之间相互干扰,需要对不同机器的这些进程进行协调。
如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。
分布式锁应该具备条件:
- 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
- 高可用的获取锁与释放锁;
- 高性能的获取锁与释放锁;
- 具备可重入特性;
- 具备锁失效机制,防止死锁;
- 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。
二、实现分布式锁的方式
实现方式 | 链接 |
---|---|
基于数据库实现分布式锁 | 点击查看 |
基于缓存(Redis)实现分布式锁 | 点击查看 |
基于Zookeeper实现分布式锁原理 | 点击查看 |
从理解的难易程度角度(从低到高)
数据库 > 缓存 > Zookeeper
从实现的复杂性角度(从低到高)
Zookeeper >= 缓存 > 数据库
从性能角度(从高到低)
缓存 > Zookeeper >= 数据库
从可靠性角度(从高到低)
Zookeeper > 缓存 > 数据库