面试官:你为什么要采用分布式锁?
当面试官这样子问的时候,我自己的一个理解呢,就是先讲一下我们没有采用分布式锁之前是如何保证我们系统资源同一时刻只能被同一线程所访问的。
————————————————
我:分布式锁呢,是为了解决多个并发同时向同一个资源进行访问,而在我们没有使用分布式锁之前,在单体应用上,我们采用的是synchronized同步锁来解决这一种情况,多个并发过来的一瞬间,他们是不是都得看见一个标识,从而确定这个资源已经被占用了。
————————————————
这个资源就是被访问的资源,也被称之为“临界区域”。
————————————————
我:这个标识呢,就是锁,这个锁我们是使用的是堆内存中的数据来作为我们的锁,因为堆内存中的数据在单体应用上是对所有线程(并发)都可见的(堆内存不知道是什么的,建议学习10分钟,小白简单先了解一下即可。),而在多台服务器上,他们各自的堆内存数据都是不可见的,那这个时候,我们是不是就得出现一个所有机器都可以看得见的一个标识呢?
而这个标识,便是分布式锁,采用第三方缓存redis来实现,当然,也有其他方法,例如什么数据
库来实现分布式锁啊,zook来实现分布式锁等,建议大家呢都看一下。
面试官:就你了。