CN113254226A - 用于非对称业务场景的非对称分布式锁系统及实现方法 - Google Patents
用于非对称业务场景的非对称分布式锁系统及实现方法 Download PDFInfo
- Publication number
- CN113254226A CN113254226A CN202110695320.3A CN202110695320A CN113254226A CN 113254226 A CN113254226 A CN 113254226A CN 202110695320 A CN202110695320 A CN 202110695320A CN 113254226 A CN113254226 A CN 113254226A
- Authority
- CN
- China
- Prior art keywords
- lock
- local
- network
- manager
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种用于非对称业务场景的非对称分布式锁系统及实现方法,属一种分布式锁应用设计,系统包括服务节点,服务节点包括分布式锁管理器,分布式锁管理器接入本地锁管理器;本地锁管理器用于维护本地锁队列与网络锁队列;分布式锁管理器接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作。通过将共享锁与排它锁设计为本地所与网络锁,从而可根据不同的非对称业务场景将操作次数较多的锁设计为本地锁,另一个设计为网络锁,进而使两者具有不同的加锁方式,本地锁加锁完全避免网络通信,从而可以极大的改善作为本地锁的共享锁或排它锁的性能。
Description
技术领域
本发明涉及一种分布式锁,更具体的说,本发明主要涉及一种用于非对称业务场景的非对称分布式锁系统及实现方法。
背景技术
分布式锁是分布式领域一个非常重要的技术,用于在分布式环境下序列化多个节点对同一个资源的修改和访问,从而保证该资源的一致性。现有的分布式锁的实现技术主要有两种类型,一种是集中式,这种方式是基于一个集中的锁服务节点来实现分布式的锁功能,这种实现方式需要将所有的分布式的锁操作请求发送到给定的锁服务节点进行处理,然后将锁操作的结果返回给相应的请求节点。这种实现方式的优点是实现简单,所有的锁请求都通常只进行一次网络请求和回复。缺点是分布式锁的服务节点容易成为单点故障点,锁服务节点发生故障会导致整个分布式系统无法正常工作。另一种是对等式,这种方式是基于分布式的一致性协议(如Paxos,Raft等)来实现分布式的锁功能。这种实现方式是目前比较先进的分布式锁的实现方式,通常采用基于多数派协议实现分布式的一致性,没有集中的分布式锁的服务节点,没有单点故障,从而提供更高的分布式锁的可靠性和可用性。
而上述这些现有的分布式锁的实现方式都是基于完全对称的锁操作设计思想,也就是不区分不同的分布式锁类型(如本地锁、网络锁),所有类型的锁的操作都是采用统一的加锁和解锁方式。因此现有的分布式锁的实现方式比较适合同样不区分锁类型,或者所有锁类型的操作都比较均衡的业务场景,即本地锁(读锁)和网络锁(写锁)是相互对称的。但是在许多实际的分布式系统环境下,对不同的分布式锁类型的使用频繁程度,以及对性能的影响是不同的。这就导致在这些场景下使用现有的基于完全统一和对称思想设计的分布式锁实现方式就会对正常的业务场景造成非常大的网络响应延迟和巨大的性能损失,具体的说任何的加锁操作都需要至少进行一次网络交互。这就使得引入分布式锁后就必然对所有需要使用分布式锁的操作都引入额外的网络开销和延迟,从而影响整个分布式系统(如分布式数据库系统,分布式高性能计算系统等)的响应时间和处理能力。
上述对称的分布式锁在实践中适合于对分布式本地锁和网络锁的需求比较均衡的业务场景。但是在许多业务场景下,分布式系统对于本地锁和网络锁操作的需求是非均衡的,通常的情况下都会偏重于一种操作,而另一种操作会非常的少。比如在分布式数据库系统中,通常会使用分布式锁来序列化对数据库元数据信息的修改和访问,其中DDL语句需要使用网络锁来修改给定对象的元数据信息,而DML语句需要使用本地锁来防止读到被DDL语句部分修改的元数据信息。在正常的数据库使用业务场景下都是DML语句要远远多于DDL语句,因此这种情况下使用现有的对称方式的分布式锁的实现方式就会对正常的数据库使用场景引入巨大的响应延迟和性能损耗。因此有必要针对非对称的分布式锁系统进行研究和改进。
发明内容
本发明的目的之一在于针对上述不足,提供一种用于非对称业务场景的非对称分布式锁系统及实现方法,以期望解决现有技术中对称分布式锁在非对称的应用场景下会导致巨大的响应延迟和性能损耗等技术问题。
为解决上述的技术问题,本发明采用以下技术方案。
本发明一方面提供了一种用于非对称业务场景的非对称分布式锁系统,所述系统包括服务节点,所述服务节点包括分布式锁管理器,所述分布式锁管理器接入本地锁管理器。所述本地锁管理器用于维护本地锁队列与网络锁队列,所述本地锁队列中保存当前服务节点上所有本地锁的信息。所述网络锁队列中保存当前服务节点上所有网络锁的信息。所述分布式锁管理器用于接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作。如为分布式本地锁操作,首先在当前服务节点中的本地锁管理器中添加本地锁,然后检查本地锁管理器中是否存在与之冲突的网络锁,如检查结果为否,则调用本地锁管理器中的当前本地锁完成加锁。反之则加锁失败,并释放当前添加的本地锁。如为分布式网络锁操作,首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败。反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的加锁,任意一个服务节点返回失败结果,则加锁失败。所述其它服务节点执行相应的操作为首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果。反之则向主服务节点返回成功结果。
作为优选,进一步的技术方案是:所述的系统包括多个服务节点,且任意一个服务节点均可接受客户端发出的锁操作请求,作为所述主服务节点。所述本地锁为共享锁,所述网络锁为排它锁。
更进一步的技术方案是:所述分布式锁管理器还用于在网络锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送网络锁清理请求,由各个服务节点的分布式锁管理器释放当前所添加的网络锁。
更所述分布式锁管理器还用于解锁,所述解锁包括本地锁解锁与网络锁解锁,所述本地锁解锁为直接删除本地锁管理器中的本地锁。网络锁解锁为由首先删除当前服务节点中本地锁管理器中的网络锁,然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的解锁,任意一个服务节点返回失败结果,则解锁失败。所述其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的网络锁,如删除成功,则返回成功结果,反之则返回失败结果。
更进一步的技术方案是:任意一个服务节点在解锁操作时超时无响应,则网络锁也解锁失败。
更进一步的技术方案是:任意一个服务节点在加锁操作时超时无响应,则网络锁也加锁失败。
本发明另一方面提供了一种用于非对称业务场景的非对称分布式锁的实现方法,该方法包括如下步骤。
分布式锁管理器接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作,锁操作请求至少包括分布式本地锁操作与分布式网络锁操作。
如为分布式本地锁操作,首先在当前服务节点中的本地锁管理器中添加本地锁,然后检查本地锁管理器中是否存在与之冲突的网络锁,如检查结果为否,则调用本地锁管理器中的当前本地锁完成加锁。反之则加锁失败,并释放当前添加的本地锁。
如为分布式网络锁操作,首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败。反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的加锁,任意一个服务节点返回失败结果,则加锁失败。所述其它服务节点执行相应的操作为首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果。反之则向主服务节点返回成功结果。
作为优选,进一步的技术方案是:所述本地锁管理器具有本地锁队列与网络锁队列,所述本地锁队列中保存当前服务节点上所有本地锁的信息。所有网络锁队列中保存当前服务节点上所有网络锁的信息。所述本地锁为共享锁,所述网络锁为排它锁。
进一步的技术方案是:所述方法中本地锁的解锁操作为由分布式锁管理器直接删除本地锁管理器中的本地锁。所述方法中网络锁的解锁操作为由首先删除当前服务节点中本地锁管理器中的网络锁,然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的解锁,任意一个服务节点返回失败结果,则解锁失败。所述其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的网络锁,如删除成功,则返回成功结果,反之则返回失败结果。所述解锁失败还包括任意一个服务节点超时无响应。
更进一步技术方案是:所述分布式锁管理器在网络锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送网络锁清理请求,由各个服务节点的分布式锁管理器释放当前所添加的网络锁。所述网络锁加锁失败还包括任意一个服务节点超时无响应。
与现有技术相比,本发明的有益效果之一是:通过将共享锁与排它锁设计为本地锁与网络锁,从而可根据不同的非对称业务场景将操作次数较多的锁设计为本地锁,另一个设计为网络锁,进而使两者具有不同的加锁方式,本地锁加锁完全避免网络通信,从而可以极大的改善作为本地锁的共享锁或排它锁的性能,例如在绝大多少应用场景下都是使用共享锁,因此可保证正常的业务场景下响应时间和性能不受影响,没有额外的网络响应延迟和性能损失,同时本发明所提供的系统架构就实现方法简单,可在各类分布式系统中使用,适于在各类的非对称业务场景中使用,应用范围广阔。
附图说明
图1为用于说明本发明一个实施例的系统结构框图。
图2为用于说明本发明一个实施例的本地锁加锁流程图。
图3为用于说明本发明一个实施例的主服务节点网络锁加锁流程图。
图4为用于说明本发明一个实施例的从服务节点网络锁加锁流程图。
图5为用于说明本发明一个实施例的网络锁解锁流程图。
具体实施方式
本发明提供的分布式锁是基于非对称的业务场景进行设计和实现的,因此该方案中的分布式锁对于不同类型的锁操作(共享锁和排它锁)的设计和实现方式也是非对称的。由于在多数业务场景下分布式系统对于共享锁的使用会远远大于排它锁,因此下述实施例的描述都以这种业务场景作为参考,但是本发明的技术方案并不仅限于这种使用方式,对于偏重于排它锁,或是其它类似的非对称的分布式锁的业务场景也是同样适用的,只需要交换下述实施例中描述的排它锁和共享锁的设计和实现方式,或者根据实际业务场景中对分布式锁的偏重关系选择相应的设计和实现方式即可。
本发明中所称的非对称的分布式锁设计思想是基于非对称的业务场景,假设在正常业务场景下分布式共享锁的操作数目远远大于分布式排它锁的操作数目。为了最大限度的避免在正常业务场景下分布式锁对于网络响应延迟和性能的影响,就需要最大限度的降低分布式共享锁操作的网络延迟和性能开销。因此在本发明提供的设计方案中,共享锁被设计为一个本地锁,加锁和解锁都是完全的本地操作,完全不需要引入任何的网络请求和回复,从而也就将分布式共享锁的网络延迟和网络开销直接降为0,并且在实现本地锁的时候也基于内存变量的原子操作来实现,对本地的性能损耗也几乎为0。 因此分布式共享锁总的网络延迟为0,总的性能开销也几乎为0。
作为代价,非对称分布式排它锁的操作会比目前的其它分布式锁的实现方案更复杂一些,网络和性能开销也可能会更大一些。非对称分布式排它锁的加锁和解锁都需要访问所有可能使用非对称分布式共享锁的节点,在每个节点上完成排它锁的加锁或解锁操作。
下面结合附图对本发明作进一步阐述。
参考图1所示,本发明的第一实施例是一种用于非对称业务场景的非对称分布式锁系统,该系统包括服务节点,该服务节点包括分布式锁管理器,所述分布式锁管理器接入本地锁管理器。
上述本地锁管理器用于维护本地锁队列与排它锁队列,所述共享锁队列中保存当前服务节点上所有共享锁的信息。所述排它锁队列中保存当前服务节点上所有排它锁的信息。
本地锁管理器可以是任何支持互斥访问的锁实现方式,为了尽可以的减少对性能的影响,可以采用基本数据类型原子操作的锁实现方式。目前流行的CPU类型(如x86,ARM)等和开发语言(如C++,JAVA等)都支持基本数据类型(如 int)的原子操作(如 CAS)。通过使用原子操作,可以实现对性能影响更小的加锁和解锁实现方式。
上述分布式锁管理器用于接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作。如为分布式共享锁操作,首先在当前服务节点中的本地锁管理器中添加本地共享锁,然后检查本地锁管理器中是否存在与之冲突的排它锁,如检查结果为否,则调用本地锁管理器中的当前共享锁完成加锁。反之则加锁失败,并释放当前添加的共享锁。如为分布式排它锁操作,首先在本地锁管理器中添加排它锁,然后检查本地锁管理器中是否存在与之冲突的共享锁,如检查结果为是,则加锁失败。反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成排它锁的加锁,任意一个服务节点返回失败结果,则加锁失败。此处需要说明的是,任意一个服务节点在加锁操作时超时无响应,则排它锁也加锁失败。
上述其它服务节点执行相应的操作为首先在本地锁管理器中添加排它锁,然后检查本地锁管理器中是否存在与之冲突的共享锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果。反之则向主服务节点返回成功结果。
进一步的,正如图1所示出的,在本实施例中,前述系统包括多个服务节点,且每个服务节点的架构基本相同,且任意一个服务节点均可接受客户端发出的锁操作请求,作为所述主服务节点。
另一方面,上述系统中的分布式锁管理器还负责分布式锁的异常处理和锁清理工作。异常处理包括本地错操作的异常处理和远程RPC锁操作的异常处理。锁清理包括解锁过程中的锁清理和节点异常情况下的锁清理。例如在排它锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送排它锁清理请求,由各个服务节点的分布式锁管理器释放当前所添加的排它锁。同时,上述分布式锁管理器还用于解锁,所述解锁包括共享锁解锁与排它锁解锁,其中共享锁解锁为直接删除本地锁管理器中的共享锁。而排它锁解锁为由首先删除当前服务节点中本地锁管理器中的排它锁,然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成排它锁的解锁,任意一个服务节点返回失败结果,则解锁失败。前述其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的排它锁,如删除成功,则返回成功结果,反之则返回失败结果。此处需要说明的是,前述任意一个服务节点在解锁操作时超时无响应,则排它锁也解锁失败。
在上述实施例的系统中,非对称分布式锁的实现方式采用对等方式,每个参与分布式锁的服务节点都是对等的,没有集中的分布式锁服务服务节点,从而避免单点故障问题。每个服务节点上都包含两个主要的模块。分布式锁管理器和本地锁管理器。本地锁管理器内部维护共享锁和排它锁两个锁队列,接受和执行来自本服务节点分布式锁管理器的锁请求操作。分布式锁管理器接受客户端的分布式锁操作请求,并转发给本地锁管理器进程处理,同时也根据锁类型的情况通过RPC将锁请求发送到所有其它服务节点的分布式锁模块进行处理。
客户端将锁操作请求发送给本服务节点的分布式锁管理器,该服务节点是这个锁操作请求的主服务节点,其它可能参与的服务节点为从服务节点。主服务节点的分布式锁管理器根据锁的类型选择不同的操作方式,比如直接做本地锁操作或执行分布式锁操作。从服务节点接受主服务节点的操作请求,在当前服务节点上执行操作请求并返回相应的执行结果。从服务节点只会做本地锁操作,不会再转发从其它主服务节点接收到的操作请求。从客户端接受到分布式共享锁加锁请求的服务节点需要首先在本地添加共享锁,然后检查本地是否存在冲突的排它锁,如果没有就返回加锁成功,如果存在冲突的排它锁就需要释放掉刚才添加的共享锁,并返回加锁失败。解锁时只需要释放添加的共享锁即可。
从客户端接受到执行加锁请求的服务节点(该锁请求的主服务节点)需要首先在本地添加排它锁,然后检查本地是否存在冲突的共享锁,如果发现有冲突的共享锁则释放刚才添加的排它锁并返回失败,如果没有发现冲突的共享锁则将该分布式排它锁请求通过RPC 发送给所有其它服务节点(该锁请求的从服务节点)继续处理。其它服务节点在接受的分布式排它锁请求后的处理方式基本相同,也是先在当前服务节点添加排它锁,然后检查是否存在冲突的本地共享锁,如果有则返回失败,没有则返回成功。最初的服务节点在接受到所有服务节点的返回或者等待超时后根据各个服务节点返回的结果进行处理。如果所有服务节点均返回成功则返回加锁操作成功,如任何服务节点返回失败或超时则返回相应的错误。
本发明的另一个实施例是一种用于非对称业务场景的非对称分布式锁的实现方法,该方法包括了多个流程,具体为本地共享锁的加锁流程,主服务节点排它锁加锁流程,从服务节点排它锁加锁流程与排它锁解锁流程图。方法的步骤如下。
步骤S101.分布式锁管理器接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作,所述锁操作请求至少包括分布式共享锁操作与分布式排它锁操作。
步骤S111.如为分布式共享锁操作,参考图2所示,首先在当前服务节点中的本地锁管理器中添加本地共享锁。
步骤S112.然后检查本地锁管理器中是否存在与之冲突的排它锁,如检查结果为否,则调用本地锁管理器中的当前共享锁完成加锁。反之则加锁失败,并释放当前添加的共享锁。
步骤S121.如为分布式排它锁操作,参考图3所示,首先在本地锁管理器中添加排它锁。
步骤S122.然后检查本地锁管理器中是否存在与之冲突的共享锁,如检查结果为是,则加锁失败。反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成排它锁的加锁,任意一个服务节点返回失败结果,则加锁失败。
在上述步骤S122中,结合图4所示,其它服务节点执行相应的操作为首先在本地锁管理器中添加排它锁,然后检查本地锁管理器中是否存在与之冲突的共享锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果。反之则向主服务节点返回成功结果。
步骤S211.前述分布式锁管理器在排它锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送排它锁清理请求。
步骤S122.由各个服务节点的分布式锁管理器释放当前所添加的排它锁。并且前述排它锁加锁失败还包括任意一个服务节点超时无响应。
基于上述的步骤,本实施例的方法还包括。
步骤S311.共享锁的解锁操作为由分布式锁管理器直接删除本地锁管理器中的共享锁
步骤S321.参考图5所示,排它锁的解锁操作为由首先删除当前服务节点中本地锁管理器中的排它锁。
步骤S322.然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成排它锁的解锁,任意一个服务节点返回失败结果,则解锁失败。
上述步骤S322中的其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的排它锁,如删除成功,则返回成功结果,反之则返回失败结果。同时前述解锁失败还包括任意一个服务节点超时无响应。
在上述实施例的方法中,本地锁管理器具有共享锁队列与排它锁队列,所述共享锁队列中保存当前服务节点上所有共享锁的信息。所有排它锁队列中保存当前服务节点上所有排它锁的信息。所述共享锁为共享锁,所述排它锁为排它锁。
基于本发明上述的实施例可知,本发明所公开技术方案的的关键点之一是使用非对称的设计思想来处理分布式锁中的不同类型的锁操作,选择一种代价最小的锁实现方式来处理分布式锁中使用最频繁、对性能影响最大的锁类型。将分布式锁处理的网络延迟和性能损耗的代价转移到很少使用的锁类型上,这样就可以实现在正常的业务场景下对网络延迟和性能没有影响,或者影响很小,同时对整个系统总的响应延迟和性能也有很大的提升。
除上述以外,还需要说明的是在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”等,指的是结合该实施例描述的具体特征、结构或者特点包括在本申请概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。
尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开、附图和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
Claims (10)
1.一种用于非对称业务场景的非对称分布式锁系统,其特征在于:所述系统包括服务节点,所述服务节点包括分布式锁管理器,所述分布式锁管理器接入本地锁管理器;
所述本地锁管理器用于维护本地锁队列与网络锁队列,所述本地锁队列中保存当前服务节点上所有本地锁的信息;所述网络锁队列中保存当前服务节点上所有网络锁的信息;
所述分布式锁管理器用于接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作:
如为分布式本地锁操作,首先在当前服务节点中的本地锁管理器中添加本地锁,然后检查本地锁管理器中是否存在与之冲突的网络锁,如检查结果为否,则调用本地锁管理器中的当前本地锁完成加锁;反之则加锁失败,并释放当前添加的本地锁;
如为分布式网络锁操作,首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败;反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的加锁,任意一个服务节点返回失败结果,则加锁失败;
所述其它服务节点执行相应的操作为首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果;反之则向主服务节点返回成功结果。
2.根据权利要求1所述的用于非对称业务场景的非对称分布式锁系统,其特征在于:所述的系统包括多个服务节点,且任意一个服务节点均可接受客户端发出的锁操作请求,作为所述主服务节点;所述本地锁为共享锁,所述网络锁为排它锁。
3.根据权利要求1或2所述的用于非对称业务场景的非对称分布式锁系统,其特征在于:所述分布式锁管理器还用于在网络锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送网络锁清理请求,由各个服务节点的分布式锁管理器释放当前所添加的网络锁。
4.根据权利要求1所述的用于非对称业务场景的非对称分布式锁系统,其特征在于:所述分布式锁管理器还用于解锁,所述解锁包括本地锁解锁与网络锁解锁,所述本地锁解锁为直接删除本地锁管理器中的本地锁;
所述网络锁解锁为由首先删除当前服务节点中本地锁管理器中的网络锁,然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的解锁,任意一个服务节点返回失败结果,则解锁失败;
所述其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的网络锁,如删除成功,则返回成功结果,反之则返回失败结果。
5.根据权利要求4所述的用于非对称业务场景的非对称分布式锁系统,其特征在于:任意一个服务节点在解锁操作时超时无响应,则网络锁也解锁失败。
6.根据权利要求1或5所述的用于非对称业务场景的非对称分布式锁系统,其特征在于:任意一个服务节点在加锁操作时超时无响应,则网络锁也加锁失败。
7.一种用于非对称业务场景的非对称分布式锁的实现方法,其特征在于:所述的方法包括如下步骤:
分布式锁管理器接受客户端发出的锁操作请求,并根据锁操作请求的类型执行后续操作,所述锁操作请求至少包括分布式本地锁操作与分布式网络锁操作:
如为分布式本地锁操作,首先在当前服务节点中的本地锁管理器中添加本地锁,然后检查本地锁管理器中是否存在与之冲突的网络锁,如检查结果为否,则调用本地锁管理器中的当前本地锁完成加锁;反之则加锁失败,并释放当前添加的本地锁;
如为分布式网络锁操作,首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败;反之则通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的加锁,任意一个服务节点返回失败结果,则加锁失败;
所述其它服务节点执行相应的操作为首先在本地锁管理器中添加网络锁,然后检查本地锁管理器中是否存在与之冲突的本地锁,如检查结果为是,则加锁失败,向主服务节点返回失败结果;反之则向主服务节点返回成功结果。
8.根据权利要求7所述的实现方法,其特征在于:所述本地锁管理器具有本地锁队列与网络锁队列,所述本地锁队列中保存当前服务节点上所有本地锁的信息;所有网络锁队列中保存当前服务节点上所有网络锁的信息;所述本地锁为共享锁,所述网络锁为排它锁。
9.根据权利要求7所述的实现方法,其特征在于:所述方法中本地锁的解锁操作为由分布式锁管理器直接删除本地锁管理器中的本地锁;所述方法中网络锁的解锁操作为由首先删除当前服务节点中本地锁管理器中的网络锁,然后通过网络向其它服务节点发送RPC请求,由其它服务节点执行相应的操作并等待结果,直至所有服务节点均返回成功结果,则完成网络锁的解锁,任意一个服务节点返回失败结果,则解锁失败;
所述其它服务节点执行相应的操作为删除当前服务节点的本地管理器中的网络锁,如删除成功,则返回成功结果,反之则返回失败结果;
所述解锁失败还包括任意一个服务节点超时无响应。
10.根据权利要求7所述的实现方法,其特征在于:所述分布式锁管理器在网络锁加锁失败后,主服务节点的分布式锁管理器向所有的服务节点发送网络锁清理请求,由各个服务节点的分布式锁管理器释放当前所添加的网络锁;所述网络锁加锁失败还包括任意一个服务节点超时无响应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110695320.3A CN113254226B (zh) | 2021-06-23 | 2021-06-23 | 用于非对称业务场景的非对称分布式锁系统及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110695320.3A CN113254226B (zh) | 2021-06-23 | 2021-06-23 | 用于非对称业务场景的非对称分布式锁系统及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254226A true CN113254226A (zh) | 2021-08-13 |
CN113254226B CN113254226B (zh) | 2021-09-24 |
Family
ID=77189290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110695320.3A Active CN113254226B (zh) | 2021-06-23 | 2021-06-23 | 用于非对称业务场景的非对称分布式锁系统及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254226B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113994A (zh) * | 2021-08-30 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596754A (en) * | 1992-10-29 | 1997-01-21 | Digital Equipment Corporation | Method for performing private lock management |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
CN103744719A (zh) * | 2013-12-30 | 2014-04-23 | 华为技术有限公司 | 锁管理方法及系统、锁管理系统的配置方法及装置 |
CN104239418A (zh) * | 2014-08-19 | 2014-12-24 | 天津南大通用数据技术股份有限公司 | 支持分布式数据库的分布锁方法以及分布式数据库系统 |
US20160021026A1 (en) * | 2014-07-15 | 2016-01-21 | Cohesity, Inc. | Distributed fair allocation of shared resources to constituents of a cluster |
CN111797107A (zh) * | 2020-07-08 | 2020-10-20 | 贵州易鲸捷信息技术有限公司 | 混合乐观锁和悲观锁的数据库事务并发控制方法 |
CN112099962A (zh) * | 2020-11-06 | 2020-12-18 | 成都新希望金融信息有限公司 | 分布式锁实现方法、装置和电子设备 |
-
2021
- 2021-06-23 CN CN202110695320.3A patent/CN113254226B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596754A (en) * | 1992-10-29 | 1997-01-21 | Digital Equipment Corporation | Method for performing private lock management |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
CN103744719A (zh) * | 2013-12-30 | 2014-04-23 | 华为技术有限公司 | 锁管理方法及系统、锁管理系统的配置方法及装置 |
US20160021026A1 (en) * | 2014-07-15 | 2016-01-21 | Cohesity, Inc. | Distributed fair allocation of shared resources to constituents of a cluster |
CN104239418A (zh) * | 2014-08-19 | 2014-12-24 | 天津南大通用数据技术股份有限公司 | 支持分布式数据库的分布锁方法以及分布式数据库系统 |
CN111797107A (zh) * | 2020-07-08 | 2020-10-20 | 贵州易鲸捷信息技术有限公司 | 混合乐观锁和悲观锁的数据库事务并发控制方法 |
CN112099962A (zh) * | 2020-11-06 | 2020-12-18 | 成都新希望金融信息有限公司 | 分布式锁实现方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
洪家芬: "分布式数据库系统的并发控制机制研究", 《信息科技》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113994A (zh) * | 2021-08-30 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113254226B (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102011949B1 (ko) | 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법 | |
CA2205725C (en) | Preventing conflicts in distributed systems | |
US6539446B1 (en) | Resource locking approach | |
JP4637842B2 (ja) | クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知 | |
US9317384B2 (en) | Cache data processing using cache cluster with configurable modes | |
US9658879B2 (en) | System and method for supporting buffer allocation in a shared memory queue | |
US7743036B2 (en) | High performance support for XA protocols in a clustered shared database | |
US6510478B1 (en) | Method and apparatus for coordination of a shared object in a distributed system | |
US6999997B2 (en) | Method and apparatus for communication of message data using shared queues | |
US6959337B2 (en) | Networked system for assuring synchronous access to critical facilities | |
CN108710638B (zh) | 一种基于混合rdma操作的分布式并发控制方法及系统 | |
US9749445B2 (en) | System and method for updating service information for across-domain messaging in a transactional middleware machine environment | |
US6862595B1 (en) | Method and apparatus for implementing a shared message queue using a list structure | |
EP0889397A2 (en) | A method and system for reliable remote object reference management | |
CN112039970B (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
US7716307B1 (en) | Method and apparatus for reducing client-server messages associated with opening a file | |
CN109213571B (zh) | 一种内存共享方法、容器管理平台及计算机可读存储介质 | |
US20090235255A1 (en) | Transparent support for distributed transactions in a clustered disk-sharing database environment | |
CN113254226B (zh) | 用于非对称业务场景的非对称分布式锁系统及实现方法 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
CN111258771A (zh) | 一种基于Raft算法的分布式锁的实现方法及系统 | |
US20210349863A1 (en) | Record-by-record live migration using a lock store | |
CN112099961A (zh) | 一种基于锁状态缓存的分布式锁管理器的实现方法 | |
JPH04271453A (ja) | 複合電子計算機 | |
CN113918380A (zh) | 分布式存储读取系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |