一、分布式锁的几种实现方式
1.1 分布式锁的三种实现方式
- 1.数据库乐观锁;
- 2.基于Redis的分布式锁;
- 3.基于ZooKeeper的分布式锁。
1.2 使用分布式锁要满足的条件
- 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)
- 共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)
- 同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问,谁管你资源竞争不竞争)
二、基于数据库实现分布式锁
2.1 基于数据库表
要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。
当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。
创建这样一张数据库表