一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于数据库的分布式锁的处理方法及装置与流程

2021-10-29 21:21:00 来源:中国专利 TAG:分布式 装置 数据库 计算机 方法


1.本技术涉及计算机技术领域,具体而言,涉及一种基于数据库的分布式锁的处理方法及装置。


背景技术:

2.在多个系统组成集群时,每个系统不可避免会存在一些任务调度的情况,因为集群用的是同一个数据库,这就要求同一个时间,只能有一个系统来操作任务调度,但是若某一个系统拿到锁在执行任务调度时,由于某种原因,处于停止状态,导致出现死锁的产生,这种情况下别的系统无法拿到锁,也无法执行任务。
3.针对相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本技术的主要目的在于提供一种基于数据库的分布式锁的处理方法及装置,以解决相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。
5.为了实现上述目的,根据本技术的一个方面,提供了一种基于数据库的分布式锁的处理方法。该方法包括:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能。
6.进一步地,在所述目标系统成功获取到所述锁之后,所述方法还包括:控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。
7.进一步地,所述方法还包括:在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;若除所述目标系统之外的其它系统无法获取到所述锁,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。
8.进一步地,所述方法还包括:在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。
9.为了实现上述目的,根据本技术的另一方面,提供了一种基于数据库的分布式锁的处理装置。该装置包括:第一获取单元,用于在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断单元,用于判断所述目标系统占有所述锁的时长是否超过预设时长;第一控制单
元,用于在所述目标系统占有所述锁的时长超过所述预设时长的情况下,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能。
10.进一步地,所述装置还包括:第二控制单元,用于在所述目标系统成功获取到所述锁之后,控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。
11.进一步地,所述装置还包括:第二获取单元,用于在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;第三获取单元,用于在除所述目标系统之外的其它系统无法获取到所述锁的情况下,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。
12.进一步地,所述装置还包括:第一修改单元,用于在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;第二修改单元,用于若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。
13.为了实现上述目的,根据本技术的另一方面,提供了一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的基于数据库的分布式锁的处理方法。
14.为了实现上述目的,根据本技术的另一方面,提供了一种电子设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任意一项所述的基于数据库的分布式锁的处理方法。
15.通过本技术,采用以下步骤:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能,解决了相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。通过在本技术加入了锁超时机制,对超时时间的配置,进而达到了避免了死锁的产生的问题。
附图说明
16.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1是根据本技术实施例提供的基于数据库的分布式锁的处理方法的流程图;
18.图2是根据本技术实施例提供的可选的基于数据库的分布式锁的处理方法的示意图一;
19.图3是根据本技术实施例提供的可选的基于数据库的分布式锁的处理方法的示意图二;
20.图4是根据本技术实施例提供的基于数据库的分布式锁的处理装置的示意图;以及
21.图5是根据本技术实施例提供的设备框图。
具体实施方式
22.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
23.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
24.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.根据本技术的实施例,提供了一种基于数据库的分布式锁的处理方法。
26.图1是根据本技术实施例的基于数据库的分布式锁的处理方法的流程图。如图1所示,该方法包括以下步骤:
27.步骤s101,在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到锁,开始计时,并允许目标系统携带锁执行任务。
28.如图2所示,系统a和系统b同时对数据库的锁进行获取,系统a(对应上述的目标系统)成功获取到锁,系统a带着锁执行任务。
29.步骤s102,判断目标系统占有锁的时长是否超过预设时长。
30.例如,预设时长为1分钟,判断系统a占有锁的时长是否超过1分钟。
31.步骤s103,若目标系统占有锁的时长超过预设时长,则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能。
32.若系统a占有锁的时长超过1分钟,则可能是系统a由于一些原因,释放锁失败,系统b则会一直获取不到锁,超过配置好的时间(例如,1分钟),系统b会强制把这个锁释放掉。也即,在本技术中则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能,避免了死锁的产生。同时也保证多个系统之间的任务调度有序进行,防止脏数据产生。
33.可选地,在本技术实施例提供的基于数据库的分布式锁的处理方法中,在目标系统成功获取到锁之后,该方法还包括:控制多个系统中除目标系统之外的其它系统终止本次获取数据库中的锁的操作。
34.如图2所示,系统a和系统b同时对数据库的锁进行获取,系统a成功获取到锁,系统b获取不到锁则本次操作终止,系统b等待下一次再对数据库的锁进行获取。
35.可选地,在本技术实施例提供的基于数据库的分布式锁的处理方法中,该方法还包括:在目标系统成功获取到锁之后,按照预设时间周期控制除目标系统之外的其它系统
再次发起获取数据库中的锁的操作;若除目标系统之外的其它系统无法获取到锁,确定目标系统仍然占有锁,则执行判断目标系统占有锁的时长是否超过预设时长的步骤。
36.如图2所示,系统a和系统b同时对数据库的锁进行获取,系统a成功获取到锁,系统b获取不到锁,则本次操作终止。30秒后,系统b再次尝试获取锁,若发现锁被占用,本次操作终止,同时执行判断目标系统占有锁的时长是否超过预设时长的步骤。
37.可选地,在本技术实施例提供的基于数据库的分布式锁的处理方法中,该方法还包括:在目标系统成功获取到锁之后,目标系统修改锁的记录信息;若在预设时长内,目标系统携带锁任务执行完成,目标系统再次修改锁的记录信息以指示锁未被占用,并释放锁。
38.如图3所示,若系统a成功获取到锁,系统a带着锁执行任务,若系统a在预设时长内任务执行完成,系统a释放锁时则会修改锁的记录信息,锁的记录信息修改完成后,则表示系统a正常释放锁。在系统a释放锁之后,系统b会检测到锁被释放,系统b则可以去获取锁,并带着锁执行任务。
39.综上所述,本技术实施例提供的基于数据库的分布式锁的处理方法,通过在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到锁,开始计时,并允许目标系统携带锁执行任务;判断目标系统占有锁的时长是否超过预设时长;若目标系统占有锁的时长超过预设时长,则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能,解决了相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。通过在本技术加入了锁超时机制,对超时时间的配置,进而达到了避免了死锁的产生的问题。
40.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
41.本技术实施例还提供了一种基于数据库的分布式锁的处理装置,需要说明的是,本技术实施例的基于数据库的分布式锁的处理装置可以用于执行本技术实施例所提供的用于基于数据库的分布式锁的处理方法。以下对本技术实施例提供的基于数据库的分布式锁的处理装置进行介绍。
42.图4是根据本技术实施例的基于数据库的分布式锁的处理装置的示意图。如图4所示,该装置包括:第一获取单元201、判断单元202和第一控制单元203。
43.具体地,第一获取单元201,用于在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到锁,开始计时,并允许目标系统携带锁执行任务;
44.判断单元202,用于判断目标系统占有锁的时长是否超过预设时长;
45.第一控制单元203,用于在目标系统占有锁的时长超过预设时长的情况下,则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能。
46.本技术实施例提供的基于数据库的分布式锁的处理装置,通过第一获取单元201在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到锁,开始计时,并允许目标系统携带锁执行任务;判断单元202判断目标系统占有锁的时长是否超过预设时长;第一控制单元203在目标系统占有锁的时长超过预设时长的情况下,则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能,解决了相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的
问题,通过在本技术加入了锁超时机制,对超时时间的配置,进而达到了避免了死锁的产生的问题。
47.可选地,在本技术实施例提供的基于数据库的分布式锁的处理装置中,该装置还包括:第二控制单元,用于在目标系统成功获取到锁之后,控制多个系统中除目标系统之外的其它系统终止本次获取数据库中的锁的操作。
48.可选地,在本技术实施例提供的基于数据库的分布式锁的处理装置中,该装置还包括:第二获取单元,用于在目标系统成功获取到锁之后,按照预设时间周期控制除目标系统之外的其它系统再次发起获取数据库中的锁的操作;第三获取单元,用于在除目标系统之外的其它系统无法获取到锁的情况下,确定目标系统仍然占有锁,则执行判断目标系统占有锁的时长是否超过预设时长的步骤。
49.可选地,在本技术实施例提供的基于数据库的分布式锁的处理装置中,该装置还包括:第一修改单元,用于在目标系统成功获取到锁之后,目标系统修改锁的记录信息;第二修改单元,用于若在预设时长内,目标系统携带锁任务执行完成,目标系统再次修改锁的记录信息以指示锁未被占用,并释放锁。
50.所述基于数据库的分布式锁的处理装置包括处理器和存储器,上述第一获取单元201、判断单元202和第一控制单元203等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
51.处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来处理基于数据库的分布式锁。
52.本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述基于数据库的分布式锁的处理方法。
53.本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述基于数据库的分布式锁的处理方法。
54.本发明实施例提供了一种电子设备,如图5所示,该设备70包括至少一个处理器701、以及与处理器连接的至少一个存储器702、总线703;其中,处理器701、存储器702通过总线703完成相互间的通信;处理器701用于调用存储器中的程序指令,以执行上述的基于数据库的分布式锁的处理方法。本文中的设备可以是服务器、pc、pad、手机等。
55.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能。
56.当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在所述目标系统成功获取到所述锁之后,所述方法还包括:控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。
57.当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:所述方法还包括:在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;若除所述目标系统之外的其它
系统无法获取到所述锁,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。
58.当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:所述方法还包括:在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。
59.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
60.在一个典型的配置中,设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
61.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
62.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
63.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
64.本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
65.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜