首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 请求书 / 请求 / 一种授权锁权限的方法和分布式锁管理器

一种授权权限的方法和分布式锁管理器

阅读:2发布:2022-05-21

专利汇可以提供一种授权权限的方法和分布式锁管理器专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供了一种授权 锁 权限的方法和分布式锁管理器,用以提高分布式系统中锁资源管理器为 请求 的锁权限授权的效率。所述方法包括:接收加锁请求,获取所述加锁请求所请求的锁权限;当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;返回所述请求的锁权限。,下面是一种授权权限的方法和分布式锁管理器专利的具体信息内容。

1.一种授权权限的方法,应用于分布式锁管理器,其特征在于,包括:
接收加锁请求,获取所述加锁请求所请求的锁权限;
当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;
返回所述请求的锁权限。
2.如权利要求1所述的方法,其特征在于,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
3.如权利要求2所述的方法,其特征在于,还包括:
判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;
当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
4.如权利要求3所述的方法,其特征在于,接收到加锁请求之后,所述方法还包括:
根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
6.如权利要求1-5任一项所述的方法,其特征在于,包括:
所述等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
7.如权利要求1-5任一所述的方法,其特征在于,若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;
到达预定的条件时,处理所述加锁请求队列中的锁请求。
8.一种分布式锁管理器,其特征在于,包括:
接收单元,用于接收加锁请求,获取所述加锁请求所请求的锁权限;
授权单元,用于当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;
返回单元,用于返回所述请求的锁权限。
9.如权利要求8所述的锁管理器,其特征在于,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
10.如权利要求9所述的锁管理器,其特征在于,所述锁管理器还包括:
判断单元,用于判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;
更新单元,用于当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
11.如权利要求10所述的锁管理器,其特征在于,所述接收单元还用于:
接收到加锁请求之后,根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
12.如权利要求8所述的锁管理器,其特征在于,所述锁管理器还包括:
释放信息接收单元,用于当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
13.如权利要求8-12任一项所述的锁管理器,其特征在于,所述接收单元还用于:
若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;
所述授权单元还用于到达预定的条件时,处理所述加锁请求队列中的锁请求。

说明书全文

一种授权权限的方法和分布式锁管理器

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种授权锁权限的方法和分布式锁管理器。

背景技术

[0002] 在分布式系统中,分布式锁是控制分布式系统之间访问共享资源的一种方式,只有获得锁权限的授权,对应的应用或计算机才有权限访问共享资源。
[0003] 目前分布式系统中的锁管理器判断锁权限能否被授权的方法是:遍历整个已授权锁权限队列,判断请求的锁权限与每个已授权的锁权限是否存在冲突。当请求的锁权限与所有已授权的锁权限均不冲突时,锁管理器才可授权该锁权限;反之,若请求锁与已授权锁中的任何一个存在冲突,则不会授权该请求锁。
[0004] 进一步,锁资源管理在授权时,是按照“先来后到”的顺序进行授权,也就是请求队列中队头的锁必须获得授权后,才可以授权后面的锁。
[0005] 当分布式系统规模较大时,锁资源的用户达到十万甚至百万级别的,这时的授权队列会相当大,现有技术中的授权方法,显然会导致耗时久,效率低的技术问题。

发明内容

[0006] 本发明实施例提供了一种授权锁权限的方法和分布式锁管理器,用以提高分布式系统中锁资源管理器为请求的权限授权的效率。
[0007] 本申请第一方面提供了一种授权锁权限的方法,应用于分布式锁管理器,包括:接收加锁请求,获取所述加锁请求所请求的锁权限;当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;返回所述请求的锁权限。
[0008] 结合第一方面,在第一方面的第一种可能的实现方式中,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
[0009] 结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,还包括:判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0010] 结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,接收到加锁请求之后,所述方法还包括:根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
[0011] 结合第一方面,在第一方面第四种可能的实现方式中,所述方法还包括:当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
[0012] 结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任意一种,在第一方面第五种可能的实现方式中,包括:所述等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
[0013] 结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任意一种,在第一方面第六种可能的实现方式中,若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0014] 本申请第二方面提供了一种授权锁权限的分布式锁管理器,包括:接收单元,用于接收加锁请求,获取所述加锁请求所请求的锁权限;授权单元,用于当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;返回单元,用于返回所述请求的锁权限。
[0015] 结合第二方面,在第二方面的第一种可能的实现方式中,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
[0016] 结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述锁管理器还包括:判断单元,用于判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;更新单元,用于当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0017] 结合第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述接收单元还用于:接收到加锁请求之后,根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
[0018] 结合第二方面,在第二方面第四种可能的实现方式中,所述锁管理器还包括:释放信息接收单元,用于当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
[0019] 结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中的任意一种,在第二方面第五种可能的实现方式中,包括:所述等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
[0020] 结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中的任意一种,在第二方面第六种可能的实现方式中,所述接收单元还用于:若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;所述授权单元还用于到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0021] 本申请第三方面提供了一种分布式锁管理设备,包括:接收器,用于接收加锁请求,获取所述加锁请求所请求的锁权限;处理器,用于当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;发送器,用于返回所述请求的锁权限。
[0022] 结合第三方面,在第三方面的第一种可能的实现方式中,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
[0023] 结合第三方面第一种可能的实现方式中,在第三方面第二种可能的实现方式中,所述处理器还用于:判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0024] 结合第三方面第二种可能的实现方式,在第三方面第三种可能的实现方式中,所述处理器还用于:接收到加锁请求之后,根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
[0025] 结合第三方面,在第三方面第四种可能的实现方式中,所述处理器还用于:当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
[0026] 结合第三方面或第三方面的第一种可能的实现方式至第三方面的第四种可能的实现方式中的任意一种,在第三方面第五种可能的实现方式中,包括:所述等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
[0027] 结合第三方面或第三方面的第一种可能的实现方式至第三方面的第四种可能的实现方式中的任意一种,在第三方面第六种可能的实现方式中,所述处理器还用于:若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0028] 本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0029] 首先接收加锁请求,获取所述加锁请求所请求的锁权限;当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;并返回所述请求的锁权限。从而,避免将加锁请求所请求的锁权限与已授权锁一一进行冲突判断,提高分布式系统中锁管理器为请求的锁权限授权的效率,缩短了授权等待时间,且降低了设备负担。附图说明
[0030] 图1为本发明实施例中的授权锁权限的方法流程图
[0031] 图2为本发明实施例中的锁兼容性列表示意图;
[0032] 图3为本发明实施例中的一实施方式示意图;
[0033] 图4为本发明实施例中的分布式锁管理器结构示意图;
[0034] 图5为本发明实施例中的分布式锁管理设备结构示意图。

具体实施方式

[0035] 本发明实施例提供了一种授权锁权限的方法和分布式锁管理器,用以提高分布式系统中锁资源管理器为请求的权限授权的效率。
[0036] 本发明实施例中的技术方案为解决上述的技术问题,本发明中的授权锁权限的方法包括如下内容:
[0037] 首先接收加锁请求,获取所述加锁请求所请求的锁权限;当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;最后返回所述请求的锁权限。从而,避免将加锁请求所请求的锁权限与已授权锁一一进行冲突判断,提高分布式系统中锁资源管理为请求的锁权限授权的效率,缩短了授权等待时间,且降低了设备负担。
[0038] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039] 本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0040] 下面结合附图对本发明的实施方式进行详细说明。
[0041] 本申请第一方面提供了一种授权锁的方法,请参考图1,所述方法包括:
[0042] S101:接收加锁请求,获取所述加锁请求所请求的锁权限。
[0043] S102:当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限。
[0044] S103:返回所述请求的锁权限。
[0045] 在分布式系统中,有多个节点,每一个节点有一个分布式锁管理器(英文:Distributed Lock Management;简称:DLM)。DLM负责管理分布式系统中所在节点的锁。用户或者APP只有获得DLM授权锁权限后,才能访问需要的资源。在本申请实施例中,以分布式系统中任意一个DLM为例进行介绍,其余的DLM对于加锁请求的处理方式类似。
[0046] DLM中有加锁请求队列和授权队列。其中,加锁请求队列中排列有各个等待授权的加锁请求,前一个加锁请求进入加锁请求队列的时间早于后一个加锁请求进入的时间。
[0047] 在本申请实施例中,为了提高授权效率,类型相同的加锁请求可以在同一个加锁请求队列中等待。换言之,一个加锁请求队列中排列的各个加锁请求,所请求的锁权限类型是相同。
[0048] DLM授权加锁请求队列中的加锁请求后,将授权的加锁请求从加锁请求队列中移除,并添加到授权队列中,授权队列中排队有各个已授权锁。
[0049] 在S101中,DLM接收加锁请求,会按照加锁请求所请求的锁权限将加锁请求加入对应类型的请求队列中。
[0050] 在S102之前,即授权请求的锁权限之前,DLM还需要判断加锁请求是否能够被授权。在本申请实施例中,当根据本地存储的锁权限兼容性列表判断请求的锁权限与DLM中记录的已授权锁权限的最高等级不冲突时,则能够被授权;反之,则不能被授权。
[0051] 具体来讲,请求的锁权限与已授权锁权限的最高等级不冲突为:请求的锁权限的等级参数高于或等于已授权锁权限的最高等级的等级参数。
[0052] 具体来讲,DLM从加锁请求的信息中获得请求的锁权限的等级参数。在本申请实施例中,等级参数表征锁权限的等级,锁权限的等级参数越高,锁权限的优先等级越高。即,若请求的是等级参数高的锁权限,而已授权的是等级参数低的或相同的锁权限,则请求的锁权限与已授权的锁权限不冲突,可以授予请求的等级参数高的锁权限。反之,若请求的是等级参数低的锁权限,而已授权的是等级参数高的锁权限,则请求的锁权限与已授权的锁权限冲突,不能授予请求的等级参数低的锁权限。
[0053] 为了避免将请求的锁权限与已授权锁一一进行冲突判断,当请求的锁权限的等级参数等于或高于已授权锁权限的最高等级的等级参数时,DLM即可授权请求的锁权限。
[0054] 具体来讲,已授权锁权限的最高等级的等级参数具体为DLM所有已授权锁中,权限等级最高的等级参数。授权队列中存在授权、解锁、升级、降级、召回等操作,因此,已授权锁权限的最高等级的等级参数也会依据当前授权队列而动态变化。
[0055] 在本发明实施例中,当请求的锁权限的等级参数低于已授权锁权限的最高等级的等级参数时,表明请求的锁权限至少与已授权锁中等级参数最高的锁权限存在冲突,所以,请求的锁权限也就不可能与所有已授权的锁权限均不冲突,那么DLM不再需要将请求的锁权限与其余已授权的锁权限一一进行冲突判断,就可以确定不授权请求的锁权限。
[0056] 而当请求的锁权限的等级参数等于或高于已授权锁权限的最高等级的等级参数时,表明请求的锁权限与当前已经获得授权的锁权限中等级参数最高的锁权限不冲突。而其余已授权锁的权限等级均低于或等于最高等级,故请求的锁权限的等级等于或高于每一个已授权锁的权限的等级。因此DLM可以由此确定出请求的锁权限与各个已授权锁的权限均不冲突,可以授权请求的锁权限。
[0057] 接着,在确定请求的锁权限与已授权锁权限的最高等级不冲突后,S102中,DLM就会授权请求的锁权限,从而,加锁请求对应的锁就可以开始对对应的资源进行相应的操作了。
[0058] 在本申请实施例中,当加锁请求在进入加锁请求队列后,DLM确定加锁请求能够被授权,则在授权后将加锁请求从加锁请求队列中移除;如果不能被授权,加锁请求则仍然保留在加锁请求队列中。后续进入加锁请求队列的加锁请求,即使前面仍然排队有未被授权的加锁请求,只要与当前已授权锁权限的最高等级不冲突,仍然可以被授权。因此,提高了DLM的授权效率,增加了系统利用率。
[0059] 进一步,为了便于后续授权锁权限,本发明实施例中还包括:
[0060] 判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;
[0061] 当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0062] 具体来讲,已授权锁权限的最高等级的等级参数会根据当前授权的锁权限情况而动态变化,因此在授权请求的锁权限后,DLM需判断新授权的加锁请求的等级参数是否高于已授权锁权限的最高等级的等级参数。当请求的锁权限的等级参数高于已授权锁权限的最高等级的等级参数时,表明请求的锁权限在获得授权后成为了已授权锁权限中等级参数最高的锁权限,因此将已授权锁权限的最高等级的等级参数更新为新授权的锁权限的等级参数。当请求的锁权限的等级参数与已授权锁权限的最高等级的等级参数相同时,已授权锁权限的最高等级的等级参数则保持不变。
[0063] 后续进入加锁请求所请求的锁权限的处理方式,按照S101到S103的实施方式处理。
[0064] 为了更加清楚地说明上述技术方案,假设分布式系统中的锁权限的类型包括独占模式(英文:Exclusive;简称:EX)、保护写(英文:Protective Write;简称:PW)、保护读(英文:Protective Read;简称:PR)、并行读(英文:Concurrent Read;简称:CR)、并行写(英文:Concurrent Write;简称:CW)和空(英文:Null;简称:NL)。当然,在具体实现过程中,包括但不限于上述6种。
[0065] 上述6种锁权限的等级参数从高到低依次为EX,PW,PR,CW,CR,NL。如图2所示的锁权限兼容性列表中,左边第二列表示请求的锁权限的等级参数,第二行则表示不同的已授权锁权限的最高等级的等级参数。表中的“yes”表示请求的锁权限与已授权锁权限的最高等级不冲突,“no”则表示冲突。例如第四行第四列的表格中为“yes”,表示当已授权的锁权限中,最高等级参数为CR,请求的锁权限的等级参数为CR时,请求的锁权限的等级参数等于已授权锁权限的最高等级的等级参数,请求的锁权限与已授权的锁权限不冲突,则DLM可授予请求的锁权限。
[0066] 当DLM未授出任何锁权限时,已授权锁权限的最高等级的等级参数初始化为NL。请参考图3,在T1时刻,应用APP1调用分布式锁加锁接口,向DLM请求加锁,请求的锁权限为保护读PR,APP1对应的加锁请求进入PR类型的加锁请求队列。图3中,以gm来表示已授权锁权限的最高等级的等级参数。APP1的请求的锁权限的类型为PR,等级参数为PR。
DLM查询锁权限兼容性列表可知,请求的锁权限PR的等级参数高于已授权锁权限的最高等级参数NL,则授权APP1请求的锁权限。并且,DLM将已授权锁权限的最高等级的等级参数更新为PR。
[0067] 在T1之后的T2时刻,应用APP2调用分布式锁加锁接口,向DLM请求的锁权限为并行写CW,APP2对应的加锁请求进入CW类型的加锁请求队列。APP2请求的锁权限的等级参数为CW。DLM查询锁权限兼容性列表可知,请求的锁权限CW的等级参数低于已授权锁权限的最高等级参数PR,当前不能授权APP2请求的锁权限,所以APP2的加锁请求仍然排队在CW请求队列中。已授权锁权限的最高等级的等级参数仍然为PR。
[0068] 在T2之后的T3时刻,应用APP3调用分布式锁加锁接口,向DLM请求的锁权限为保护写PW,APP3对应的加锁请求进入PW类型的加锁请求队列。APP3请求的锁权限的等级参数为PW。DLM查询锁权限兼容性列表可知,请求的锁权限PW的等级参数高于已授权锁权限的最高等级参数PR,授权APP3请求的锁权限,并将已授权锁权限的最高等级的等级参数更新为PW。
[0069] 从上述描述可以看出,本发明实施例提供的技术方案根据等级参数快速判断请求的锁权限是否能够被授权,避免将请求的锁权限与已授权的锁权限一一进行冲突判断,提高分布式系统中锁资源管理器为请求的锁权限授权的效率,且降低了设备负担。进一步,即使在有请求的锁权限尚未授权的情况下,只要请求的锁权限的等级参数等于或高于已授权锁权限的最高等级的等级参数就可以提前获得授权,不再需要等待前面请求的锁权限授权后才能被授权,所以缩短了授权等待时间,提高了系列资源利用率。
[0070] 进一步,为了避免DLM不断授权新的加锁请求,进而导致队列中未获得授权的请求的锁权限长期得不到授权而失效,在本发明实施例中,还包括:
[0071] 到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0072] 在本申请实施例中,到达预定的条件时,处理所述加锁请求队列中的锁请求,具体包括:
[0073] 在到达预定的周期时间后,或当未获得授权的加锁请求的数量等于或超过设定阈值时,按照接收到所述加锁请求的时间,获取最早接收的加锁请求所请求的锁权限的等级参数;
[0074] 当最早接收的加锁请求锁请求的锁权限的等级参数等于或高于所述已授权锁权限的最高等级的等级参数时,授权所述最早接收的加锁请求锁请求的锁权限;
[0075] 将所述最早接收的加锁请求从对应的加锁请求队列中移除。
[0076] 具体来讲,本发明实施例中的周期时间可以为3分钟、5分钟等,本领域技术人员可以根据实际需要来设置。而阈值可以根据DLM为加锁请求队列分配的数据长度而定,例如DLM为各个类型的加锁请求队列的分配的总数据长度可以一共排队50个请求的锁权限,那么阈值可以为25、30个请求的锁权限等。也可以由用户在人机交互界面进行设定,对此本申请不做具体限制。
[0077] 当到达预定的周期时间后,或各个加锁请求队列的加锁请求的数量超过阈值时,DLM不再授权新进入加锁请求队列的加锁请求,而是按照接收到加锁请求的时间来依次授权。也就是说,最早接收的加锁请求最先获取授权。前一个请求的锁权限授权后,才能给授予下一个请求的锁权限。
[0078] 在最早接收的加锁请求锁请求的锁权限的等级参数等于或高于已授权锁权限的最高等级的等级参数时,授权当前最早接收的加锁请求锁请求的锁权限。若最早接收的加锁请求锁请求的锁权限的等级参数低于当前已授权锁权限的最高等级的等级参数时,则继续等待。在等待期间,DLM不会处理其他的加锁请求。直到已授权锁权限的最高等级的等级参数因授权的锁权限解锁、升级、降级、召回等操作更新为低于或等于最早接收的加锁请求锁请求的锁权限的等级参数时,DLM授予当前最早接收的加锁请求锁请求的锁权限,并从对应的加锁请求队列中移除该加锁请求。当然,已授权锁权限的最高等级的等级参数也会更新或保持,具体更新或保持的方法如前文所述
[0079] 授权后,DLM判断加锁请求队列是否满足预定的条件。若是,则判断移除上一个被授权的请求的锁权限后,当前最早接收的加锁请求是否能够被授权;若能够被授权,其处理方式与前文最早接收的加锁请求的处理方式相同;若否,则执行S101。
[0080] 或者,在到达预定的周期时间后,DLM会在预设时长内,如周期时间为3分钟,预设时长为1分钟,按照接收加锁请求的时间的依次处理加锁队列中的加锁请求,而在预设时长后,即进入下一个周期时间的计时后,再次以S101到S103的方式授权。
[0081] 更进一步,为了尽快授权请求的锁权限,当S101中接收的加锁请求所请求的锁权限的等级参数低于已授权锁权限的最高等级的等级参数时,DLM可以向已授权的锁权限发出授权召回请求。即当请求的锁权限不能被授权时,DLM会尝试召回与请求的锁权限冲突的已授权的锁权限以加速处理锁请求。当然,当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新已授权锁权限的最高等级的等级参数。然后再次判断,加锁请求锁请求的锁权限是否与已授权锁权限的最高等级参数冲突。
[0082] 沿用上文中的例子来说明,请参考图3,在T3之后的T4时刻,应用APP4调用分布式锁加锁接口,向DLM发送申请保护写PR锁权限的加锁请求,APP4的加锁请求进入PR类型的请求队列。APP4请求的锁权限的等级参数为PR。DLM查询锁权限兼容性列表确定,请求的锁权限PR的等级参数低于已授权锁权限的最高等级参数PW,则拒绝授权APP4请求的锁权限。同时由于APP4请求的锁权限与已授权的锁权限冲突,则DLM向APP3发出授权召回请求。
[0083] 若APP3释放权限,已授权锁权限的最高等级的等级参数更新,则DLM被触发,判断是否能够授权APP4请求的锁权限,当APP4请求的锁权限的等级参数高于或等于已授权锁权限的最高等级的等级参数时,授予APP4的请求锁权限。否则,APP4的加锁请求在加锁请求队列中继续排队等待。具体判断方法在前文已进行了详细的描述,在此不再另行说明。
[0084] 本申请第二方面提供了一种授权锁的分布式锁管理器,如图4所示,所述锁管理器包括:
[0085] 接收单元101,用于接收加锁请求,获取所述加锁请求所请求的锁权限;
[0086] 授权单元102,用于当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;
[0087] 返回单元103,用于返回所述请求的锁权限。
[0088] 在本发明实施例中,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
[0089] 进一步,本发明实施例中的锁管理器还包括:
[0090] 判断单元,用于判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;
[0091] 更新单元,用于当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0092] 可选的,接收单元101还用于:
[0093] 接收到加锁请求之后,根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
[0094] 可选的,在本发明实施例中,锁管理器还包括:
[0095] 释放信息接收单元,用于当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
[0096] 具体来讲,在本发明实施例中,等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
[0097] 可选的,接收单元101还用于若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;
[0098] 而授权单元102还用于到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0099] 本申请第三方面提供了一种分布式锁管理设备。图5所示的分布式锁管理设备涉及到的术语的含义以及具体实现,可以参考前述图1至图4以及实施例的相关描述。
[0100] 请参考图5所示,该分布式锁管理设备包括:
[0101] 接收器201,用于接收加锁请求,获取所述加锁请求所请求的锁权限;
[0102] 处理器202,用于当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;
[0103] 发送器203,用于返回所述请求的锁权限。
[0104] 可选的,所述请求的锁权限与所述已授权锁权限的最高等级不冲突为:所述请求的锁权限的等级参数高于或等于所述已授权锁权限的最高等级的等级参数。
[0105] 可选的,处理器202还用于:
[0106] 判断所述请求的锁权限的等级参数是否高于所述已授权锁权限的最高等级的等级参数;
[0107] 当所述请求的锁权限的等级参数高于所述已授权锁权限的最高等级的等级参数时,将所述已授权锁权限的最高等级的等级参数更新为所述请求的锁权限的等级参数。
[0108] 可选的,处理器202还用于:
[0109] 接收到加锁请求之后,根据所述请求的锁权限,将所述加锁请求划分到申请同类型锁权限的加锁请求队列中。
[0110] 可选的,处理器202还用于:
[0111] 当接收到已授权的锁权限释放消息时,根据已授权锁权限列表更新所述已授权锁权限的最高等级的等级参数。
[0112] 在本发明实施例中,等级参数从高到低为:独占模式、保护写、保护读、并行读、并行写和空。
[0113] 可选的,处理器202还用于:
[0114] 若所述请求的锁权限与所述已授权锁权限的最高等级冲突,将所述锁请求保留在所述加锁请求队列中;
[0115] 到达预定的条件时,处理所述加锁请求队列中的锁请求。
[0116] 其中,在图5中,总线架构(用总线200来代表),总线200可以包括任意数量的互联的总线和桥,总线200将包括由处理器202代表的一个或多个处理器和存储器204代表的存储器的各种电路链接在一起。总线200还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口206在总线200和接收器201和发送器203之间提供接口。接收器201和发送器203可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
[0117] 处理器202负责管理总线200和通常的处理,而存储器204可以被用于存储处理器202在执行操作时所使用的数据。
[0118] 前述实施例中描述的授权锁的过程的各种变化方式和具体实例同样适用于本实施例的分布式锁管理设备,通过前述的详细描述,本领域技术人员可以清楚的知道本实施例中分布式锁管理设备的实施方法,所以为了说明书的简洁,在此不再详述。
[0119] 本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0120] 首先接收加锁请求,获取所述加锁请求所请求的锁权限;当根据锁权限兼容性列表,判断所述请求的锁权限与所述分布式锁管理器中记录的已授权锁权限的最高等级不冲突时,授权所述请求的锁权限;并返回所述请求的锁权限。从而,避免将加锁请求所请求的锁权限与已授权锁一一进行冲突判断,提高分布式系统中锁管理器为请求的锁权限授权的效率,缩短了授权等待时间,且降低了设备负担。
[0121] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0122] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0123] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0124] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0125] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈