基于数据库的分布式锁的处理方法及装置制造方法及图纸

技术编号:30530226 阅读:29 留言:0更新日期:2021-10-30 12:28
本申请公开了一种基于数据库的分布式锁的处理方法及装置。该方法包括:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到锁,开始计时,并允许目标系统携带锁执行任务;判断目标系统占有锁的时长是否超过预设时长;若目标系统占有锁的时长超过预设时长,则对目标系统占有的锁进行强行释放,以便使除目标系统之外的其它系统有获取锁的可能。通过本申请,解决了相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。无法获取锁不能执行任务的问题。无法获取锁不能执行任务的问题。

【技术实现步骤摘要】
基于数据库的分布式锁的处理方法及装置


[0001]本申请涉及计算机
,具体而言,涉及一种基于数据库的分布式锁的处理方法及装置。

技术介绍

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

技术实现思路

[0004]本申请的主要目的在于提供一种基于数据库的分布式锁的处理方法及装置,以解决相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。
[0005]为了实现上述目的,根据本申请的一个方面,提供了一种基于数据库的分布式锁的处理方法。该方法包括:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能。
[0006]进一步地,在所述目标系统成功获取到所述锁之后,所述方法还包括:控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。
[0007]进一步地,所述方法还包括:在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;若除所述目标系统之外的其它系统无法获取到所述锁,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。
[0008]进一步地,所述方法还包括:在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。
[0009]为了实现上述目的,根据本申请的另一方面,提供了一种基于数据库的分布式锁的处理装置。该装置包括:第一获取单元,用于在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断单元,用于判断所述目标系统占有所述锁的时长是否超过预设时长;第一控制单
元,用于在所述目标系统占有所述锁的时长超过所述预设时长的情况下,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能。
[0010]进一步地,所述装置还包括:第二控制单元,用于在所述目标系统成功获取到所述锁之后,控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。
[0011]进一步地,所述装置还包括:第二获取单元,用于在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;第三获取单元,用于在除所述目标系统之外的其它系统无法获取到所述锁的情况下,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。
[0012]进一步地,所述装置还包括:第一修改单元,用于在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;第二修改单元,用于若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。
[0013]为了实现上述目的,根据本申请的另一方面,提供了一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的基于数据库的分布式锁的处理方法。
[0014]为了实现上述目的,根据本申请的另一方面,提供了一种电子设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任意一项所述的基于数据库的分布式锁的处理方法。
[0015]通过本申请,采用以下步骤:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取锁的可能,解决了相关技术中系统在占有锁后执行任务时出现死锁的情况,导致其他系统无法获取锁不能执行任务的问题。通过在本申请加入了锁超时机制,对超时时间的配置,进而达到了避免了死锁的产生的问题。
附图说明
[0016]构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0017]图1是根据本申请实施例提供的基于数据库的分布式锁的处理方法的流程图;
[0018]图2是根据本申请实施例提供的可选的基于数据库的分布式锁的处理方法的示意图一;
[0019]图3是根据本申请实施例提供的可选的基于数据库的分布式锁的处理方法的示意图二;
[0020]图4是根据本申请实施例提供的基于数据库的分布式锁的处理装置的示意图;以及
[0021]图5是根据本申请实施例提供的设备框图。
具体实施方式
[0022]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0023]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0024]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0025]根据本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据库的分布式锁的处理方法,其特征在于,包括:在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断所述目标系统占有所述锁的时长是否超过预设时长;若所述目标系统占有所述锁的时长超过所述预设时长,则对所述目标系统占有的所述锁进行强行释放,以便使除所述目标系统之外的其它系统有获取所述锁的可能。2.根据权利要求1所述的方法,其特征在于,在所述目标系统成功获取到所述锁之后,所述方法还包括:控制所述多个系统中除所述目标系统之外的其它系统终止本次获取所述数据库中的锁的操作。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述目标系统成功获取到所述锁之后,按照预设时间周期控制除所述目标系统之外的其它系统再次发起获取所述数据库中的锁的操作;若除所述目标系统之外的其它系统无法获取到所述锁,确定所述目标系统仍然占有所述锁,则执行判断所述目标系统占有所述锁的时长是否超过预设时长的步骤。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述目标系统成功获取到所述锁之后,所述目标系统修改所述锁的记录信息,以指示所述锁被占用;若在所述预设时长内,所述目标系统携带所述锁任务执行完成,所述目标系统再次修改所述锁的记录信息以指示所述锁未被占用,并释放所述锁。5.一种基于数据库的分布式锁的处理装置,其特征在于,包括:第一获取单元,用于在多个系统同时发起获取数据库中的锁的操作时,若目标系统成功获取到所述锁,开始计时,并允许所述目标系统携带所述锁执行任务;判断单元,用于判断所述目标系统占有所述锁的时长是否超过预设时长;第一控制单元,用于在所述目标系统占有...

【专利技术属性】
技术研发人员:陈集锋
申请(专利权)人:北京国双科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1