文章目录
- 1、基本原理
- 2、不同实现方式
1、基本原理
分布式锁:满足分布式系统或集群模式下
多进程
可见并且互斥
的锁。
分布式锁的核心思想
就是让大家都使用同一把锁
,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
那么分布式锁他应该满足一些什么样的条件呢?
可见性
:多个线程都能看到相同的结果,注意:这个地方说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的意思
互斥
:互斥是分布式锁的最基本的条件,使得程序串行
执行
高可用
:程序不易崩溃,时时刻刻都保证较高的可用性
安全性
:安全也是程序中必不可少的一环
2、不同实现方式
常见的分布式锁有三种
Mysql
:mysql本身就带有锁机制,但是由于mysql性能本身一般,所以采用分布式锁的情况下,其实使用mysql作为分布式锁比较少见
Redis
:redis作为分布式锁是非常常见的一种使用方式,现在企业级开发中基本都使用redis或者zookeeper作为分布式锁,利用setnx
这个方法,如果插入key成功,则表示获得到了锁,如果有人插入成功,其他人插入失败则表示无法获得到锁,利用这套逻辑来实现分布式锁
Zookeeper
:zookeeper也是企业级开发中较好的一个实现分布式锁的方案