You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.3 KiB

何为分布式锁?

  • 当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数
  • 用一个状态值表示锁,对锁的占用和释放通过状态值来标识

分布式锁的特点

  • 互斥性:和我们本地锁一样互斥性是最基本,但是分布式锁需要保证在不同节点的不同线程的互斥
  • 可重入性:同一个节点上的同一个线程如果获取了锁之后那么也可以再次获取这个锁
  • 锁超时:和本地锁一样支持锁超时,防止死锁
  • 高性能和高可用:加锁和解锁需要高效,同时也需要保证高可用防止分布式锁失效,可以增加降级
  • 支持阻塞和非阻塞和ReentrantLock一样支持lock和trylock以及tryLocklong timeout
  • 支持公平锁和非公平锁(可选):公平锁的意思是按照请求加锁的顺序获得锁,非公平锁就相反是无序的

三种方案对比

  • 从理解的难易程度角度(从低到高):数据库 > 缓存 > Zookeeper
  • 从实现的复杂性角度(从低到高)Zookeeper >= 缓存 > 数据库
  • 从性能角度(从高到低):缓存 > Zookeeper >= 数据库
  • 从可靠性角度(从高到低)Zookeeper > 缓存 > 数据库