一、什么是分布式锁?
在我们写Java程序的时候,多线程争取同一个资源的时候,经常会使用到诸如syncchronize或Lock来实现锁操作,这种锁通常被称为“本地锁”。但是本地锁只能适用于在同一个进程内(同一个应用内的线程之间锁定资源),如果应用是分布式部署的,彼此之间是独立的进程,进程之间又存在需要争夺的资源,那么该如何对资源进行锁定?这就需要使用到分布式锁。
其实分布式锁和本地锁的基本原理是一样的,举个例子:上厕所
- 4人去上厕所,厕所只有2个坑位
- 先到坑位的人先占,占有后锁门(也就是上锁)
- 后到的人没有占到坑位,只能等待
- 先使用“坑位”的人,使用完资源