CN111858079A - 分布式锁迁移方法、装置及电子设备、存储介质 - Google Patents
分布式锁迁移方法、装置及电子设备、存储介质 Download PDFInfo
- Publication number
- CN111858079A CN111858079A CN202010734407.2A CN202010734407A CN111858079A CN 111858079 A CN111858079 A CN 111858079A CN 202010734407 A CN202010734407 A CN 202010734407A CN 111858079 A CN111858079 A CN 111858079A
- Authority
- CN
- China
- Prior art keywords
- lock
- distributed
- state
- coordination service
- locks
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000013508 migration Methods 0.000 title claims abstract description 51
- 230000005012 migration Effects 0.000 title claims abstract description 51
- 230000008569 process Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本公开关于一种分布式锁迁移方法、装置及电子设备、存储介质,涉及分布式锁技术领域。通过在其中一个运行状态的锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,将被配置于新迁入的锁协调服务的指定数量的分布式锁的状态标记为准备状态,并通知持有指定数量的分布式锁的用户终端释放锁;将被配置于迁出的锁协调服务的指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的指定数量的分布式锁从准备状态切换为生效状态,从而减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
Description
技术领域
本公开涉及分布式锁技术领域,尤其涉及一种分布式锁迁移方法、装置及电子设备、存储介质。
背景技术
当前互联网系统通常存在分布式部署的情况,分布式部署可以为互联网系统带来性能和效率上的提升。当某个资源在多系统之间具有共享性时,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个用户终端处理,不能并发的执行。分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调它们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。分布式锁通过锁机制来让多客户端互斥的对共享资源进行访问。
现有技术中,通常利用锁协调服务实现分布式锁,即利用锁协调服务支撑分布式锁的使用。但是随着业务的增长,锁协调服务支撑的锁数量越来越多,同时争抢一个锁的客户端越来越多,会导致锁协调服务的性能逐渐无法满足业务需求,严重时甚至导致锁协调服务宕机。
发明内容
本公开提供一种分布式锁迁移方法、装置及电子设备、存储介质,以至少解决相关技术中在业务的增长时,导致锁协调服务的性能逐渐无法满足业务需求的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种分布式锁迁移方法,所述方法包括:
向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
可选地,在所述提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务后,所述方法还包括:
根据所述指定数量的分布式锁的ID、新迁入的所述另一个锁协调服务的ID,将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置,其中,所述重新配置的过程包括:解除所述指定数量的分布式锁的ID与迁出的锁协调服务的ID的配置关系;且将所述指定数量的分布式锁的ID与所述新迁入的所述另一个锁协调服务的ID建立配置关系。
可选地,在所述向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁之后,所述方法还包括:
接收用户终端发出的其中一个分布式锁未标记有状态的异常提示及未标记有状态的分布式锁的ID;
将未标记有状态的分布式锁的ID发送至配置终端显示;其中,所述配置终端为对分布式锁的状态进行标记的终端设备;
接收所述配置终端发送的标记指令,对未标记有状态的分布式锁的状态进行标记。
可选地,所述如果其中一个所述锁协调服务的负载值大于预设阈值时,则将指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务包括:
如果其中一个所述锁协调服务的负载值大于预设阈值时,则计算负载值与所述预设阈值的差值;
根据所述差值从预设的关系映射表中,查询出指定数量的分布式锁,其中,所述关系映射表中记录有所述不同差值分别与分布式锁的数量的一一对应关系;
将所述指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务。
可选地,所述另一个负载值小于预设阈值的锁协调服务为:在所述指定数量的分布式锁迁入后处于运行状态时,负载值小于预设阈值的锁协调服务。
可选地,所述另一个负载值小于预设阈值的锁协调服务包括:新创建的锁协调服务。
根据本公开实施例的第二方面,还提供另一种分布式锁获取方法,应用于用户终端,所述方法包括:
根据预配置的访问路径,访问与所述访问路径对应的锁协调服务;
从所述锁协调服务获取分布式锁,并检测获取到的分布式锁的状态;
如果所述分布式锁的状态为准备状态,则继续检测所述获取到的分布式锁的状态,直到所述分布式锁的状态变更为生效状态,以成功获取所述分布式锁;
如果接收到服务端发送的释放通知,则释放所述获取到的分布式锁;
如果所述分布式锁的状态为失效状态,则等待预设的时间,并返回所述根据预设的访问路径,访问与所述访问路径对应的锁协调服务的步骤。
可选地,在所述检测获取到的分布式锁的状态之后,所述方法还包括:
如果检测到其中一个分布式锁未标记有状态,则发送异常提示及未标记有状态的分布式式锁的ID至服务端。
根据本公开实施例的第三方面,提供一种分布式锁迁移装置,所述装置包括:
锁分配单元,被配置成执行向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
锁迁移单元,被配置成执行如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有与多个分布式锁;
状态标记单元,被配置成执行将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
状态切换单元,被配置成执行在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
状态切换单元还被配置成将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
可选地,所述装置还包括:
信息配置单元,被配置成根据所述指定数量的分布式锁的ID、新迁入的所述另一个锁协调服务的ID,将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置;其中,所述重新配置的过程包括:解除所述指定数量的分布式锁的ID与迁出的锁协调服务的ID的配置关系;且将所述指定数量的分布式锁的ID与所述新迁入的所述另一个锁协调服务的ID建立配置关系。
可选地,所述装置还包括:
信息接收单元,被配置成执行接收用户终端发出的其中一个分布式锁未标记有状态的异常提示及未标记有状态的分布式锁的ID;
信息发送单元,被配置成执行将未标记有状态的分布式锁的ID反馈至配置终端显示,其中,所述配置终端为对分布式锁的状态进行标记的终端设备;
所述状态标记单元还被配置成执行接收所述配置终端发送的标记指令,对未标记有状态的分布式锁的状态进行标记。
可选地,所述锁迁移单元包括:
计算模块,被配置成执行如果其中一个所述锁协调服务的负载值大于预设阈值时,则计算负载值与所述预设阈值的差值;
锁确定模块,被配置成执行根据所述差值从预设的关系映射表中,查询出指定数量的分布式锁,其中,所述关系映射表中记录有所述不同差值分别与分布式锁的数量的一一对应关系;
锁迁移模块,被配置成执行将所述指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务。
可选地,所述另一个负载值小于预设阈值的锁协调服务为:在所述指定数量的分布式锁迁入后处于运行状态时,负载值小于预设阈值的锁协调服务。
可选地,所述另一个负载值小于预设阈值的锁协调服务为:新创建的锁协调服务。
根据本申请实施例的第四方面,还提供了另一种分布式锁获取装置,应用于用户终端,所述装置包括:
服务访问单元,被配置成执行根据预配置的访问路径,访问与所述访问路径对应的锁协调服务;
状态检测单元,被配置成执行从所述锁协调服务获取分布式锁,并检测获取到的分布式锁的状态;
锁释放单元,被配置成执行如果接收到服务端发送的释放通知,则释放所述获取到的分布式锁;
状态检测单元,还被配置成执行如果所述分布式锁的状态为准备状态,则继续检测所述获取到的分布式锁的状态,直到所述分布式锁的状态变更为生效状态,以成功获取所述分布式锁;
进程返回单元,被配置成执行如果所述分布式锁的状态为失效状态,则等待预设的时间,并返回所述根据预设的访问路径,访问与所述访问路径对应的锁协调服务的步骤。
可选地,所述装置还包括:
信息发送单元,被配置成执行如果检测到其中一个分布式锁未标记有状态,则发送异常提示及未标记有状态的分布式式锁的ID至服务端。
根据本公开实施例的第五方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现本公开实施例第一方面的分布式锁迁移方法。
根据本公开实施例的第六方面,提供了一种存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本公开实施例第一方面的分布式锁迁移方法。
根据本公开实施例的第七方面,提供一种计算机程序产品,包括指令,当计算机程序产品被计算机所执行时,该指令使得计算机执行本公开实施例第一方面的分布式锁迁移方法。
本公开的实施例提供的技术方案至少带来以下有益效果:该分布式锁迁移方法通过向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。由于将负载值大于预设的阈值的锁协调服务配置的部分分布式锁迁移到另一个锁协调服务,从而减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种分布式锁迁移方法的流程图。
图2是根据一示例性实施例示出的分布式锁迁移系统的交互示意图。
图3是根据一示例性实施例示出的一种分布式锁迁移方法的流程图。
图4是根据一示例性实施例示出的一种分布式锁迁移方法的流程图。
图5是根据一示例性实施例示出的一种分布式锁迁移装置的框图。
图6是根据一示例性实施例示出的一种分布式锁迁移装置的框图。
图7是根据一示例性实施例示出的一种分布式锁迁移装置的框图。
图8是根据一示例性实施例示出的一种分布式锁迁移装置的框图。
图9是根据一示例性实施例示出的一种分布式锁获取方法的流程图。
图10是根据一示例性实施例示出的一种分布式锁获取装置的流程图。
图11是根据一示例性实施例示出的一种电子设备的电路连接框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
请参阅图1,本公开实施例提供了一种分布式锁迁移方法,应用于电子设备100。该电子设备100可以为服务器,如图2所示,电子设备100应用于分布式锁迁移系统,分布式锁迁移系统还包括多个锁协调服务200、多个用户终端400、业务服务300,其中,电子设备100分别与多个锁协调服务200、多个用户终端400通信连接,多个锁协调服务200与业务服务300通信连接,其中,锁协调服务200可以为上述的ZooKeeper服务;业务服务300与多个用户终端400通信连接,用户终端400可以发送访问请求至业务服务300,从而访问到业务数据(如,购物界面、直播界面等)以便进行数据交互。如图1所示,所述方法包括:
S11:向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁。
具体地分配方式可以为例如:分布式锁1-分布式锁1000被配置于锁协调服务2001,分布式锁1001-分布式锁2000被配置于锁协调服务2002,分布式锁2001-分布式锁3000被配置于锁协调服务2003等等。用户终端400在获取分布式锁时,先确定分布式锁被配置的的锁协调服务200,再从锁协调服务200获取对应分布式锁。
S12:判断其中一个运行状态的锁协调服务200的负载值是否大于预设的阈值;如果是,则执行S13。
其中,负载值可以在CPU的占有率、正在处理的进程数量。
S13:提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个锁协调服务200被预先配置有多个分布式锁。
其中,指定数量可以预先设置,也可以实时计算而得,在此不作限定。例如,当前的锁协调服务200总共配置有序号从1-5000的分布式锁,可以将序号为1-1000的分布式锁迁移至负载值小于预设阈值的另一个锁协调服务200,从而使得序号为1-1000的分布式锁被配置于新迁入的锁协调服务200。由于负载值大于预设的阈值的锁协调服务200迁出了序号为1-1000的分布式锁,从而减小了其负载,不会造成锁协调服务200宕机,并且新迁入的锁协调服务200也可以正常承载新迁入的分布式锁的使用。
S14:将被配置于新迁入的锁协调服务200的指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁。
准备状态表征分布式锁的迁移已经成功,但是暂时还未生效(由于迁出的分布式锁可能在迁出的锁协调服务200被使用)。
S15:在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
当迁出的锁协调服务200的指定数量的分布式锁的状态从生效状态切换为失效状态后,用户终端400就不能再从迁出的锁协调服务200获取迁出的分布式锁;且释放的分布式锁从准备状态切换为生效状态时,另一个用户终端可以在新迁入的锁协调服务获取新迁入的分布式锁,从而保证了迁出的分布式锁不会在两个锁协调服务200同时存在,每个分布式锁不会被多个用户终端同时持有。
基于上述,用户终端400获取分布式锁的过程可以为:
1.根据分布式锁与锁协调服务的配置关系找到对应的锁协调服务200先申请分布式锁;
2.获取到分布式锁后,检查锁节点的状态;
3.如果是生效状态,则说明获取分布式锁成功;
4.如果是准备状态,则继续持续观察状态的是否变更;
5.如果是失效状态,等待一段时间后返回上述的步骤1。
该分布式锁迁移方法通过向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。由于将负载值大于预设的阈值的锁协调服务配置的部分分布式锁迁移到另一个锁协调服务,从而减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
可选地,在S15之后,如图3所示,所述方法还包括:
S31:根据所述指定数量的分布式锁的ID、新迁入的所述另一个锁协调服务的ID,将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置。
其中,重新配置的过程包括:解除所述指定数量的分布式锁的ID与迁出的锁协调服务的ID的配置关系;且将所述指定数量的分布式锁的ID与所述新迁入的所述另一个锁协调服务的ID建立配置关系。将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置,可以完成对迁出的分布式锁的配置的锁协调服务更新,使得用户终端仍然可以正常获取到迁出的分布式锁,保证锁协调服务的正常运行的同时满足了业务需求。
具体地,如图4所示,S13可以包括:
S41:计算负载值与预设阈值的差值。
其中,预设的阈值可以根据锁协调服务200的性能而定。
S42:根据差值从预设的关系映射表中,查询出指定数量的分布式锁。
其中,关系映射表中记录有所述不同差值分别与分布式锁的数量的一一对应关系。
可以理解地,锁协调服务200负载的大小由配置的分布式锁的数量的多少决定的,差值越大,确定的指定数量也越大;差值越小,确定的指定数量也越小。因此,可以根据差值确定指定数量的分布式锁。
S43:将指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务200。
可选地,作为其中一种实施方式,上述的另一个负载值小于预设阈值的锁协调服务200为在指定数量的分布式锁迁入后处于运行状态时,负载值小于预设阈值的锁协调服务200。
可选地,作为另一种实施方式,上述的另一个负载值小于预设阈值的锁协调服务200为新创建的锁协调服务200。
可选地,所述方法还包括:接收用户终端发出的其中一个分布式锁未标记有状态的异常提示及未标记有状态的分布式锁的ID;将未标记有状态的分布式锁的ID发送至配置终端显示;其中,所述配置终端为对分布式锁的状态进行标记的终端设备;接收所述配置终端发送的标记指令,对未标记有状态的分布式锁的状态进行标记,从而提醒研发测试人员,分布式锁的状态有误,需要重新标记。
请参照图5,本公开实施例还提供了一种分布式锁迁移装置500,该电子设备100可以为服务器,应用于电子设备100。该电子设备100可以为服务器,如图2所示,电子设备100应用于分布式锁迁移系统,分布式锁迁移系统还包括多个锁协调服务200、多个用户终端400、业务服务300。其中,电子设备100分别与多个锁协调服务200、多个用户终端400通信连接,多个锁协调服务200与业务服务300通信连接,其中,锁协调服务200可以为上述的ZooKeeper服务;业务服务300与多个用户终端400通信连接,用户终端400可以发送访问请求至业务服务300,从而访问到业务数据(如,购物界面、直播界面等)以便进行数据交互。需要说明的是,本公开实施例所提供的分布式锁迁移装置500,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本公开实施例部分未提及之处,可参考上述的实施例中相应内容。所述装置500包括锁分配单元501、锁迁移单元502、状态标记单元503、状态切换单元504,其中,
锁分配单元501,被配置成执行向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁。
锁迁移单元502,被配置成执行如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有与多个分布式锁。
状态标记单元503,被配置成执行将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁。
状态切换单元504,被配置成执行在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态。
状态切换单元504还被配置成将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
本公开实施例提供的分布式锁迁移装置500在执行时可以实现如下功能:向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;将被配置于新迁入的锁协调服务的指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。由于将负载值大于预设的阈值的锁协调服务配置的部分分布式锁迁移到另一个锁协调服务,从而减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
可选地,如图6所示,所述装置500还包括:
所述装置还包括:
信息配置单元601,被配置成根据所述指定数量的分布式锁的ID、新迁入的所述另一个锁协调服务的ID,将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置;其中,所述重新配置的过程包括:解除所述指定数量的分布式锁的ID与迁出的锁协调服务的ID的配置关系;且将所述指定数量的分布式锁的ID与所述新迁入的所述另一个锁协调服务的ID建立配置关系。
可选地,如图7所示,所述装置500还包括:
信息接收单元701,被配置成执行接收用户终端发出的其中一个分布式锁未标记有状态的异常提示及未标记有状态的分布式锁的ID。
信息发送单元702,被配置成执行将未标记有状态的分布式锁的ID反馈至配置终端显示,其中,所述配置终端为对分布式锁的状态进行标记的终端设备。
状态标记单元503还被配置成执行接收所述配置终端发送的标记指令,对未标记有状态的分布式锁的状态进行标记。
具体地,如图8所示,锁迁移单元502可以包括:
计算模块801,被配置成执行如果其中一个锁协调服务的负载值大于预设阈值时,则计算负载值与预设阈值的差值。
锁确定模块802,被配置成执行根据差值从预设的关系映射表中,查询出指定数量的分布式锁。
其中,关系映射表中记录有所述不同差值分别与分布式锁的数量的一一对应关系;
锁迁移模块803,被配置成执行将指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务200。
作为其中一种实施方式,另一个负载值小于预设阈值的锁协调服务200为在指定数量的分布式锁迁入后处于运行状态时,负载值小于预设阈值的锁协调服务200。
作为另一种实施方式,另一个负载值小于预设阈值的锁协调服务200为新创建的锁协调服务200。
请参阅图9,本申请实施例还提供了另一种分布式锁获取方法,应用于用户终端,所述方法包括:
S91:根据预配置的访问路径,访问与访问路径对应的锁协调服务。
S92:从锁协调服务获取分布式锁,并检测获取到的分布式锁的状态。
S93:如果分布式锁的状态为准备状态,则继续检测获取到的分布式锁的状态,直到分布式锁的状态变更为生效状态,以成功获取分布式锁。
S94:如果接收到服务端发送的释放通知,则释放获取到的分布式锁。
S95:如果分布式锁的状态为失效状态,则等待预设的时间,并返回根据预设的访问路径,访问与访问路径对应的锁协调服务的步骤。
该分布式锁获取方法,通过检测获取到的分布式锁的状态,当分布式锁的状态变更为生效状态,才成功获取分布式锁,从而保证整个分布式锁迁移系统只有一个用户终端,针对同一个分布式锁确定持有,从而不会造成分布式锁的获取出现矛盾,同时可以配合服务端执行分布式锁迁移的工作,具体为:在接收到服务端发送的释放通知时,释放获取到的分布式锁,从而服务端可以将被配置于迁出的锁协调服务的指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的指定数量的分布式锁从准备状态切换为生效状态,减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
可选地,在S92之后,所述方法还包括:
如果检测到其中一个分布式锁未标记有状态,则发送异常提示及未标记有状态的分布式式锁的ID至服务端。
关于上述实施例中的装置500,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
请参阅图10,本申请实施例还提供了一种分布式锁获取装置1000,应用于用户终端,所述装置1000包括服务访问单元1001、状态检测单元1002、锁释放单元1003、状态检测单元1004、进程返回单元1005,其中,
服务访问单元1001,被配置成执行根据预配置的访问路径,访问与访问路径对应的锁协调服务。
状态检测单元1002,被配置成执行从锁协调服务获取分布式锁,并检测获取到的分布式锁的状态。
锁释放单元1003,被配置成执行如果接收到服务端发送的释放通知,则释放获取到的分布式锁。
状态检测单元1004,还被配置成执行如果分布式锁的状态为准备状态,则继续检测获取到的分布式锁的状态,直到分布式锁的状态变更为生效状态,以成功获取分布式锁。
进程返回单元1005,被配置成执行如果分布式锁的状态为失效状态,则等待预设的时间,并返回根据预设的访问路径,访问与访问路径对应的锁协调服务的步骤。
该分布式锁获取装置在执行时可以实现如下功能:通过检测获取到的分布式锁的状态,当分布式锁的状态变更为生效状态,才成功获取分布式锁,从而保证整个分布式锁迁移系统只有一个用户终端,针对同一个分布式锁确定持有,从而不会造成分布式锁的获取出现矛盾,同时可以配合服务端执行分布式锁迁移的工作,具体为:在接收到服务端发送的释放通知时,释放获取到的分布式锁,从而服务端可以将被配置于迁出的锁协调服务的指定数量的分布式锁的状态从生效状态切换为失效状态;将被配置于新迁入的锁协调服务的指定数量的分布式锁从准备状态切换为生效状态,减小了迁出分布式锁的锁协调服务的负载,不会造成宕机。
具体地,所述装置1000还包括:
信息发送单元,被配置成执行如果检测到其中一个分布式锁未标记有状态,则发送异常提示及未标记有状态的分布式式锁的ID至服务端。
图11是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备可以被提供为一服务器。参照图11,电子设备包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述的分布式锁迁移生成方法。所述分布式锁迁移生成方法可以包括:
向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
电子设备还可以包括一个电源组件926被配置为执行电子设备的电源管理,一个有线或无线网络接口950被配置为将电子设备连接到网络,和一个输入输出(I/O)接口958。电子设备可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述分布式锁迁移生成方法。其中,分布式锁迁移生成方法可以包括:
向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种分布式锁迁移方法,其特征在于,应用于服务端,所述方法包括:
向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有多个分布式锁;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
2.根据权利要求1所述的方法,其特征在于,在所述提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务后,所述方法还包括:
根据所述指定数量的分布式锁的ID、新迁入的所述另一个锁协调服务的ID,将迁出的指定数量的分布式锁与锁协调服务的配置关系重新配置,其中,所述重新配置的过程包括:解除所述指定数量的分布式锁的ID与迁出的锁协调服务的ID的配置关系;且将所述指定数量的分布式锁的ID与所述新迁入的所述另一个锁协调服务的ID建立配置关系。
3.根据权利要求1所述的方法,其特征在于,在所述向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁之后,所述方法还包括:
接收用户终端发出的其中一个分布式锁未标记有状态的异常提示及未标记有状态的分布式锁的ID;
将未标记有状态的分布式锁的ID发送至配置终端显示;其中,所述配置终端为对分布式锁的状态进行标记的终端设备;
接收所述配置终端发送的标记指令,对未标记有状态的分布式锁的状态进行标记。
4.根据权利要求1所述的方法,其特征在于,所述如果其中一个所述锁协调服务的负载值大于预设阈值时,则将指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务包括:
如果其中一个所述锁协调服务的负载值大于预设阈值时,则计算负载值与所述预设阈值的差值;
根据所述差值从预设的关系映射表中,查询出指定数量的分布式锁,其中,所述关系映射表中记录有所述不同差值分别与分布式锁的数量的一一对应关系;
将所述指定数量的分布式锁迁出至另一个负载值小于预设阈值的锁协调服务。
5.根据权利要求1所述的方法,其特征在于,所述另一个负载值小于预设阈值的锁协调服务为:在所述指定数量的分布式锁迁入后处于运行状态时,负载值小于预设阈值的锁协调服务。
6.一种分布式锁获取方法,其特征在于,应用于用户终端,所述方法包括:
根据预配置的访问路径,访问与所述访问路径对应的锁协调服务;
从所述锁协调服务获取分布式锁,并检测获取到的分布式锁的状态;
如果所述分布式锁的状态为准备状态,则继续检测所述获取到的分布式锁的状态,直到所述分布式锁的状态变更为生效状态,以成功获取所述分布式锁;
如果接收到服务端发送的释放通知,则释放所述获取到的分布式锁;
如果所述分布式锁的状态为失效状态,则等待预设的时间,并返回所述根据预设的访问路径,访问与所述访问路径对应的锁协调服务的步骤。
7.一种分布式锁迁移装置,其特征在于,所述装置包括:
锁分配单元,被配置成执行向多个锁协调服务中的每个锁协调服务分别分配多个分布式锁;
锁迁移单元,被配置成执行如果其中一个运行状态的所述锁协调服务的负载值大于预设阈值时,则提取该锁协调服务配置的指定数量的分布式锁迁出至负载值小于预设阈值的另一个锁协调服务,其中,每个所述锁协调服务被预先配置有与多个分布式锁;
状态标记单元,被配置成执行将被配置于新迁入的锁协调服务的所述指定数量的分布式锁的状态标记为准备状态,并通知持有所述指定数量的分布式锁的用户终端释放锁;
状态切换单元,被配置成执行在检测到所述指定数量的分布式锁被释放后,将被配置于迁出的锁协调服务的所述指定数量的分布式锁的状态从生效状态切换为失效状态;
状态切换单元还被配置成将被配置于新迁入的锁协调服务的所述指定数量的分布式锁从准备状态切换为生效状态。
8.一种分布式锁获取装置,其特征在于,应用于用户终端,所述装置包括:
服务访问单元,被配置成执行根据预配置的访问路径,访问与所述访问路径对应的锁协调服务;
状态检测单元,被配置成执行从所述锁协调服务获取分布式锁,并检测获取到的分布式锁的状态;
锁释放单元,被配置成执行如果接收到服务端发送的释放通知,则释放所述获取到的分布式锁;
状态检测单元,还被配置成执行如果所述分布式锁的状态为准备状态,则继续检测所述获取到的分布式锁的状态,直到所述分布式锁的状态变更为生效状态,以成功获取所述分布式锁;
进程返回单元,被配置成执行如果所述分布式锁的状态为失效状态,则等待预设的时间,并返回所述根据预设的访问路径,访问与所述访问路径对应的锁协调服务的步骤。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的分布式锁迁移方法。
10.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至5中任一项所述的分布式锁迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010734407.2A CN111858079B (zh) | 2020-07-27 | 2020-07-27 | 分布式锁迁移方法、装置及电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010734407.2A CN111858079B (zh) | 2020-07-27 | 2020-07-27 | 分布式锁迁移方法、装置及电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858079A true CN111858079A (zh) | 2020-10-30 |
CN111858079B CN111858079B (zh) | 2024-03-12 |
Family
ID=72947481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010734407.2A Active CN111858079B (zh) | 2020-07-27 | 2020-07-27 | 分布式锁迁移方法、装置及电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858079B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392088A (zh) * | 2021-06-07 | 2021-09-14 | 北京来看科技有限公司 | 一种数据同步方法、装置、终端及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488526A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 在分布式系统中锁定业务资源的系统和方法 |
US20140236913A1 (en) * | 2013-02-20 | 2014-08-21 | Nec Laboratories America, Inc. | Accelerating Distributed Transactions on Key-Value Stores Through Dynamic Lock Localization |
US20140365549A1 (en) * | 2013-06-10 | 2014-12-11 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
CN105208124A (zh) * | 2015-09-29 | 2015-12-30 | 华为技术有限公司 | 管理锁的方法及装置、确定锁管理服务器的方法及装置 |
CN106534227A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 用于扩展分布式一致性服务的方法和设备 |
US20180234493A1 (en) * | 2015-11-30 | 2018-08-16 | Huawei Technologies Co., Ltd. | Elastic scale-up method and system for virtual resource in cloud computing environment, and device |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
CN111258976A (zh) * | 2018-12-03 | 2020-06-09 | 北京京东尚科信息技术有限公司 | 分布式锁实现方法、系统、设备及存储介质 |
-
2020
- 2020-07-27 CN CN202010734407.2A patent/CN111858079B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140236913A1 (en) * | 2013-02-20 | 2014-08-21 | Nec Laboratories America, Inc. | Accelerating Distributed Transactions on Key-Value Stores Through Dynamic Lock Localization |
US20140365549A1 (en) * | 2013-06-10 | 2014-12-11 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
CN103488526A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 在分布式系统中锁定业务资源的系统和方法 |
CN106534227A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 用于扩展分布式一致性服务的方法和设备 |
CN105208124A (zh) * | 2015-09-29 | 2015-12-30 | 华为技术有限公司 | 管理锁的方法及装置、确定锁管理服务器的方法及装置 |
US20180234493A1 (en) * | 2015-11-30 | 2018-08-16 | Huawei Technologies Co., Ltd. | Elastic scale-up method and system for virtual resource in cloud computing environment, and device |
CN111258976A (zh) * | 2018-12-03 | 2020-06-09 | 北京京东尚科信息技术有限公司 | 分布式锁实现方法、系统、设备及存储介质 |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392088A (zh) * | 2021-06-07 | 2021-09-14 | 北京来看科技有限公司 | 一种数据同步方法、装置、终端及存储介质 |
CN113392088B (zh) * | 2021-06-07 | 2024-03-26 | 北京来看科技有限公司 | 一种数据同步方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111858079B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110865867B (zh) | 应用拓扑关系发现的方法、装置和系统 | |
US10700947B2 (en) | Life cycle management method and device for network service | |
US10644952B2 (en) | VNF failover method and apparatus | |
EP3281360B1 (en) | Virtualized network function monitoring | |
CN111597061B (zh) | 一种客户端或服务端进行远程过程调用方法及装置 | |
CN110661641B (zh) | 一种虚拟网络功能vnf部署方法及装置 | |
CN109936480B (zh) | 网络拓扑发现方法及装置、存储介质及电子设备 | |
CN107005452B (zh) | 一种网络功能虚拟化资源处理方法及虚拟网络功能管理器 | |
CN109819023B (zh) | 分布式事务处理方法及相关产品 | |
EP3211531B1 (en) | Virtual machine start method and apparatus | |
US10282120B2 (en) | Method, apparatus and system for inserting disk | |
US20180242177A1 (en) | Monitoring management method and apparatus | |
US10530634B1 (en) | Two-channel-based high-availability | |
CN112380072A (zh) | 多数据中心访问方法及系统 | |
CN111245634A (zh) | 一种虚拟化管理方法及装置 | |
CN108933844B (zh) | 提供dhcp服务的方法及设备 | |
CN111858079B (zh) | 分布式锁迁移方法、装置及电子设备、存储介质 | |
CN110635968A (zh) | 堆叠双活检测通道的监控方法、装置、设备及存储介质 | |
CN108228272B (zh) | Web容器生成处理方法、设备以及服务器 | |
CN113672336A (zh) | 一种k8s容器集群部署方法、装置、设备及可读存储介质 | |
CN110474821B (zh) | 节点故障检测方法及装置 | |
CN111198756A (zh) | 一种kubernetes集群的应用调度方法及装置 | |
CN114979286A (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN109614242B (zh) | 一种计算能力共享方法、装置、设备及介质 | |
CN110839068B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |