范围锁的获取方法、装置、系统及计算机可读存储介质与流程

专利查询18天前  22


本技术涉及计算机,尤其涉及一种范围锁的获取方法、装置、系统及计算机可读存储介质。


背景技术:

1、分布式系统中存在着多个客户端对同一个文件的并发读写访问的情况,为了保障文件的一致性,通常在对文件的数据进行操作之前获取操作对应的锁,使用锁对文件中的数据进行锁定,再对被锁定的数据执行操作。为了提高锁的获取效率,从而提高对数据的锁定效率,适应并发读写访问较多的场景,范围锁作为一种长度灵活、能够对文件中的数据按区间锁定的锁类型应运而生。

2、相关技术中,使用红黑树(red black tree,rbtree)管理范围锁,红黑树的每个节点表示一个范围锁,已获取的范围锁通过红黑树的结构关联在一起。在要获取新的范围锁的情况下,从红黑树的根节点开始进行遍历,查看要获取的新的范围锁与已获取的范围锁是否存在冲突。在不存在冲突的情况下,获取新的范围锁。

3、然而,由于在获取新的范围锁时需要对红黑树的结构进行遍历,随着已获取的范围锁的数量不断增加,遍历红黑树的结构所需要的时间不断增加,导致获取范围锁的效率较低。


技术实现思路

1、本技术提出一种范围锁的获取方法、装置、系统及计算机可读存储介质,用于提高获取范围锁的效率。

2、第一方面,提供了一种范围锁的获取方法,该方法包括:第一设备获取第二设备发送的第一报文,第一报文用于请求获取第一范围锁,第一报文包括第一范围锁的类型和区间,第一范围锁用于锁定分布式存储的数据;然后,第一设备获取第一范围锁的类型对应的第二范围锁,确定第一范围锁的区间与第二范围锁的区间是否相交;基于第一范围锁的区间与第二范围锁的区间不相交,第一设备向第二设备发送第二报文,第二报文用于指示第二设备获取第一范围锁。

3、该方法中,在获取到用于请求范围锁的报文之后,第一设备直接获取范围锁的类型对应的范围锁,进而确定区间是否相交,无需从所有已获取的范围锁中的固定的范围锁进行遍历,从而获取范围锁的效率较高。

4、在一种可能的实现方式中,第一范围锁的区间包括第一端点和第二端点,第一端点、第二端点和第二范围锁的区间包括的端点通过数值表示。在此情况下,确定第一范围锁的区间与第二范围锁的区间是否相交,包括:从第二范围锁的区间包括的端点中,获取第一端点的第一临近点和第二临近点,第一临近点为至少一个第一参考端点中数值最大的端点,第一参考端点的数值小于第一端点的数值,第二临近点为至少一个第二参考端点中数值最小的端点,第二参考端点的数值大于第一端点的数值;根据第一临近点、第二临近点和第二端点,确定第一范围锁的区间与第二范围锁的区间是否相交。

5、也就是说,第一临近点和第二临近点为第二范围锁的区间包括的端点中分别位于第一端点两侧的端点,从而在根据第一临近点、第二临近点和第二端点,确定第一范围锁的区间与第二范围锁的区间是否相交时,可以根据第一临近点所在的第二范围锁、第二临近点所在的第二范围锁和是否存在区间包含第一范围锁的区间的第二范围锁,确定第一范围锁的区间与第二范围锁的区间是否相交。用于确定区间是否相交的第二范围锁的数量较少,确定效率较高,从而提高获取范围锁的效率。

6、在一种可能的实现方式中,第二范围锁的数量为多个,根据第一临近点、第二临近点和第二端点,确定第一范围锁的区间与第二范围锁的区间是否相交,包括:在第二端点的数值大于第一端点的数值的情况下,基于第一临近点为一个第二范围锁的区间包括的第四端点、第二临近点为另一个第二范围锁的区间包括的第五端点、第二端点的数值小于第二临近点的数值、且第一范围锁的区间不被多个第二范围锁中的任一第二范围锁的区间包含,确定第一范围锁的区间与多个第二范围锁的区间不相交。

7、其中,包括第四端点的区间还包括第三端点,第三端点的数值小于第四端点的数值,包括第五端点的区间还包括第六端点,第五端点的数值小于第六端点的数值。也就是说,该方法适用于第一端点为第一范围锁的区间包括的端点中位于左侧的端点,第二端点为第一范围锁的区间包括的端点中位于右侧的端点的情况。

8、在一种可能的实现方式中,第二范围锁的数量为多个,根据第一临近点、第二临近点和第二端点,确定第一范围锁的区间与第二范围锁的区间是否相交,包括:在第二端点的数值小于第一端点的数值的情况下,基于第一临近点为一个第二范围锁的区间包括的第四端点、第二临近点为另一个第二范围锁的区间包括的第五端点、第二端点的数值大于第一临近点的数值、且第一范围锁的区间不被多个第二范围锁中的任一第二范围锁的区间包含,确定第一范围锁的区间与多个第二范围锁的区间不相交。

9、其中,包括第四端点的区间还包括第三端点,第三端点的数值小于第四端点的数值,包括第五端点的区间还包括第六端点,第五端点的数值小于第六端点的数值。也就是说,该方法适用于第一端点为第一范围锁的区间包括的端点中位于右侧的端点,第二端点为第一范围锁的区间包括的端点中位于左侧的端点的情况,第一端点和第二端点的相对位置较为灵活。

10、在一种可能的实现方式中,第一设备存储有类型对应的多级查找结构,第二范围锁的区间包括的端点存储在多级查找结构中;从第二范围锁的区间包括的端点中获取第一端点的第一临近点和第二临近点包括:查找多级查找结构,获取第一端点的第一临近点和第二临近点。

11、该方法中,在第二范围锁的区间的端点包括在类型对应的多级查找结构中的情况下,根据多级查找结构中位于上层的比特位置的值能够快速确定位于下层的多个比特位置的值的情况,从而能够较为快速地缩小第一端点的第一临近点和第二临近点所在的比特位置的范围,基于多级查找结构查找第一端点的第一临近点和第二临近点的效率较高。

12、在一种可能的实现方式中,向第二设备发送第二报文之后,还包括:第一设备将第一端点和第二端点加入多级查找结构。该方法能够将第一范围锁的端点加入多级查找结构,从而后续第一范围锁的端点能够用于确定是否可以获取范围锁。

13、在一种可能的实现方式中,将第一端点和第二端点加入多级查找结构之后,还包括:第一设备获取第二设备发送的第三报文,第三报文用于请求释放第一范围锁,第三报文包括第一范围锁的类型、第一端点和第二端点;第一设备获取类型对应的多级查找结构;第一设备从多级查找结构中删除第一端点和第二端点。在第一范围锁被释放的情况下,该方法能够将第一范围锁的端点从多级查找结构中删除,使得多级查找结构中包括的端点的情况与类型对应的第二范围锁的情况保持一致。

14、在一种可能的实现方式中,基于第一范围锁为区间可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的区间不可相交的范围锁;或者,基于第一范围锁为区间不可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的所有范围锁。该方法可以适用于第一范围锁的不同类型,从而适用范围较广。

15、在一种可能的实现方式中,第一设备为交换机、服务器、包括现场可编程逻辑门阵列(field programmable gate array,fpga)的设备、包括智能网卡(smart networkinterface card,smart nic)的设备或者包括数据处理单元(data processing unit,dpu)的设备中的任一种,第二设备为客户端。该方法能够适用于多种设备作为第一设备的情况,使用范围较广。再有,在第一设备为交换机、包括fpga的设备、包括智能网卡的设备或者包括dpu的设备中的任一种的情况下,无论第一设备接收到多少个用于请求范围锁的报文,第一设备处理这些报文的时间基本相同。从而在并发的读写操作较高的场景中,第一设备执行该方法的时长较为稳定。在该方法的执行时长较短的情况下,获取范围锁的时延较短,效率较高。

16、第二方面,提供了一种范围锁的获取方法,该方法包括:第二设备向第一设备发送第一报文,第一报文用于请求获取第一范围锁,第一报文包括第一范围锁的类型和区间,第一范围锁用于锁定分布式存储的数据;第二设备接收第一设备发送的第二报文,基于第二报文获取第一范围锁,其中,第二报文是第一设备基于第一范围锁的区间与类型对应的第二范围锁的区间不相交发送的。

17、该方法中,第一设备在获取到用于请求范围锁的报文之后,直接获取范围锁的类型对应的范围锁,进而确定区间是否相交,无需从所有已获取的范围锁中的固定的范围锁进行遍历,从而确定区间是否相交的效率较高。在此情况下,第二设备由发送第一报文到接收第二报文的时间较短,获取范围锁的效率较高。

18、在一种可能的实现方式中,获取第一范围锁之后,还包括:第二设备向第一设备发送第三报文,第三报文用于请求释放第一范围锁,第三报文包括第一范围锁的类型和区间。第二设备可以请求释放第一范围锁,从而在第一范围锁释放之后,第一范围锁能够被其他设备重新获取,进而基于第一范围锁对分布式存储的数据进行操作。

19、在一种可能的实现方式中,基于第一范围锁为区间可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的区间不可相交的范围锁;或者,基于第一范围锁为区间不可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的所有范围锁。该方法可以适用于第一范围锁的不同类型,从而适用范围较广。

20、在一种可能的实现方式中,第一设备为交换机、服务器、包括fpga的设备、包括智能网卡的设备或者包括dpu的设备中的任一种,第二设备为客户端。该方法能够适用于多种设备作为第一设备的情况,使用范围较广。再有,在第一设备为交换机、包括fpga的设备、包括智能网卡的设备或者包括dpu的设备中的任一种的情况下,无论第一设备接收到多少个用于请求范围锁的报文,第一设备处理这些报文的时间基本相同。从而在并发的读写操作较高的场景中,第一设备执行该方法的时长较为稳定。在该方法的执行时长较短的情况下,获取范围锁的时延较短,效率较高。

21、第三方面,提供了一种范围锁的获取装置,该装置应用于第一设备,该装置包括:

22、第一获取模块,用于获取第二设备发送的第一报文,第一报文用于请求获取第一范围锁,第一报文包括第一范围锁的类型和区间,第一范围锁用于锁定分布式存储的数据;

23、第二获取模块,用于获取第一范围锁的类型对应的第二范围锁;

24、确定模块,用于确定第一范围锁的区间与第二范围锁的区间是否相交;

25、发送模块,用于基于第一范围锁的区间与第二范围锁的区间不相交,向第二设备发送第二报文,第二报文用于指示第二设备获取第一范围锁。

26、在一种可能的实现方式中,第一范围锁的区间包括第一端点和第二端点,第一端点、第二端点和第二范围锁的区间包括的端点通过数值表示;确定模块,用于从第二范围锁的区间包括的端点中,获取第一端点的第一临近点和第二临近点,第一临近点为至少一个第一参考端点中数值最大的端点,第一参考端点的数值小于第一端点的数值,第二临近点为至少一个第二参考端点中数值最小的端点,第二参考端点的数值大于第一端点的数值;根据第一临近点、第二临近点和第二端点,确定第一范围锁的区间与第二范围锁的区间是否相交。

27、在一种可能的实现方式中,第二范围锁的数量为多个,确定模块,用于在第二端点的数值大于第一端点的数值的情况下,基于第一临近点为一个第二范围锁的区间包括的第四端点、第二临近点为另一个第二范围锁的区间包括的第五端点、第二端点的数值小于第二临近点的数值、且第一范围锁的区间不被多个第二范围锁中的任一第二范围锁的区间包含,确定第一范围锁的区间与多个第二范围锁的区间不相交;其中,包括第四端点的区间还包括第三端点,第三端点的数值小于第四端点的数值,包括第五端点的区间还包括第六端点,第五端点的数值小于第六端点的数值。

28、在一种可能的实现方式中,第二范围锁的数量为多个,确定模块,用于在第二端点的数值小于第一端点的数值的情况下,基于第一临近点为一个第二范围锁的区间包括的第四端点、第二临近点为另一个第二范围锁的区间包括的第五端点、第二端点的数值大于第一临近点的数值、且第一范围锁的区间不被多个第二范围锁中的任一第二范围锁的区间包含,确定第一范围锁的区间与多个第二范围锁的区间不相交;其中,包括第四端点的区间还包括第三端点,第三端点的数值小于第四端点的数值,包括第五端点的区间还包括第六端点,第五端点的数值小于第六端点的数值。

29、在一种可能的实现方式中,第一设备存储有类型对应的多级查找结构,第二范围锁的区间包括的端点存储在多级查找结构中;确定模块,用于查找多级查找结构,获取第一端点的第一临近点和第二临近点。

30、在一种可能的实现方式中,确定模块,还用于将第一端点和第二端点加入多级查找结构。

31、在一种可能的实现方式中,第一获取模块,还用于获取第二设备发送的第三报文,第三报文用于请求释放第一范围锁,第三报文包括第一范围锁的类型、第一端点和第二端点;确定模块,还用于获取类型对应的多级查找结构;从多级查找结构中删除第一端点和第二端点。

32、在一种可能的实现方式中,基于第一范围锁为区间可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的区间不可相交的范围锁;或者,基于第一范围锁为区间不可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的所有范围锁。

33、在一种可能的实现方式中,第一设备为交换机、服务器、包括fpga的设备、包括智能网卡的设备或者包括dpu的设备中的任一种,第二设备为客户端。

34、第四方面,提供了一种范围锁的获取装置,该装置应用于第二设备,该装置包括:

35、发送模块,用于向第一设备发送第一报文,第一报文用于请求获取第一范围锁,第一报文包括第一范围锁的类型和区间,第一范围锁用于锁定分布式存储的数据;

36、第一获取模块,用于接收第一设备发送的第二报文,第二报文是第一设备基于第一范围锁的区间与类型对应的第二范围锁的区间不相交发送的;

37、第二获取模块,用于基于第二报文获取第一范围锁。

38、在一种可能的实现方式中,发送模块,还用于向第一设备发送第三报文,第三报文用于请求释放第一范围锁,第三报文包括第一范围锁的类型和区间。

39、在一种可能的实现方式中,基于第一范围锁为区间可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的区间不可相交的范围锁;或者,基于第一范围锁为区间不可相交的范围锁,第二范围锁包括在第一范围锁之前已被获取的所有范围锁。

40、在一种可能的实现方式中,第一设备为交换机、服务器、包括fpga的设备、包括智能网卡的设备或者包括dpu的设备中的任一种,第二设备为客户端。

41、第五方面,提供了一种范围锁的获取系统,该系统包括第一设备和第二设备,第一设备用于执行第一方面中任一的范围锁的获取方法,第二设备用于执行第二方面中任一的范围锁的获取方法。

42、第六方面,提供了一种计算机系统,计算机系统包括处理器,当处理器执行程序指令或代码时,计算机系统实现第一方面中任一的范围锁的获取方法,或者第二方面中任一的范围锁的获取方法。示例性地,计算机系统还包括存储器,存储器用于存储该程序指令或代码。

43、第七方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序指令或代码,程序指令或代码由处理器加载并执行时以使计算机实现第一方面中任一的范围锁的获取方法,或者第二方面中任一的范围锁的获取方法。

44、第八方面,提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,收发器、存储器和处理器通过内部连接通路互相通信,存储器用于存储指令,处理器用于执行存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当处理器执行存储器存储的指令时,使得处理器执行第一方面中任一的范围锁的获取方法,或者第二方面中任一的范围锁的获取方法。

45、示例性地,处理器为一个或多个,存储器为一个或多个。

46、示例性地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。

47、在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本技术对存储器的类型以及存储器与处理器的设置方式不做限定。

48、第九方面,提供了一种计算机程序或者计算机程序产品,计算机程序或者计算机程序产品包括:计算机程序代码,当计算机程序代码被计算机运行时,使得计算机执行第一方面中任一的范围锁的获取方法,或者第二方面中任一的范围锁的获取方法。

49、第十方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行该存储器中存储的指令,在芯片安装于第一设备的情况下,第一设备执行第一方面中任一的范围锁的获取方法,在芯片安装于第二设备的情况下,第二设备执行第二方面中任一的范围锁的获取方法。

50、示例性地,该芯片还包括:输入接口、输出接口和该存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连。

51、应当理解的是,本技术的第三方面至第十方面的技术方案及对应的可能的实现方式所取得的有益效果可参见上述对第一方面和第二方面及其对应的可能的实现方式的技术效果,此处不再赘述。


技术特征:

1.一种范围锁的获取方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述第一范围锁的区间包括第一端点和第二端点,所述第一端点、所述第二端点和所述第二范围锁的区间包括的端点通过数值表示;所述确定所述第一范围锁的区间与所述第二范围锁的区间是否相交,包括:

3.根据权利要求2所述的方法,其特征在于,所述第二范围锁的数量为多个,所述根据所述第一临近点、所述第二临近点和所述第二端点,确定所述第一范围锁的区间与所述第二范围锁的区间是否相交,包括:

4.根据权利要求2所述的方法,其特征在于,所述第二范围锁的数量为多个,所述根据所述第一临近点、所述第二临近点和所述第二端点,确定所述第一范围锁的区间与所述第二范围锁的区间是否相交,包括:

5.根据权利要求2-4任一所述的方法,其特征在于,所述第一设备存储有所述类型对应的多级查找结构,所述第二范围锁的区间包括的端点存储在所述多级查找结构中;

6.根据权利要求5所述的方法,其特征在于,所述向所述第二设备发送第二报文之后,还包括:

7.根据权利要求6所述的方法,其特征在于,所述将所述第一端点和所述第二端点加入所述多级查找结构之后,还包括:

8.根据权利要求1-7任一所述的方法,其特征在于,基于所述第一范围锁为区间可相交的范围锁,所述第二范围锁包括在所述第一范围锁之前已被获取的区间不可相交的范围锁;

9.根据权利要求1-8任一所述的方法,其特征在于,所述第一设备为交换机、服务器、包括现场可编程逻辑门阵列的设备、包括智能网卡的设备或者包括数据处理单元的设备中的任一种,所述第二设备为客户端。

10.一种范围锁的获取方法,其特征在于,所述方法包括:

11.根据权利要求10所述的方法,其特征在于,所述获取所述第一范围锁之后,还包括:

12.根据权利要求10或11所述的方法,其特征在于,基于所述第一范围锁为区间可相交的范围锁,所述第二范围锁包括在所述第一范围锁之前已被获取的区间不可相交的范围锁;

13.根据权利要求10-12任一所述的方法,其特征在于,所述第一设备为交换机、服务器、包括现场可编程逻辑门阵列的设备、包括智能网卡的设备或者包括数据处理单元的设备中的任一种,所述第二设备为客户端。

14.一种范围锁的获取装置,其特征在于,所述装置应用于第一设备,所述装置包括:

15.一种范围锁的获取装置,其特征在于,所述装置应用于第二设备,所述装置包括:

16.一种范围锁的获取系统,其特征在于,所述系统包括第一设备和第二设备,所述第一设备用于执行如权利要求1-9中任一所述的方法,所述第二设备用于执行如权利要求10-13中任一所述的方法。

17.一种计算机系统,其特征在于,所述计算机系统包括:处理器,当所述处理器执行程序指令或代码时,所述计算机系统实现如权利要求1-13中任一所述的方法。

18.根据权利要求17所述的计算机系统,其特征在于,所述计算机系统还包括:存储器,所述存储器用于存储所述程序指令或代码。

19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序指令或代码,所述程序指令或代码由处理器加载并执行时,使计算机实现如权利要求1-13中任一所述的方法。

20.一种芯片,其特征在于,所述芯片包括处理器,所述处理器用于从存储器中调用并运行所述存储器中存储的指令,在所述芯片安装于第一设备的情况下,所述第一设备执行如权利要求1-9中任一所述的方法,在所述芯片安装于第二设备的情况下,所述第二设备执行如权利要求10-13中任一所述的方法。


技术总结
本申请公开了一种范围锁的获取方法、装置、系统及计算机可读存储介质,涉及计算机技术领域。该方法包括:第一设备获取第二设备发送的第一报文,第一报文用于请求获取第一范围锁,第一报文包括第一范围锁的类型和区间,第一范围锁用于锁定分布式存储的数据;然后,获取第一范围锁的类型对应的第二范围锁,确定第一范围锁的区间与第二范围锁的区间是否相交;基于第一范围锁的区间与第二范围锁的区间不相交,向第二设备发送第二报文,第二报文用于指示第二设备获取第一范围锁。该方法在获取到用于请求范围锁的报文之后,直接获取类型对应的范围锁,进而确定区间是否相交,无需从所有已获取的范围锁中固定的范围锁进行遍历,获取范围锁的效率较高。

技术研发人员:周朋朋,王巧灵,罗先强
受保护的技术使用者:华为技术有限公司
技术研发日:
技术公布日:2024/12/5

最新回复(0)