CN113296904A - 分布式系统中分布式锁调度方法及装置 - Google Patents

分布式系统中分布式锁调度方法及装置 Download PDF

Info

Publication number
CN113296904A
CN113296904A CN202110182313.3A CN202110182313A CN113296904A CN 113296904 A CN113296904 A CN 113296904A CN 202110182313 A CN202110182313 A CN 202110182313A CN 113296904 A CN113296904 A CN 113296904A
Authority
CN
China
Prior art keywords
distributed lock
node
distributed
lock
authorization
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.)
Pending
Application number
CN202110182313.3A
Other languages
English (en)
Inventor
刘扬宽
吕建枢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202110182313.3A priority Critical patent/CN113296904A/zh
Publication of CN113296904A publication Critical patent/CN113296904A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本说明书提供分布式系统中分布式锁调度方法及装置,所述方法包括:分布式锁申请节点检查当前节点的授权状态,向分布式锁主管节点发送分布式锁请求;分布式锁主管节点读取分布式锁授权列表,在分布式授权列表中存在节点标识的情况下,向节点标识对应的分布式锁持有节点发送分布式锁召回请求;分布式锁持有节点响应于分布式锁召回请求确定本地锁的使用状态,在本地锁的使用状态为释放状态的情况下,向分布式锁主管节点发送分布式锁归还信息;分布式锁主管节点在接收到分布式锁归还信息的情况下,向分布式锁申请节点发送分布式锁授权指令;分布式锁申请节点响应于分布式锁授权指令将当前节点的授权状态设置为授权。

Description

分布式系统中分布式锁调度方法及装置
技术领域
本说明书涉及互联网技术领域,特别涉及分布式系统中分布式锁调度方法及装置。
背景技术
随着互联网技术的快速发展,分布式系统也得到了广泛的应用,分布式锁在访问共享资源的分布式系统汇总,在维护信息同步和数据一致性的过程中,发挥着重要的作用,分布式锁的性能也决定了共享文件系统的性能。
现有的分布式系统中的节点需要访问共享资源时,需要先向锁的主节点远程申请分布式锁,当获得授权后才能访问共享资源,当结束访问共享资源后,该节点将发送远程请求释放分布式锁,因此对于一次共享资源的访问,需要经过两次远程请求,开销巨大,严重降低了分布式系统的性能,进而需要更简单更便捷的方法解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了分布式系统中分布式锁调度方法及装置,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种分布式系统中分布式锁调度方法,所述分布式系统包括分布式锁申请节点、分布式锁主管节点和分布式锁持有节点,所述方法包括:
所述分布式锁申请节点在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
所述分布式锁主管节点读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在所述分布式锁持有节点的节点标识的情况下,向所述分布式锁持有节点发送分布式锁召回请求;
所述分布式锁持有节点响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权;
所述分布式锁主管节点在接收到所述分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并在所述目标资源的分布式锁授权列表中记录所述分布式锁申请节点的节点标识;
所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
根据本说明书实施例的第二方面,提供了一种分布式系统中分布式锁调度方法,应用于分布式锁申请节点,包括:
检查当前节点的授权状态;
在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
接收所述分布式锁主管节点发送的分布式锁授权指令;
响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
根据本说明书实施例的第三方面,提供了一种分布式系统中分布式锁调度方法,应用于分布式锁主管节点,包括:
接收分布式锁申请节点发送的目标资源的分布式锁请求;
读取所述目标资源的分布式锁授权列表;
在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求;
在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
根据本说明书实施例的第四方面,提供了一种分布式系统中分布式锁调度方法,应用于分布式锁持有节点,包括:
接收分布式锁主管节点发送的分布式锁召回请求;
响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态;
在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
根据本说明书实施例的第五方面,提供了一种分布式系统中分布式锁调度装置,应用于分布式锁申请节点,包括:
检查模块,被配置为检查当前节点的授权状态;
发送模块,被配置为在在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
接收模块,被配置为接收所述分布式锁主管节点发送的分布式锁授权指令;
设置模块,被配置为响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
根据本说明书实施例的第六方面,提供了一种分布式系统中分布式锁调度装置,应用于分布式锁主管节点,包括:
接收模块,被配置为接收分布式锁申请节点发送的目标资源的分布式锁请求;
读取模块,被配置为读取所述目标资源的分布式锁授权列表;
第一发送模块,被配置为在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求;
第二发送模块,被配置为在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
根据本说明书实施例的第七方面,提供了一种分布式系统中分布式锁调度装置,应用于分布式锁持有节点,包括:
接收模块,被配置为接收分布式锁主管节点发送的分布式锁召回请求;
确定模块,被配置为响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态;
发送模块,被配置为在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
根据本说明书实施例的第八方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行时实现任意所述分布式系统中分布式锁调度方法的步骤。
根据本说明书实施例的第九方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意所述分布式系统中分布式锁调度方法的步骤。
本说明书提供的分布式系统中分布式锁调度方法,所述分布式系统包括分布式锁申请节点、分布式锁主管节点和分布式锁持有节点;所述方法包括:所述分布式锁申请节点在所述申请节点本地锁状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;所述分布式锁主管节点读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在所述分布式锁持有节点的节点标识的情况下,向所述分布式锁持有节点发送分布式锁召回请求;所述分布式锁持有节点响应于所述分布式锁召回请求确定持有节点本地锁的使用状态,在所述持有节点本地锁的使用状态为未被占用的情况下,向所述分布式锁主管节点发送分布式锁归还信息;所述分布式锁主管节点在接收到所述分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并在所述目标资源的分布式锁授权列表中记录所述分布式锁申请节点的节点标识;所述分布式锁申请节点响应于所述分布式锁授权指令将所述目标资源的申请节点本地锁状态设置为授权。
本说明书一实施例实现了分布式系统中分布式锁调度方法,分布式锁持有节点从分布式锁主管节点处获得分布式锁的授权后,在被分布式锁主管节点召回授权之前,分布式锁持有节点一直持有该分布式锁,访问请求无需每次都远程申请分布式锁的操作,而是通过本地进程访问该分布式锁,通过本地锁访问目标资源处理延时小,效率高,有效提高访问共享资源的性能,当有分布式锁申请节点向分布式锁主管节点申请该分布式锁的情况下,分布式锁主管节点才向分布式锁持有节点发送分布式锁召回请求,当分布式锁持有节点满足条件的情况下将分布式锁的授权还给分布式锁主管节点,再由分布式锁主管节点授权给分布式锁申请节点,减少了耗时较大的远程分布式锁请求,当再有访问请求抵达分布式锁申请节点的情况下,无需再向分布式锁主管节点申请授权,提高了分布式锁的性能,进而提高了共享资源的访问效率。
附图说明
图1是本说明书一实施例提供的分布式系统中分布式锁调度方法的流程图;
图2是本说明书一实施例提供的一种应用于访问共享资源R的分布式系统中分布式锁调度方法的交互示意图;
图3是本说明书一实施例提供的应用于分布式锁申请节点的分布式系统中分布式锁调度方法的流程图;
图4是本说明书一实施例提供的应用于分布式锁申请节点的分布式系统中分布式锁调度装置的结构示意图;
图5是本说明书一实施例提供的应用于分布式锁主管节点的分布式系统中分布式锁调度方法的流程图;
图6是本说明书一实施例提供的应用于分布式锁主管节点的分布式系统中分布式锁调度装置的结构示意图;
图7是本说明书一实施例提供的应用于分布式锁持有节点的分布式系统中分布式锁调度方法的流程图;
图8是本说明书一实施例提供的应用于分布式锁持有节点的分布式系统中分布式锁调度装置的结构示意图;
图9是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
分布式锁申请节点:Requester,分布式系统中分布式锁的申请节点。
分布式锁主管节点:Master,分布式系统中分布式锁的主管节点。
分布式锁持有节点:Holder,分布式系统中分布式锁的持有节点。
分布式锁:为防止分布式系统中多个进程之间相互干扰,通过一种分布式协调技术对进程进行调度,分布式协调技术的核心就是分布式锁,当某个进程被授予分布式锁的情况下,则其他进程无法在调用所述分布式锁。
在本说明书中,提供了分布式系统中分布式锁调度方法及装置,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一实施例提供的分布式系统中分布式锁调度方法的流程图,所述分布式系统包括分布式锁申请节点、分布式锁主管节点和分布式锁持有节点,具体包括以下步骤:
步骤102:所述分布式锁申请节点在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求。
分布式系统中通常会有多个节点,资源在每个节点中进行共享,当有访问请求到达某个节点时,为了防止多个节点之间读写资源造成的资源不一致,通常会通过分布式锁的形式进行协调统一。分布式锁模块是分布式文件系统维护共享资源一致和信息同步的比不可少的部分,维护分布式锁授权信息的节点为分布式锁的主管节点,获得分布式锁授权的节点为分布式锁持有节点,向分布式锁主管节点发送分布式锁授权申请的节点为分布式锁申请节点。
目标资源即为用户希望读写的内容,如某个文件、视频、音频等等,目标资源的具体形式以实际应用为准,在本说明书提供的一个或多个实施例中对此不做限制。目标资源通常在分布式系统中的每个节点中都有备份,当某个节点接收到目标资源的访问请求时,需要对目标资源进行读写,此时,为了保证数据的一致性,需要保证在同一时刻只有一个节点对目标资源进行处理,然后再在分布式系统中同步,通常情况下,每个目标资源对应一个分布式锁。
所述分布式锁申请节点为希望申请到目标资源的分布式锁授权的节点,分布式锁申请节点首先检查目标资源的分布式锁在当前节点的授权状态,在当前节点的授权状态为未授权的情况下,则需要向分布式锁主管节点发送所述目标资源的分布式锁请求;在当前节点的授权状态为授权的情况下,则说明当前节点可以认定是分布式锁的授权节点,可以直接读取目标资源。在实际应用中,每个节点中会保存一个数据表,用于保存某个分布式锁在当前节点的授权状态,直接读取该数据表即可确定当前节点是否已经获得授权。
在本说明书提供的一具体实施方式中,以分布式系统中包括3个节点分别为节点1、节点2和节点3为例,每个节点中均存储有一个视频F,节点1为视频F对应的分布式锁主管节点,当节点2希望申请目标资源的分布式锁授权时,节点2即为分布式锁申请节点,节点2首先检查数据表中关于视频F对应的授权信息,确定节点2是否获得了视频F的分布式锁的授权,当节点2未获得视频F的分布式锁授权的情况下,由节点2向节点1发送分布式锁请求。
可选的,所述方法还包括:
所述分布式锁申请节点接收目标资源的访问请求,响应于所述访问请求检查所述目标资源的分布式锁在当前节点的授权状态。
在实际应用中,通常是当用户希望访问目标资源的时候,向分布式系统发送针对目标资源的访问请求,当分布式系统中的分布式锁申请节点接收到目标资源的访问请求的时候,响应于所述访问请求来检查所述目标资源的分布式锁在当前节点的授权状态。
在本说明书提供的一具体实施方式中,沿用上例,节点2接收到用户发送的针对视频F的访问请求,节点2需要访问所述视频F,需要先获得视频F的分布式锁,因此,节点2首先检查节点2是否获得视频F的分布式锁的授权。
可选的,所述方法还包括:
所述分布式锁申请节点在所述当前节点的授权状态为授权的情况下,加载当前节点的本地锁,通过所述当前节点的本地锁访问所述目标资源。
在实际应用中,在确定当前节点已经获得目标资源的分布式锁的授权的情况下,则可以直接加载所述目标资源对应的本地锁,在加载锁成功后,当前节点的本地进程均可以通过本地锁直接访问目标资源,实现对目标资源的读写操作。
在本说明书提供的一具体实施方式中,沿用上例,节点2检查数据表中关于视频F对应的授权信息,在确定节点2已经获得视频F的分布式锁授权的情况下,可以直接加载视频F的本地锁,进而可以通过本地锁直接访问所述视频F。
步骤104:所述分布式锁主管节点读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在所述分布式锁持有节点的节点标识的情况下,向所述分布式锁持有节点发送分布式锁召回请求。
分布式锁主管节点即为目标资源的分布式锁的管理节点,由分布式锁主管节点管理分发关于目标资源对应的分布式锁的授权操作。在分布式锁主管节点中会有分布式锁授权列表用于记录分布式锁对应的授权节点的节点标识,当分布式锁授权列表中记录有节点标识时,则说明该分布式锁已经授权给节点标识对应的节点,若分布式锁授权列表中未记录有节点标识,则说明该分布式锁还没有授权给任何节点。
在实际应用中,若分布式锁授权列表为空,则分布式锁主管节点即可以直接向分布式锁申请节点发送分布式锁授权指令。
在本说明书提供的一具体实施方式中,沿用上例,节点1为视频F对应的分布式锁主管节点,节点1接收到节点2发送的分布式锁请求,并响应于所述锁请求读取视频F对应的分布式锁授权列表,在读取到节点标识为节点3的情况下,确定节点3为视频F对应的分布式锁的分布式锁持有节点,即向节点3发送分布式锁召回请求。
可选的,所述方法还包括:
所述分布式锁主管节点将所述分布式锁申请节点的节点标识添加到分布式锁等待队列。
在实际应用中,对于分布式系统中的某些热门资源的访问请求比较高,相对应的分布式锁申请节点就会比较多,但是分布式锁在同一时间只能授权给一个节点,则在分布式主管节点中还会设置有一个分布式锁等待队列,用于存储分布式锁申请节点对应的节点标识,利用队列先进先出的特性,保证分布式锁的授权可以准确有序的执行。
步骤106:所述分布式锁持有节点响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
分布式锁持有节点即为分布式系统中已经获得分布式锁的授权的节点,分布式锁持有节点在未获得分布式锁的授权的情况下,也需要主动向分布式锁主管节点发送分布式锁请求。
分布式锁持有节点在接收到分布式锁召回请求后,需要确定当前节点的本地锁的使用状态,本地锁的使用状态通常为加载状态和释放状态。当本地锁的使用状态为释放状态的情况下,说明没有针对目标资源的访问请求,当前节点的目标资源没有被占用,可以将分布式锁的授权归还给分布式锁主节点;当本地锁的使用状态为加载状态的情况下,说明还有进程通过本地锁访问目标资源,此时还无法将分布式锁的授权归还给分布式锁主节点。
在当前节点的本地锁的使用状态为释放状态的情况下,分布式锁主管节点响应于分布式锁召回请求,向分布式锁主管节点发送分布式锁归还信息,确定将分布式锁的授权归还给分布式锁主管节点,并将当前节点的授权状态设置为未授权。
具体的,所述分布式锁持有节点响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,包括:
所述分布式锁持有节点响应于所述分布式锁召回请求获取当前节点的本地锁的占用数量,在所述占用数量为0的情况下,确定当前节点的本地锁的使用状态为释放状态,在所述占用数量非0的情况下,确定当前节点的本地锁的使用状态为加载状态。
在实际应用中,当一个节点从分布式锁申请节点变为分布式锁持有节点的情况下,会对本地锁的使用情况进行监控,具体为监控当前节点中本地锁的占用数量,如当有5个进程在通过本地锁访问目标资源的情况下,本地锁的占用数量为5,当访问目标资源的进程数增加或减少时,本地锁的占用数量也会相应的增加或减少。当占用数量为0的情况下,通常表示关于目标资源的访问请求已经结束,没有进程占用本地锁访问目标资源,此时当前节点的本地锁为释放状态,当有接收到目标资源的访问请求时,需要先加载本地锁,再通过本地锁访问目标资源,则当占用数量为非0时,通常表示还有进程在占用本地锁访问目标资源,此时当前节点的本地锁的使用状态为加载状态。
在本说明书提供的一具体实施方式中,沿用上例,节点3为分布式锁持有节点,当节点3接收到节点1发送的分布式锁召回请求的情况下,获取当前节点针对视频F的本地锁的占用数量,当占用数量为0时,确定当前节点的本地锁的使用状态为释放状态,向所述节点1发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
可选的,在所述分布式锁持有节点向所述分布式锁主管节点发送分布式锁归还信息之前,所述方法还包括:
所述分布式锁持有节点同步所述目标资源的更新信息,在所述目标资源的更新信息同步完成的情况下,向所述分布式锁主管节点发送分布式锁归还信息。
在实际应用中,分布式锁持有节点在当前节点的授权状态为授权的情况下,会有至少一个访问请求对目标资源进行了处理,具体的处理过程可能为读、写中的至少一种,因此目标资源可能会生成相应的更新信息,为了保证分布式系统中数据的一致性,需要在分布式系统的每个节点中同步目标资源的更新信息,当目标资源的更新信息在分布式系统的每个节点中均完成同步的情况下,再向分布式锁主管节点发送分布式锁归还信息,保证了分布式系统的数据一致性和稳定性。
在本说明书提供的一具体实施方式中,沿用上例,节点3在向所述节点1发送分布式锁归还信息之前,在分布式系统的节点1、节点2和节点3中同步在节点3中针对视频F的更新信息,使得分布式系统的节点1、节点2和节点3中的视频F的信息保持一致,维护分布式系统的稳定性。
步骤108:所述分布式锁主管节点在接收到所述分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并在所述目标资源的分布式锁授权列表中记录所述分布式锁申请节点的节点标识。
分布式锁主管节点在接收到分布式锁归还信息的情况下,将分布式锁授权列表中分布式锁持有节点的节点标识清空,表示收回分布式锁持有节点的分布式锁授权。并向分布式锁申请节点发送目标资源的分布式锁授权指令,同时将分布式锁申请节点的节点标识记录在分布式锁授权列表中,用以表示目标资源的分布式锁已经授权给分布式锁申请节点。
在本说明书提供的一具体实施方式中,沿用上例,节点1接收到节点3发送的分布式锁归还信息之后,向节点2发送视频F的分布式锁授权指令,将视频F的分布式锁授权给节点2,同时将分布式锁授权列表中节点3的节点标识变更为节点2的节点标识,用以表示视频F的分布式锁授权给了节点2。
可选的,所述分布式锁主管节点向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,包括:
所述分布式锁主管节点从所述分布式锁等待队列中获取所述分布式锁申请节点的节点标识,向所述分布式锁申请节点的节点标识对应的分布式锁申请节点发送所述目标资源的分布式锁授权指令。
在实际应用中分布式锁主管节点要先从分布式锁等待队列中获取排在第一个的节点标识,向节点标识对应的分布式锁申请节点发送目标资源的分布式锁授权指令,由于队列先进先出的特性,排在第一个的节点标识对应的节点必定是在队列中的第一个发送分布式锁申请指令的节点,向分布式锁等待队列中第一个节点标识对应的分布式锁申请节点发送分布式锁授权指令,保证了分布式锁的授权可以准确有序的执行。
步骤110:所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
分布式锁申请节点在接收到分布式锁授权指令后,将当前节点中用于表示该分布式锁授权的数据表中的授权状态设置为授权,至此,当前节点获得了分布式锁的授权。
可选的,在所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
所述分布式锁申请节点被设置为新的分布式锁持有节点。
在实际应用中,在当前节点获得了分布式锁的授权后,当前节点由分布式锁的申请节点变更为新的分布式锁持有节点。
在本说明书提供的一具体实施方式中,沿用上例,节点2接收到节点1发送的分布式锁授权指令,并响应于所述分布式锁授权指令,将节点2中的视频F的分布式锁授权数据表设置为授权,此时节点2获得了视频F对应的分布式锁的授权,节点2即为视频F对应的分布式锁的分布式锁持有节点。
可选的,在所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
所述分布式锁申请节点加载当前节点的本地锁,并通过所述当前节点的本地锁访问所述目标资源。
在当前节点获得了分布式锁的授权后,即可加载所述目标资源的本地锁,当前节点可以加载本地锁,并通过当前节点的本地锁对目标资源进行访问,无需再申请远程锁,提高了分布式系统的效率,减少了用户访问资源的延迟,提升了用户使用体验。
在本说明书提供的一具体实施方式中,沿用上例,节点2在获得视频F的授权后,即在当前节点加载视频F的本地锁,进而通过节点2的本地锁访问视频F。
可选的,在所述分布式锁申请节点加载当前节点的本地锁之后,所述方法还包括:
所述分布式锁申请节点监控所述当前节点的本地锁的占用数量。
在实际应用中,分布式锁加载了当前节点的本地锁后,会进一步监控当前节点的本地锁的占用数量,通过本地锁的占用数量来确定当前节点的本地锁的使用状态,当占用数量为非0的情况下,说明有对应数量的进程在访问目标资源,此时本地锁的使用状态为占用状态;当占用数量为0的情况下,说明没有进程在访问目标资源,此时本地锁的使用状态为释放状态。
在本说明书提供的一具体实施方式中,沿用上例,在节点2加载本地锁,有进程通过本地锁访问视频F时,由节点2监控当前节点中视频F对应的本地锁的占用数量,当占用数量为7的情况下,说明有7个进程在访问视频F,当占用数量为0的情况下,当前次的访问请求结束,本地锁的使用状态为释放状态,当有新的访问请求到达节点2时,可以再继续加载本地锁,通过本地锁访问视频F。
本说明书一实施例实现了分布式系统中分布式锁调度方法,分布式锁持有节点从分布式锁主管节点处获得分布式锁的授权后,一直持有该分布式锁,本地进程访问该分布式锁处理延时小,效率高,当有分布式锁申请节点向分布式锁主管节点申请该分布式锁的情况下,分布式锁主管节点才向分布式锁持有节点发送分布式锁召回请求,当分布式锁持有节点满足条件的情况下将分布式锁的授权还给分布式锁主管节点,再有分布式锁主管节点授权给分布式锁申请节点,减少了耗时较大的远程分布式锁请求,提高了分布式锁的性能,进而提高了共享资源的访问效率。
下述结合附图2,以本说明书提供的分布式系统中分布式锁调度方法访问共享资源R的应用为例,对所述分布式系统中分布式锁调度方法进行进一步说明。其中,图2示出了本说明书一实施例提供的一种应用于访问共享资源R的分布式系统中分布式锁调度方法的交互示意图,以所述分布式系统包括节点A、节点B和节点C为例,其中,节点A为所述共享资源R对应的分布式锁的主管节点,所述方法具体包括以下步骤:
步骤202:节点B接收针对共享资源R的第一次访问请求,响应于所述第一次访问请求检查节点B的授权状态。
在本说明书提供的一具体实施例中,节点B接收针对共享资源R的第一次访问请求,节点B读取当前节点的数据表,检查当前节点中关于共享资源R的分布式锁的授权状态。
步骤204:节点B的授权状态为未授权的情况下,向节点A发送分布式锁请求。
在本说明书提供的一具体实施例中,节点B经过检查确定当前节点未获得共享资源R的分布式锁的授权,则向共享资源R的分布式锁主管节点(节点A)发送分布式锁请求,请求获得共享资源R的分布式锁的授权。
步骤206:节点A响应于分布式锁请求读取分布式锁授权列表,确定所述分布式授权列表为空。
在本说明书提供的一具体实施例中,节点A在接收到节点B发送的分布式锁请求后,读取节点A中的共享资源R的分布式锁授权列表,在分布式授权列表中未读取到节点标识,则确定分布式锁授权列表为空。
步骤208:节点A向节点B发送共享资源R的分布式锁授权指令。
在本说明书提供的一具体实施例中,节点A在确定共享资源R的分布式锁授权列表为空的情况下,说明共享资源R的分布式锁还未授权给任何节点,则向节点B发送共享资源R的分布式锁授权指令。
步骤210:节点B响应于分布式锁授权指令,将当前节点的授权状态设置为授权,加载本地锁,访问共享资源R,并监控引用本地锁的进程数。
在本说明书提供的一具体实施例中,节点B响应于分布式锁授权指令,将当前节点的数据表中关于共享资源R的分布式锁的授权状态设置为授权,之后加载共享资源R的本地锁,通过本地锁访问共享资源R,同时监控通过本地锁访问共享资源R的进程数。
步骤212:节点B中的第一次访问请求结束,应用本地锁的进程数清零,释放本地锁。
在本说明书提供的一具体实施例中,节点B中的第一次访问请求结束后,通过本地锁访问共享资源R的进程数清零,则释放本地锁。
步骤214:节点B接收针对共享资源R的第二次访问请求,响应于所述第二次访问请求检查节点B中本地锁的授权状态。
在本说明书提供的一具体实施例中,节点B接收到针对共享资源R的第二次访问请求,节点B响应于第二次访问请求读取当前节点的数据表,检查当前节点中关于共享资源R的分布式锁的授权状态。
步骤216:节点B在本地锁的授权状态为授权的情况下,加载本地锁,访问共享资源R,并监控引用本地锁的进程数。
在本说明书提供的一具体实施例中,节点B经过检查确定当前节点已经获得共享资源R的分布式锁的授权,直接加载共享资源R的本地锁,通过本地锁访问共享资源R,同时监控通过本地锁访问共享资源R的进程数。
步骤218:节点B中的第二次访问请求结束,应用本地锁的进程数清零,释放本地锁。
在本说明书提供的一具体实施例中,节点B中的第二次访问请求结束后,通过本地锁访问共享资源R的进程数清零,则释放本地锁。
步骤220:节点C接收针对共享资源R的第三次访问请求,响应于所述第三次访问请求检查节点C的授权状态。
在本说明书提供的一具体实施例中,节点C接收针对共享资源R的第三次访问请求,节点C读取当前节点的数据表,检查当前节点中关于共享资源R的分布式锁的授权状态。
步骤222:节点C在本地锁的授权状态为未授权的情况下,向节点A发送分布式锁请求。
在本说明书提供的一具体实施例中,节点C经过检查确定当前节点未获得共享资源R的分布式锁的授权,则向节点A发送分布式锁请求,请求获得共享资源R的分布式锁的授权。
步骤224:节点A响应于分布式锁请求读取分布式锁授权列表,在所述分布式锁授权列表中读取到节点B的节点标识。
在本说明书提供的一具体实施例中,节点A在接收到节点C发送的分布式锁请求后,读取共享资源R的分布式锁授权列表,在分布式锁授权列表中读取到节点标识B。
步骤226:向节点B发送分布式锁召回请求。
在本说明书提供的一具体实施例中,节点A向节点B发送分布式锁召回请求。
步骤228:节点B响应于所述分布式锁召回请求确定节点B的本地锁的使用状态,在本地锁的使用状态为释放状态的情况下,在节点A、B和C中同步第一次访问请求和第二次访问请求中共享资源R的更新信息。
在本说明书提供的一具体实施例中,节点B响应于所述分布式锁召回请求确定本地锁的使用状态,在本地锁的使用状态为释放状态的情况下,将节点B中的共享资源R在节点A、节点B和节点C中进行同步,同步第一次访问请求和第二次访问请求中共享资源R的更新信息。
步骤230:节点B在所述共享资源R的更新信息同步完成的情况下,向节点A发送分布式锁归还信息。
在本说明书提供的一具体实施例中,在共享资源R的更新信息同步完成的情况下,向节点A发送分布式锁归还信息,将节点B中的授权状态设置为未授权。
步骤232:节点A向节点C发送共享资源R的分布式锁授权指令,并将分布式锁授权列表中节点B的节点标识更新为节点C的节点标识。
在本说明书提供的一具体实施例中,节点A在接收到节点B发送的分布式锁归还信息后,向节点C发送共享资源R的分布式锁授权指令,同时将节点A中的分布式锁授权列表中的节点B的节点标识更新为节点C的节点标识。
步骤234:节点C响应于分布式锁授权指令,将本地锁的授权状态设置为授权,加载本地锁,访问共享资源R,并监控引用本地锁的进程数。
在本说明书提供的一具体实施例中,节点C响应于分布式锁授权指令,将当前节点的数据表中关于共享资源R的分布式锁的授权状态设置为授权,之后加载共享资源R的本地锁,通过本地锁访问共享资源R,同时监控通过本地锁访问共享资源R的进程数。
步骤236:节点C中的第三次访问请求结束,应用本地锁的进程数清零,释放本地锁。
在本说明书提供的一具体实施例中,节点C中的第三次访问请求结束后,通过本地锁访问共享资源R的进程数清零,则释放本地锁。
本说明书一实施例实现了分布式系统中分布式锁调度方法,分布式锁持有节点从分布式锁主管节点处获得分布式锁的授权后,在被分布式锁主管节点召回授权之前,分布式锁持有节点一直持有该分布式锁,访问请求无需每次都远程申请分布式锁的操作,而是通过本地进程访问该分布式锁,通过本地锁访问目标资源处理延时小,效率高,有效提高访问共享资源的性能,当有分布式锁申请节点向分布式锁主管节点申请该分布式锁的情况下,分布式锁主管节点才向分布式锁持有节点发送分布式锁召回请求,当分布式锁持有节点满足条件的情况下将分布式锁的授权还给分布式锁主管节点,再有分布式锁主管节点授权给分布式锁申请节点,减少了耗时较大的远程分布式锁请求,当再有访问请求抵达分布式锁申请节点的情况下,无需再向分布式锁主管节点申请授权,提高了分布式锁的性能,进而提高了共享资源的访问效率。
图3示出了根据本说明书一实施例提供的一种分布式系统中分布式锁调度方法的流程图,所述应用于分布式锁申请节点的分布式系统中分布式锁调度方法,具体包括以下步骤:
步骤302:检查当前节点的授权状态。
步骤304:在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求。
步骤306:接收所述分布式锁主管节点发送的分布式锁授权指令。
步骤308:响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
可选的,检查当前节点的授权状态,包括:
接收目标资源的访问请求;
响应于所述访问请求检查当前节点的授权状态。
可选的,在响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
加载当前节点的本地锁;
通过所述当前节点的本地锁访问所述目标资源。
可选的,所述方法还包括:
在所述当前节点的授权状态为授权的情况下,加载当前节点的本地锁,通过所述当前节点的本地锁访问所述目标资源。
可选的,在加载当前节点的本地锁之后,所述方法还包括:
监控所述当前节点的本地锁的占用数量。
可选的,在响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
设置所述分布式锁申请节点为分布式锁持有节点。
本说明书一实施例实现了应用于分布式锁申请节点的分布式系统中分布式锁调度方法,包括检查当前节点的授权状态,在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求,接收所述分布式锁主管节点发送的分布式锁授权指令,响应于所述分布式锁授权指令将当前节点的授权状态设置为授权;通过本说明书一实施例提供的应用于分布式锁申请节点的分布式系统中分布式锁调度方法将代价较大的远程请求变为本地锁,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。
上述为本实施例的一种应用于分布式锁申请节点的分布式系统中分布式锁调度方法的示意性方案。需要说明的是,该应用于分布式锁申请节点的分布式系统中分布式锁调度方法的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁申请节点的分布式系统中分布式锁调度方法的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
与上述应用于分布式锁申请节点的分布式系统中分布式锁调度方法实施例相对应,本说明书还提供了应用于分布式锁申请节点的分布式系统中分布式锁调度装置实施例,图4示出了本说明书一实施例提供的一种应用于分布式锁申请节点的分布式系统中分布式锁调度装置的结构示意图。如图4所示,该装置包括:
检查模块402,被配置为检查当前节点的授权状态。
发送模块404,被配置为在在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求。
接收模块406,被配置为接收所述分布式锁主管节点发送的分布式锁授权指令。
设置模块408,被配置为响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
可选的,所述检查模块402,进一步被配置为:
接收目标资源的访问请求;
响应于所述访问请求检查当前节点的授权状态。
可选的,所述装置还包括:
加载模块,被配置为加载当前节点的本地锁;
访问模块,被配置为通过所述当前节点的本地锁访问所述目标资源。
可选的,所述访问模块,进一步被配置为:
在所述当前节点的授权状态为授权的情况下,加载当前节点的本地锁,通过所述当前节点的本地锁访问所述目标资源。
可选的,所述装置还包括:
监控模块,被配置为监控所述当前节点的本地锁的占用数量。
可选的,所述设置模块408,进一步被配置为:
设置所述分布式锁申请节点为分布式锁持有节点。
本说明书一实施例实现了应用于分布式锁申请节点的分布式系统中分布式锁调度装置,包括检查当前节点的授权状态,在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求,接收所述分布式锁主管节点发送的分布式锁授权指令,响应于所述分布式锁授权指令将当前节点的授权状态设置为授权;通过本说明书一实施例提供的应用于分布式锁申请节点的分布式系统中分布式锁调度装置将代价较大的远程请求便为本地锁,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。
上述为本实施例的一种应用于分布式锁申请节点的分布式系统中分布式锁调度装置的示意性方案。需要说明的是,该应用于分布式锁申请节点的分布式系统中分布式锁调度装置的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁申请节点的分布式系统中分布式锁调度装置的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
图5示出了根据本说明书一实施例提供的一种分布式系统中分布式锁调度方法的流程图,所述应用于分布式锁主管节点的分布式系统中分布式锁调度方法,具体包括以下步骤:
步骤502:接收分布式锁申请节点发送的目标资源的分布式锁请求。
步骤504:读取所述目标资源的分布式锁授权列表。
步骤506:在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求。
步骤508:在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
可选的,所述方法还包括:
将所述分布式锁申请节点的节点标识添加到分布式锁等待队列。
可选的,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,包括:
从所述分布式锁等待队列中获取所述分布式锁申请节点的节点标识;
向所述分布式锁申请节点的节点标识对应的分布式锁申请节点发送所述目标资源的分布式锁授权指令。
本说明书一实施例实现了应用于分布式锁主管节点的分布式系统中分布式锁调度方法,包括接收分布式锁申请节点发送的目标资源的分布式锁请求,读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求,在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。本说明书一实施例提供的应用于分布式锁主管节点的分布式系统中分布式锁调度方法通过检查分布式授权列表的记录,向分布式锁持有节点召回分布式锁授权,避免分布式锁的远程请求,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。
上述为本实施例的一种应用于分布式锁主管节点的分布式系统中分布式锁调度方法的示意性方案。需要说明的是,该应用于分布式锁主管节点的分布式系统中分布式锁调度方法的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁主管节点的分布式系统中分布式锁调度方法的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
与上述应用于分布式锁主管节点的分布式系统中分布式锁调度方法实施例相对应,本说明书还提供了应用于分布式锁主管节点的分布式系统中分布式锁调度装置实施例,图6示出了本说明书一实施例提供的一种应用于分布式锁主管节点的分布式系统中分布式锁调度装置的结构示意图。如图6所示,该装置包括:
接收模块602,被配置为接收分布式锁申请节点发送的目标资源的分布式锁请求。
读取模块604,被配置为读取所述目标资源的分布式锁授权列表。
第一发送模块606,被配置为在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求。
第二发送模块608,被配置为在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
可选的,所述装置还包括:
添加模块,被配置为将所述分布式锁申请节点的节点标识添加到分布式锁等待队列。
可选的,所述第二发送模块608,进一步被配置为:
从所述分布式锁等待队列中获取所述分布式锁申请节点的节点标识;
向所述分布式锁申请节点的节点标识对应的分布式锁申请节点发送所述目标资源的分布式锁授权指令。
本说明书一实施例实现了应用于分布式锁主管节点的分布式系统中分布式锁调度装置,包括接收分布式锁申请节点发送的目标资源的分布式锁请求,读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求,在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。本说明书一实施例提供的应用于分布式锁主管节点的分布式系统中分布式锁调度装置通过检查分布式授权列表的记录,向分布式锁持有节点召回分布式锁授权,避免分布式锁的远程请求,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。上述为本实施例的一种应用于分布式锁主管节点的分布式系统中分布式锁调度装置的示意性方案。需要说明的是,该应用于分布式锁主管节点的分布式系统中分布式锁调度装置的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁主管节点的分布式系统中分布式锁调度装置的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
图7示出了根据本说明书一实施例提供的一种分布式系统中分布式锁调度方法的流程图,所述应用于分布式锁持有节点的分布式系统中分布式锁调度方法,具体包括以下步骤:
步骤702:接收分布式锁主管节点发送的分布式锁召回请求。
步骤704:响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态。
步骤706:在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
可选的,响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,包括:
响应于所述分布式锁召回请求获取当前节点的本地锁的占用数量;
在所述占用数量为0的情况下,确定当前节点的本地锁的使用状态为释放状态;
在所述占用数量非0的情况下,确定当前节点的本地锁的使用状态为加载状态。
可选的,在向所述分布式锁主管节点发送分布式锁归还信息之前,所述方法还包括:
同步所述目标资源的更新信息;
在所述目标资源的更新信息同步完成的情况下,向所述分布式锁主管节点发送分布式锁归还信息。
本说明书一实施例实现了应用于分布式锁持有节点的分布式系统中分布式锁调度方法,包括接收分布式锁主管节点发送的分布式锁召回请求,响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。本说明书一实施例提供的应用于分布式锁持有节点的分布式系统中分布式锁调度方法,在访问结束后不主动归还分布式锁的授权,而是在分布式锁主管节点发出召回请求的情况下才归还分布式锁的授权,减少了分布式锁的远程请求,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。
上述为本实施例的一种应用于分布式锁持有节点的分布式系统中分布式锁调度方法的示意性方案。需要说明的是,该应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
与上述应用于分布式锁持有节点的分布式系统中分布式锁调度方法实施例相对应,本说明书还提供了应用于分布式锁持有节点的分布式系统中分布式锁调度装置实施例,图8示出了本说明书一实施例提供的一种应用于分布式锁持有节点的分布式系统中分布式锁调度装置的结构示意图。如图8所示,该装置包括:
接收模块802,被配置为接收分布式锁主管节点发送的分布式锁召回请求;
确定模块804,被配置为响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态;
发送模块806,被配置为在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
可选的,所述确定模块804,进一步被配置为:
响应于所述分布式锁召回请求获取当前节点的本地锁的占用数量;
在所述占用数量为0的情况下,确定当前节点的本地锁的使用状态为释放状态;
在所述占用数量非0的情况下,确定当前节点的本地锁的使用状态为加载状态。
可选的,所述装置还包括:
同步模块,被配置为同步所述目标资源的更新信息;
相应的,所述发送模块806,进一步被配置为在所述目标资源的更新信息同步完成的情况下,向所述分布式锁主管节点发送分布式锁归还信息。
本说明书一实施例实现了应用于分布式锁持有节点的分布式系统中分布式锁调度方法,包括接收分布式锁持有节点发送的分布式锁召回请求,响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。本说明书一实施例提供的应用于分布式锁持有节点的分布式系统中分布式锁调度方法,在访问结束后不主动归还分布式锁的授权,而是在分布式锁持有节点发出召回请求的情况下才归还分布式锁的授权,减少了分布式锁的远程请求,将锁操作时间开销从毫秒级别降低到微秒级别,提高分布式锁的效率。
上述为本实施例的一种应用于分布式锁持有节点的分布式系统中分布式锁调度装置的示意性方案。需要说明的是,该应用于分布式锁持有节点的分布式系统中分布式锁调度装置的技术方案与上述的分布式系统中分布式锁调度方法的技术方案属于同一构思,应用于分布式锁持有节点的分布式系统中分布式锁调度装置的技术方案未详细描述的细节内容,均可以参见上述分布式系统中分布式锁调度方法的技术方案的描述。
图9示出了根据本说明书一实施例提供的一种计算设备900的结构框图。该计算设备900的部件包括但不限于存储器910和处理器920。处理器920与存储器910通过总线930相连接,数据库950用于保存数据。
计算设备900还包括接入设备940,接入设备940使得计算设备900能够经由一个或多个网络960通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备940可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备900的上述部件以及图9中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图9所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备900可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备900还可以是移动式或静止式的服务器。
其中,处理器920执行所述指令时实现所述应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述应用于分布式锁申请节点的分布式系统中分布式锁调度方法或应用于分布式锁主管节点的分布式系统中分布式锁调度方法或应用于分布式锁持有节点的分布式系统中分布式锁调度方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (27)

1.一种分布式系统中分布式锁调度方法,所述分布式系统包括分布式锁申请节点、分布式锁主管节点和分布式锁持有节点;
所述方法包括:
所述分布式锁申请节点在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
所述分布式锁主管节点读取所述目标资源的分布式锁授权列表,在所述分布式授权列表中存在所述分布式锁持有节点的节点标识的情况下,向所述分布式锁持有节点发送分布式锁召回请求;
所述分布式锁持有节点响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权;
所述分布式锁主管节点在接收到所述分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并在所述目标资源的分布式锁授权列表中记录所述分布式锁申请节点的节点标识;
所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
2.如权利要求1所述的分布式系统中分布式锁调度方法,所述方法还包括:
所述分布式锁申请节点接收目标资源的访问请求,响应于所述访问请求检查所述目标资源的分布式锁在当前节点的授权状态。
3.如权利要求1所述的分布式系统中分布式锁调度方法,在所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
所述分布式锁申请节点加载当前节点的本地锁,并通过所述当前节点的本地锁访问所述目标资源。
4.如权利要求1所述的分布式系统中分布式锁调度方法,所述方法还包括:
所述分布式锁申请节点在所述当前节点的授权状态为授权的情况下,加载当前节点的本地锁,通过所述当前节点的本地锁访问所述目标资源。
5.如权利要求3或4所述的分布式系统中分布式锁调度方法,在所述分布式锁申请节点加载当前节点的本地锁之后,所述方法还包括:
所述分布式锁申请节点监控所述当前节点的本地锁的占用数量。
6.如权利要求1所述的分布式系统中分布式锁调度方法,在所述分布式锁申请节点响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
所述分布式锁申请节点被设置为新的分布式锁持有节点。
7.如权利要求1所述的分布式系统中分布式锁调度方法,所述方法还包括:
所述分布式锁主管节点将所述分布式锁申请节点的节点标识添加到分布式锁等待队列。
8.如权利要求7所述的分布式系统中分布式锁调度方法,所述分布式锁主管节点向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,包括:
所述分布式锁主管节点从所述分布式锁等待队列中获取所述分布式锁申请节点的节点标识,向所述分布式锁申请节点的节点标识对应的分布式锁申请节点发送所述目标资源的分布式锁授权指令。
9.如权利要求1所述的分布式系统中分布式锁调度方法,所述分布式锁持有节点响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,包括:
所述分布式锁持有节点响应于所述分布式锁召回请求获取当前节点的本地锁的占用数量,在所述占用数量为0的情况下,确定当前节点的本地锁的使用状态为释放状态,在所述占用数量非0的情况下,确定当前节点的本地锁的使用状态为加载状态。
10.如权利要求1所述的分布式系统中分布式锁调度方法,在所述分布式锁持有节点向所述分布式锁主管节点发送分布式锁归还信息之前,所述方法还包括:
所述分布式锁持有节点同步所述目标资源的更新信息,在所述目标资源的更新信息同步完成的情况下,向所述分布式锁主管节点发送分布式锁归还信息。
11.一种分布式系统中分布式锁调度方法,应用于分布式锁申请节点,包括:
检查当前节点的授权状态;
在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
接收所述分布式锁主管节点发送的分布式锁授权指令;
响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
12.如权利要求11所述的分布式系统中分布式锁调度方法,检查当前节点的授权状态,包括:
接收目标资源的访问请求;
响应于所述访问请求检查当前节点的授权状态。
13.如权利要求11所述的分布式系统中分布式锁调度方法,在响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
加载当前节点的本地锁;
通过所述当前节点的本地锁访问所述目标资源。
14.如权利要求11所述的分布式系统中分布式锁调度方法,所述方法还包括:
在所述当前节点的授权状态为授权的情况下,加载当前节点的本地锁,通过所述当前节点的本地锁访问所述目标资源。
15.如权利要求13或14所述的分布式系统中分布式锁调度方法,在加载当前节点的本地锁之后,所述方法还包括:
监控所述当前节点的本地锁的占用数量。
16.如权利要求11所述的分布式系统中分布式锁调度方法,在响应于所述分布式锁授权指令将当前节点的授权状态设置为授权之后,所述方法还包括:
设置所述分布式锁申请节点为分布式锁持有节点。
17.一种分布式系统中分布式锁调度方法,应用于分布式锁主管节点,包括:
接收分布式锁申请节点发送的目标资源的分布式锁请求;
读取所述目标资源的分布式锁授权列表;
在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求;
在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
18.如权利要求17所述的分布式系统中分布式锁调度方法,所述方法还包括:
将所述分布式锁申请节点的节点标识添加到分布式锁等待队列。
19.如权利要求18所述的分布式系统中分布式锁调度方法,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,包括:
从所述分布式锁等待队列中获取所述分布式锁申请节点的节点标识;
向所述分布式锁申请节点的节点标识对应的分布式锁申请节点发送所述目标资源的分布式锁授权指令。
20.一种分布式系统中分布式锁调度方法,应用于分布式锁持有节点,包括:
接收分布式锁主管节点发送的分布式锁召回请求;
响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态;
在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
21.如权利要求20所述的分布式系统中分布式锁调度方法,响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态,包括:
响应于所述分布式锁召回请求获取当前节点的本地锁的占用数量;
在所述占用数量为0的情况下,确定当前节点的本地锁的使用状态为释放状态;
在所述占用数量非0的情况下,确定当前节点的本地锁的使用状态为加载状态。
22.如权利要求21所述的分布式系统中分布式锁调度方法,在向所述分布式锁主管节点发送分布式锁归还信息之前,所述方法还包括:
同步所述目标资源的更新信息;
在所述目标资源的更新信息同步完成的情况下,向所述分布式锁主管节点发送分布式锁归还信息。
23.一种分布式系统中分布式锁调度装置,应用于分布式锁申请节点,包括:
检查模块,被配置为检查当前节点的授权状态;
发送模块,被配置为在在所述当前节点的授权状态为未授权的情况下,向所述分布式锁主管节点发送所述目标资源的分布式锁请求;
接收模块,被配置为接收所述分布式锁主管节点发送的分布式锁授权指令;
设置模块,被配置为响应于所述分布式锁授权指令将当前节点的授权状态设置为授权。
24.一种分布式系统中分布式锁调度装置,应用于分布式锁主管节点,包括:
接收模块,被配置为接收分布式锁申请节点发送的目标资源的分布式锁请求;
读取模块,被配置为读取所述目标资源的分布式锁授权列表;
第一发送模块,被配置为在所述分布式授权列表中存在节点标识的情况下,向所述节点标识对应的分布式锁持有节点发送分布式锁召回请求;
第二发送模块,被配置为在接收到所述分布式锁持有节点响应于所述分布式锁召回请求发送的分布式锁归还信息的情况下,向所述分布式锁申请节点发送所述目标资源的分布式锁授权指令,并将所述分布式锁申请节点的节点标识记录在所述分布式锁授权列表中。
25.一种分布式系统中分布式锁调度装置,应用于分布式锁持有节点,包括:
接收模块,被配置为接收分布式锁主管节点发送的分布式锁召回请求;
确定模块,被配置为响应于所述分布式锁召回请求确定当前节点的本地锁的使用状态;
发送模块,被配置为在所述当前节点的本地锁的使用状态为释放状态的情况下,向所述分布式锁主管节点发送分布式锁归还信息并将当前节点的授权状态设置为未授权。
26.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现权利要求11-16或17-19或20-22任意一项所述分布式系统中分布式锁调度方法的步骤。
27.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求11-16或17-19或20-22任意一项所述分布式系统中分布式锁调度方法的步骤。
CN202110182313.3A 2021-02-10 2021-02-10 分布式系统中分布式锁调度方法及装置 Pending CN113296904A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110182313.3A CN113296904A (zh) 2021-02-10 2021-02-10 分布式系统中分布式锁调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110182313.3A CN113296904A (zh) 2021-02-10 2021-02-10 分布式系统中分布式锁调度方法及装置

Publications (1)

Publication Number Publication Date
CN113296904A true CN113296904A (zh) 2021-08-24

Family

ID=77318958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110182313.3A Pending CN113296904A (zh) 2021-02-10 2021-02-10 分布式系统中分布式锁调度方法及装置

Country Status (1)

Country Link
CN (1) CN113296904A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114305A (zh) * 2022-04-08 2022-09-27 腾讯科技(深圳)有限公司 分布式数据库的锁管理方法、装置、设备及存储介质
CN116882867A (zh) * 2023-07-19 2023-10-13 壹站(上海)供应链管理有限公司 一种物流数据处理与分析方法及装置
CN116882867B (zh) * 2023-07-19 2024-06-07 壹站(上海)供应链管理有限公司 一种物流数据处理与分析方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999053415A1 (en) * 1998-04-15 1999-10-21 Hewlett-Packard Company Distributed processing over a network
US20070287452A1 (en) * 2006-06-12 2007-12-13 Lemko, Corporation Roaming mobile subscriber registration in a distributed mobile architecture
CN103731485A (zh) * 2013-12-26 2014-04-16 华为技术有限公司 一种网络设备、集群存储系统及分布式锁管理方法
CN104461707A (zh) * 2014-11-28 2015-03-25 华为技术有限公司 一种锁请求处理方法及装置
CN107347084A (zh) * 2016-05-05 2017-11-14 华为技术有限公司 分布式锁管理的方法、装置及系统
CN109697127A (zh) * 2017-10-24 2019-04-30 华为技术有限公司 一种对共享资源的访问操作加锁的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999053415A1 (en) * 1998-04-15 1999-10-21 Hewlett-Packard Company Distributed processing over a network
US20070287452A1 (en) * 2006-06-12 2007-12-13 Lemko, Corporation Roaming mobile subscriber registration in a distributed mobile architecture
CN103731485A (zh) * 2013-12-26 2014-04-16 华为技术有限公司 一种网络设备、集群存储系统及分布式锁管理方法
CN104461707A (zh) * 2014-11-28 2015-03-25 华为技术有限公司 一种锁请求处理方法及装置
CN107347084A (zh) * 2016-05-05 2017-11-14 华为技术有限公司 分布式锁管理的方法、装置及系统
CN109697127A (zh) * 2017-10-24 2019-04-30 华为技术有限公司 一种对共享资源的访问操作加锁的方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨洪章;张军伟;齐颖;吴雪丽;: "分布式文件系统中海量小文件异步创建技术", 网络新媒体技术, no. 02 *
钱迎进;金士尧;肖侬;: "Lustre文件系统I/O锁的应用与优化", 计算机工程与应用, no. 03 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114305A (zh) * 2022-04-08 2022-09-27 腾讯科技(深圳)有限公司 分布式数据库的锁管理方法、装置、设备及存储介质
CN116882867A (zh) * 2023-07-19 2023-10-13 壹站(上海)供应链管理有限公司 一种物流数据处理与分析方法及装置
CN116882867B (zh) * 2023-07-19 2024-06-07 壹站(上海)供应链管理有限公司 一种物流数据处理与分析方法及装置

Similar Documents

Publication Publication Date Title
US7484048B2 (en) Conditional message delivery to holder of locks relating to a distributed locking manager
CN106790629A (zh) 数据同步装置及其实现数据同步的方法、客户端访问系统
CN111708841A (zh) 数据库数据同步方法及装置
US8832215B2 (en) Load-balancing in replication engine of directory server
CN104346373A (zh) 分区日志队列同步管理方法及设备
CN111708738A (zh) 实现hadoop文件系统hdfs与对象存储s3数据互访方法及系统
CN111767047A (zh) 一种微服务组件管理方法和装置
CN114422537B (zh) 多云存储系统、多云数据读写方法及电子设备
CN113296904A (zh) 分布式系统中分布式锁调度方法及装置
EP4318234A1 (en) Method and apparatus for starting secure container
CN113297159B (zh) 数据存储方法以及装置
CN113434600A (zh) 一种数据同步方法及装置
CN114996750A (zh) 数据共享方法以及装置
CN115098426A (zh) Pcie设备管理方法、接口管理模块、pcie系统、设备和介质
US11252121B2 (en) Message sending method and terminal device
CN111475493B (zh) 数据读取方法及装置
EP4369191A1 (en) Memory scanning method and apparatus
US20230281187A1 (en) Method for keeping data consistent across different storage systems, computing device, and storage medium
CN110659303A (zh) 一种数据库节点的读写控制方法及装置
CN113297168A (zh) 分布式系统中数据迁移方法及装置
CN115037757A (zh) 一种多集群服务管理系统
CN112835862B (zh) 一种数据同步方法、装置、系统及存储介质
CN111857548B (zh) 数据读取方法、装置及系统
CN114385596A (zh) 数据处理方法及装置
CN113297231A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40057456

Country of ref document: HK