一种分布式锁管理方法和装置制造方法及图纸

技术编号:20329039 阅读:30 留言:0更新日期:2019-02-13 05:41
本发明专利技术公开了一种分布式锁管理方法和装置。涉及集群计算技术,解决了分布式锁读取数据量大、效率低下的问题。该方法包括:刷新各节点的存活情况;根据刷新结果,读取存活节点对应的分布式锁中的资源块;通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。本发明专利技术提供的技术方案适用于集群资源管理,实现了动态读取较小数据量信息的分布式锁。

【技术实现步骤摘要】
一种分布式锁管理方法和装置
本专利技术涉及集群计算技术,尤指一种分布式锁管理方法和装置。
技术介绍
随着计算机技术和网络技术的快速发展,大型集群在实际生产环境中使用,通过虚拟化,组成云计算,在虚拟化系统中,常常需要协调动作,不通系统或者是在同一个系统不同主机之间共享同一个或一组资源,往往需要互斥来防止彼此的干扰,保证一致性,因此需要分布式锁来保证上述情况。分布式锁实现方案大致分两种,一种是依赖于网络,通过网络通信来保证获取资源的一致性,但是对于网络的稳定性依赖,比如DLM;第二种实现方案是依赖共享存储,通过对共享存储的读写保证多方的协商,实现方案如sanlock。Sanlock的实现方案是依赖于diskpaxos算法,但是diskpaxos算法依赖于存储空间,sanlock设定了固定的2048个块大小来实现diskpaxos算法,即一个资源对应的空间是1M,sanlock通过deltalease来维护节点存活状态,通过diskpaxos算法来实现资源锁。Sanlock的diskpaxos算法是通过读取资源空间所有的数据来判断对方是否在获取资源,同时判断资源是否被获取,diskpaxos算法过程中至少要进行六次I/O来完成算法,其中每一次读取读取时候都是全部读取,即读取当前资源的所有的内容,即1M空间内容,当磁盘性能比较差时候一个diskpaxos算法需要读取三次磁盘,每一次读取1M空间的内容,严重影响sanlock算法时效性,同时,一般使用分布式锁的时候规模并没有达到2000节点个数,基本上都是个位数或者是十位数的节点个数使用,因此在小规模使用sanlock时候,需要优化sanlock的paxos算法,减小diskpaxos算法的I/O大小,提高sanlockdiskpaxos算法的效率。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种分布式锁管理方法和装置。为了达到本专利技术目的,本专利技术提供了一种分布式锁管理方法,包括:刷新各节点的存活情况;根据刷新结果,读取存活节点对应的分布式锁中的资源块;通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。优选的,每次读取的数据量为:存活的节点的数量*512KB。优选的,所述刷新各节点的存活情况的步骤具体为:读取内存当前锁空间中存活的节点的信息。优选的,根据刷新结果,读取存活节点对应的分布式锁中的资源块的步骤包括:根据存活的节点的信息,计算资源对应的节点的资源块;读取所述资源块中的信息。优选的,该方法还包括:按照节点编号从小到大的顺序使用分布式锁中对应的资源块。本专利技术还提供了一种分布式锁管理装置,包括:节点信息刷新模块,用于刷新各节点的存活情况;数据读取模块,用于根据刷新结果,读取存活节点对应的分布式锁中的资源块;资源使用情况判定模块,用于通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。优选的,所述节点信息刷新模块,具体用于读取内存当前锁空间中存活的节点的信息。优选的,所述数据读取模块包括:资源计算单元,用于根据存活的节点的信息,计算资源对应的节点的资源块;读取单元,用于读取所述资源块中的信息。本专利技术提供了一种分布式锁管理方法和装置,刷新各节点的存活情况,根据刷新结果,读取存活节点对应的分布式锁中的资源块,通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。解决了分布式锁读取数据量大、效率低下的问题,实现了动态读取较小数据量信息的分布式锁。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本专利技术的技术方案,并不构成对本专利技术技术方案的限制。图1为本专利技术的一实施例提供的一种分布式锁管理方法的流程示意图;图2为本专利技术的一实施例提供的一种分布式锁管理装置的结构示意图;图3为图2中数据读取模块202的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。基于上述问题本专利技术的实施例提供了一种分布式锁管理方法和装置。通过动态的读取sanlock存活的节点的block信息,减小sanlockI/O的数量,提高diskpaxos算法速率。本专利技术的一实施例提供了一种分布式锁管理,使用该方法实现分布式锁的流程如图1所示,包括:步骤101、刷新各节点的存活情况。本专利技术实施例中,以Sanlock分布式锁为例进行说明。本步骤中,读取内存当前锁空间中存活的节点的信息。Sanlock的deltalease保存在当前锁空间中存活的节点的信息,sanlock执行diskpaxos算法时候从内存中读取该信息并不影响sanlockdiskpaxos算法执行的时间。deltalease读取deltalease算法对应的空间,能够知道节点存活状态,diskpaxos算法通过内存中读取deltalease算法中的信息,即可获取。步骤102、根据刷新结果,读取存活节点对应的分布式锁中的资源块。本步骤中,根据存活的节点的信息,计算资源对应的节点的资源块,读取所述资源块中的信息。执行diskpaxos算法的时候,资源竞争者是deltalease算法中存活的节点,所以仅仅需要读取deltalease存活节点对应空间即可。每次读取的数据量为:存活的节点的数量*512KB。优选的,执行diskpaxos算法时候读取的资源仅仅是存活节点个数(N+2)*512空间即可,整个获取diskpaxos算法流程中读取的空间大小为3*(N+2)*512,远远小于1M*3空间,大大的提高了diskpaxos算法执行效率。步骤103、通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。sanlockdiskpaxos算法是通过读取资源对应各个节点的信息来判断锁资源是否有人竞争。执行diskpaxos算法时候,节点对应的空间是线性的,即可以仅仅读取存活节点的块即可快速的判断是否有节点同时抢占该资源。优选的,按照节点编号从小到大的顺序使用分布式锁中对应的资源块。即,配置使用sanlock时最好是从最小编号的节点开始。diskpaxos算法对应的所有的节点的信息,即锁资源的分布为资源信息头+2000*每一个节点对应的块,从而实现diskpaxos算法。锁资源信息为资源信息头+2000*节点对应的块,其特征在于执行获取时候通过写入自己节点对应的块,读取其他节点对应的块,从而判断是否有人竞争同一个资源锁。通过写入自己的块,读取其他节点对应的块,获取锁资源时候仅仅只有deltalease正常刷新的节点才能获取锁资源,因此仅仅读取资源对应的存活节点信息即可。本专利技术实施例中,通过查看sanlock的deltalease存活本文档来自技高网
...

【技术保护点】
1.一种分布式锁管理方法,其特征在于,包括:刷新各节点的存活情况;根据刷新结果,读取存活节点对应的分布式锁中的资源块;通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。

【技术特征摘要】
1.一种分布式锁管理方法,其特征在于,包括:刷新各节点的存活情况;根据刷新结果,读取存活节点对应的分布式锁中的资源块;通过读取所述存储节点的资源块判断是否有节点抢占所述资源块对应的资源。2.根据权利要求1所述的分布式锁管理方法,其特征在于,每次读取的数据量为:存活的节点的数量*512KB。3.根据权利要求1所述的分布式锁管理方法,其特征在于,所述刷新各节点的存活情况的步骤具体为:读取内存当前锁空间中存活的节点的信息。4.根据权利要求1所述的分布式锁管理方法,其特征在于,根据刷新结果,读取存活节点对应的分布式锁中的资源块的步骤包括:根据存活的节点的信息,计算资源对应的节点的资源块;读取所述资源块中的信息。5.根据权利要求1所述的分布式锁管...

【专利技术属性】
技术研发人员:马怀旭
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1