与普通锁不同的是,分布式锁是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 缓存、数据库等三方存储中),以实现多个进程并发访问同一个临界资源,同一时刻只有一个进程可访问共享资源,确保数据的一致性。
为了确保分布式锁的可用性,我们在设计时应考虑到以下几点:
互斥性,即在分布式系统环境下,对于某一共享资源,需要保证在同一时间只能一个线程或进程对该资源进行操作。
具备锁失效机制,防止死锁。即使出现进程在持有锁的期间崩溃或者解锁失败的情况,也能被动解锁,保证后续其他进程可以获得锁。
可重入性,即进程未释放锁时,可以多次访问临界资源。
有高可用的获取锁和释放锁的功能,且性能要好。
建一张锁表,为申请者在锁表里建立一条记录,记录建立成功则获得锁,消除记录则释放锁
缺点: