一种分布式锁的实现方法、装置及电子设备制造方法及图纸

技术编号:19593016 阅读:25 留言:0更新日期:2018-11-28 04:45
本发明专利技术实施例提供了一种分布式锁的实现方法、装置及电子设备。所述方法包括:线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,并生成所述线程对应的目标令牌,以所述目标令牌作为目标资源标识对应的参考令牌;基于线程对应的顺序临时节点的序列编号,判断线程是否获取到分布式锁;当判断出线程获取到分布式锁时,访问资源信息;当访问完毕资源信息后,删除所述线程对应的顺序临时节点,并判断所述线程对应的目标令牌和所述目标资源标识对应的参考令牌是否一致,如果一致,删除所述目标持久节点。本方案可以解决创建过多持久节点所导致的占用较大存储空间的问题。

【技术实现步骤摘要】
一种分布式锁的实现方法、装置及电子设备
本专利技术涉及计算机
,特别是涉及一种分布式锁的实现方法、装置及电子设备。
技术介绍
分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以保证数据的一致性。目前实现分布式锁主要有三种流行的方案,分别为基于数据库、缓存和Zookeeper实现分布式锁。Zookeeper(简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务系统,Zookeeper提供的这些功能都是分布式系统中非常底层且必不可少的基本功能,开发者可以在Zookeeper之上构建自己的各种分布式系统。然而,专利技术人在实现本专利技术的过程中发现,现有技术在基于Zookeeper实现分布式锁的过程中,如果线程请求分布式锁,一般需要在Zookeeper中创建持久节点。然而,由于持久节点的创建是以资源标识为基础的,针对每一资源标识都会创建一个持久节点,当较多线程请求关于其对应资源标识的资源信息的分布式锁,且多个线程对应的资源标识不相同时,需要创建的持久节点就会越多。但是在分布式锁被释放之后,由于之前创建的持久节点仍会在Zookeeper中存在,导致占用较大的存储空间,从而可能影响Zookeeper性能。
技术实现思路
本专利技术实施例的目的在于提供一种分布式锁的实现方法、装置及电子设备,以解决创建过多持久节点所导致的占用较大存储空间的问题。具体技术方案如下:第一方面,本专利技术实施例提供了一种分布式锁的实现方法,所述方法包括:线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,并生成所述线程对应的目标令牌,以所述目标令牌作为所述目标资源标识对应的参考令牌;其中,所述目标持久节点为以所述目标资源标识命名的持久节点;基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁;当判断出所述线程获取到所述分布式锁时,访问所述资源信息;当访问完毕所述资源信息后,删除所述线程对应的顺序临时节点,并判断所述线程对应的目标令牌和所述目标资源标识对应的参考令牌是否一致,如果一致,删除所述目标持久节点。可选的,所述在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点的步骤,包括:判断Zookeeper中是否存在以目标资源标识命名的目标持久节点;如果存在,在所述目标持久节点下创建所述线程对应的顺序临时节点;如果不存在,在所述Zookeeper中创建以目标资源标识命名的目标持久节点,并在所述目标持久节点下创建所述线程对应的顺序临时节点。可选的,所述基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁的步骤,包括:定时判断所述线程对应的顺序临时节点的序列编号是否为序列编号组中的最小值;其中,所述序列编号组由所述目标持久节点下的所有顺序临时节点的序列编号构成;如果是,判定所述线程获取到所述分布式锁。可选的,所述生成所述线程对应的目标令牌的步骤,包括:利用所述线程对应的顺序临时节点的序列编号,生成所述线程对应的目标令牌。可选的,所述方法还包括:在删除所述目标持久节点后,删除所述目标资源标识对应的参考令牌。第二方面,本专利技术实施例还提供了一种分布式锁的实现装置,所述装置包括:创建模块,用于线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,并生成所述线程对应的目标令牌,以所述目标令牌作为所述目标资源标识对应的参考令牌;其中,所述目标持久节点为以所述目标资源标识命名的持久节点;判断模块,用于基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁;访问模块,用于当判断出所述线程获取到所述分布式锁时,访问所述资源信息;删除模块,用于当访问完毕所述资源信息后,删除所述线程对应的顺序临时节点,并判断所述线程对应的目标令牌和所述目标资源标识对应的参考令牌是否一致,如果一致,删除所述目标持久节点。可选的,所述创建模块,具体用于:线程在请求具有目标资源标识的资源信息的分布式锁时,判断Zookeeper中是否存在以目标资源标识命名的目标持久节点;如果存在,在所述目标持久节点下创建所述线程对应的顺序临时节点;如果不存在,在所述Zookeeper中创建以目标资源标识命名的目标持久节点,并在所述目标持久节点下创建所述线程对应的顺序临时节点。可选的,所述判断模块,具体用于:定时判断所述线程对应的顺序临时节点的序列编号是否为序列编号组中的最小值;其中,所述序列编号组由所述目标持久节点下的所有顺序临时节点的序列编号构成;如果是,判定所述线程获取到所述分布式锁。可选的,所述创建模块,具体用于:线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,利用所述线程对应的顺序临时节点的序列编号,生成所述线程对应的目标令牌。可选的,所述装置还包括:令牌删除模块;所述令牌删除模块,用于在所述删除模块删除所述目标持久节点后,删除所述目标资源标识对应的参考令牌。第三方面,本专利技术实施例还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的一种分布式锁的实现方法。第四方面,本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的一种分布式锁的实现方法。第五方面,本专利技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的一种分布式锁的实现方法。本专利技术实施例提供的方案中,线程在请求具有目标资源标识的资源信息的分布式锁时,可以生成目标令牌,并以该目标令牌作为目标资源标识对应的参考令牌,这样目标资源标识对应的参考令牌始终与最晚请求分布式锁的线程的目标令牌一致。并且,在访问完毕资源信息后,如果线程判断出自身所对应的目标令牌和该目标资源标识对应的参考令牌一致,则该线程删除该目标持久节点,即在判断出自身为该目标持久节点下最晚请求分布式锁的线程时,删除持久节点。由于在分布式锁竞争结束后,持久节点可以被删除,因此,通过本方案可以解决创建过多持久节点所导致的占用较大存储空间的问题。当然,实施本专利技术的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本专利技术实施例提供的一种分布式锁的实现方法的流程图;图2为本专利技术实施例中一种使用Zookeeper实现分布式锁的系统结构示意图;图3为本专利技术实施例提供的一种分布式锁的实现装置的结构示意图;图4为本专利技术实施例提供的一种电子设备的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行描述。为了解决创建过多持久节点所导致的占用较大存储空间的问题,本专利技术实施例提供了一种分布式锁的实现方法、装置及电子设备。下面首先本文档来自技高网...

【技术保护点】
1.一种分布式锁的实现方法,其特征在于,包括:线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,并生成所述线程对应的目标令牌,以所述目标令牌作为所述目标资源标识对应的参考令牌;其中,所述目标持久节点为以所述目标资源标识命名的持久节点;基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁;当判断出所述线程获取到所述分布式锁时,访问所述资源信息;当访问完毕所述资源信息后,删除所述线程对应的顺序临时节点,并判断所述线程对应的目标令牌和所述目标资源标识对应的参考令牌是否一致,如果一致,删除所述目标持久节点。

【技术特征摘要】
1.一种分布式锁的实现方法,其特征在于,包括:线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点,并生成所述线程对应的目标令牌,以所述目标令牌作为所述目标资源标识对应的参考令牌;其中,所述目标持久节点为以所述目标资源标识命名的持久节点;基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁;当判断出所述线程获取到所述分布式锁时,访问所述资源信息;当访问完毕所述资源信息后,删除所述线程对应的顺序临时节点,并判断所述线程对应的目标令牌和所述目标资源标识对应的参考令牌是否一致,如果一致,删除所述目标持久节点。2.根据权利要求1所述的方法,其特征在于,所述在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点的步骤,包括:判断Zookeeper中是否存在以目标资源标识命名的目标持久节点;如果存在,在所述目标持久节点下创建所述线程对应的顺序临时节点;如果不存在,在所述Zookeeper中创建以目标资源标识命名的目标持久节点,并在所述目标持久节点下创建所述线程对应的顺序临时节点。3.根据权利要求1所述的方法,其特征在于,所述基于所述线程对应的顺序临时节点的序列编号,判断所述线程是否获取到所述分布式锁的步骤,包括:定时判断所述线程对应的顺序临时节点的序列编号是否为序列编号组中的最小值;其中,所述序列编号组由所述目标持久节点下的所有顺序临时节点的序列编号构成;如果是,判定所述线程获取到所述分布式锁。4.根据权利要求1所述的方法,其特征在于,所述生成所述线程对应的目标令牌的步骤,包括:利用所述线程对应的顺序临时节点的序列编号,生成所述线程对应的目标令牌。5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:在删除所述目标持久节点后,删除所述目标资源标识对应的参考令牌。6.一种分布式锁的实现装置,其特征在于,包括:创建模块,用于线程在请求具有目标资源标识的资源信息的分布式锁时,在Zookeeper中的目标持久节点下,创建所述线程对应的顺序临时节点...

【专利技术属性】
技术研发人员:赵鸿楠艾国信汤文强周志成宋超
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京,11

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

1