什么是分布式锁,为什么要使用它?

6

为什么人们需要分布式锁?

当共享资源由其本地机器保护时,这是否意味着我们不需要分布式锁呢?

我的意思是,如果通过某种api或服务将共享资源暴露给其他人,并且此api或服务使用其本地锁进行保护,那么我们就不需要这种分布式锁了吗? 我说得对吗?

2个回答

4

Quora上询问后,我认为我得到了答案。

假设有N个工作服务器访问一个数据库服务器。这里有两个部分:

  1. 数据库有自己的锁定方法来保护数据不被其他客户端(N个工作服务器)并发访问破坏。这就是本地锁在数据库中的作用。

  2. N个工作服务器可能需要一些协调以确保它们正在做正确的事情,这是应用程序特定的。这就是分布式锁发挥作用的地方。比如,如果两个运行相同进程的工作服务器要删除数据库中的某个表并向该表添加一些记录,则数据库服务器可以确保其内部数据是正确的,但这两个进程需要分布式锁来协调彼此,否则一个进程将删除另一个进程的表。


2
是和否,如果你通过锁定从本地API公开信息以防止互斥,取决于锁的设置,你的实现可能正是分布式锁试图实现的内容,但如果你没有开发API,那么你就必须深入源代码中查找,看它是本地化还是分布式锁系统。老实说,锁就是锁,不管怎样都是试图做同样的事情。与本地锁相比,分布式锁的好处是你已经考虑了排队来防止客户端在昂贵的缓存点上过度访问。

嗨,请检查我的答案,希望它能澄清这个问题。 - ming.kernel
@ming.kernel 你的回答是教科书式的锁和互斥,正如我所说,一个锁就是一个锁。 - Jeff Langemeier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接