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

min*_*nel 5 python database memcached web-services web-applications

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

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

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

min*_*nel 4

在知乎上询问了人们之后。我想我得到了答案。

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

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

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