一种分布式独占锁的实现方法和装置制造方法及图纸

技术编号:20328906 阅读:44 留言:0更新日期:2019-02-13 05:36
本发明专利技术公开了一种分布式独占锁的实现方法和装置。涉及虚拟化计算平台技术,解决了基于RBD的分布式锁锁资源残留的问题。该方法包括:维护租约进程;节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。本发明专利技术提供的技术方案适用于Sanlock分布式锁,实现了支持租约的分布式锁系统。

【技术实现步骤摘要】
一种分布式独占锁的实现方法和装置
本专利技术涉及虚拟化计算平台技术,尤指一种分布式独占锁的实现方法和装置。
技术介绍
随着计算机技术和网络技术的快速发展,大型集群在实际生产环境中得到广泛使用。通过将服务器集群虚拟化,组成云计算平台虚拟化系统,在虚拟化系统中,常常需要协调动作,不同系统或者是在同一个系统不同主机之间共享同一个或一组资源,往往需要互斥来防止彼此的干扰,保证一致性,因此需要分布式锁来保证上述情况下系统的正常运行。分布式锁一般来说需要支撑大规格环境下的使用,因此需要使用带租约的分布式锁来保证获取锁资源的节点的唯一性,同时还要保证同一个节点唯一的获取该资源。由于分布式锁的获取者是集群中的主机成员,因此分布式锁的实现方式分为两种:一种为网络型的,即DLM实现方式;一种是共享存储型的,即sanlock实现方式。但是sanlock并不支持ceph的可靠的自动的分布式存储块设备(RBD),因此需要实现一套基于RBD的分布式锁系统。现有的基于RBD的分布式锁系统中,当节点离线或者是网络断开时后容易造成锁资源的残留。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种分布式独占锁的实现方法和装置。通过租约进程对锁资源进行管理,解决了基于RBD的分布式锁锁资源残留的问题。为了达到本专利技术目的,本专利技术提供了一种分布式独占锁的实现方法,包括:维护租约进程;节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。优选的,该方法还包括:定时向所述分布式锁的存储池下发所述节点的时间戳,表明所述节点在线。优选的,该方法还包括:在预置的检测间隔没有接收到所述节点更新的时间戳时,判定所述节点已经离线。优选的,该方法还包括:在检测到节点离线后,释放所述节点占用的锁资源。优选的,节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作的步骤之前,还包括:进行锁信息查询,根据所述节点请求的锁资源的标识,查询占用所述锁资源的主机;在所述锁资源未被任何主机占用或占用所述锁资源的主机已离线时,将所述锁资源分配给所述节点。优选的,所述锁资源的标识包含所述租约进程的进程ID信息和节点ID信息。优选的,该方法还包括:当所述租约进程终结时,释放所述租约进程涉及的全部锁资源。本专利技术还提供了一种分布式独占锁的实现装置,包括:进程管理模块,用于维护租约进程;I/O操作模块,用于在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。优选的,该装置还包括:检测模块,用于接收定时向所述分布式锁的存储池下发所述节点的时间戳,并在预置的检测间隔没有接收到所述节点更新的时间戳时,判定所述节点已经离线。优选的,该装置还包括:锁资源存储池,用于在检测到节点离线后,释放所述节点占用的锁资源,当所述租约进程终结时,释放所述租约进程涉及的全部锁资源。本专利技术提供了一种分布式独占锁的实现方法和装置,维护租约进程,节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。实现了支持租约的分布式锁系统,解决了基于RBD的分布式锁锁资源残留的问题。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本专利技术的技术方案,并不构成对本专利技术技术方案的限制。图1为本专利技术的一实施例提供的一种分布式独占锁的实现方法的流程示意图;图2为本专利技术的一实施例提供的一种分布式独占锁的实现方法的流程示意图;图3为本专利技术的一实施例提供的一种分布式独占锁的实现装置的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。现有的基于RBD的分布式锁系统中,当节点离线或者是网络断开时后容易造成锁资源的残留。为了解决上述问题,本专利技术的实施例提供了一种分布式独占锁的实现方法,使用该方法实现分布式锁的流程如图1所示,包括:步骤101、维护租约进程。本专利技术实施例中,增加租约进程,同时修改RBD的lock获取流程,从而实现了一套RBD至此带租约的分布式独占锁。步骤102、进行锁信息查询,根据所述节点请求的锁资源的标识,查询占用所述锁资源的主机。本专利技术实施例中,给RBD的所有的节点的客户端(Client)分配唯一的锁资源标识,每一个标识对应自己的I/O块锁资源,租约进程定时的对锁资源进行I/O自己的时间戳,从而证明该节点存活。本专利技术实施例中,所述锁资源的标识包含所述租约进程的进程ID信息和节点ID信息。步骤103、在所述锁资源未被任何主机占用或占用所述锁资源的主机已离线时,将所述锁资源分配给所述节点。本专利技术实施例中,租约进程对自己的锁资源进行I/O,当I/O在一定的时间中无法下发I/O时候,则认为存储不可达,需要终止所有的获取RBD存储池的进程,同时停止更新自己的时间戳。步骤104、节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。本步骤中,租约进程需要进行资源管理操作,即每一个租约进程获取锁资源时候必须在该租约进程进行注册标注进程的ID,进程获取的锁资源信息,在执行获取锁资源时候写入的锁资源的ID是该租约进程约定好的ID信息。租约进程进行锁资源的管理操作,租约进程会检测获取锁资源的进程状态,当进程意外终止时主动去释放该进程获取的锁资源。步骤105、当所述租约进程终结时,释放所述租约进程涉及的全部锁资源。本专利技术的一实施例还提供了一种分布式独占锁的实现方法,在进行锁资源管理时,通过检测节点的在线状态对锁资源进行管理,具体流程如图2所示,包括:步骤201、定时向所述分布式锁的存储池下发所述节点的时间戳,表明所述节点在线。步骤202、在预置的检测间隔没有接收到所述节点更新的时间戳时,判定所述节点已经离线。步骤203、在检测到节点离线后,释放所述节点占用的锁资源。本专利技术实施例中,修改RBD的锁资源获取流程,当获取RBD的锁资源时,需要从租约进程中获取该锁资源的标识,之后进行锁资源的检测机制,当没有进程获取该锁资源,直接以当前的锁资源的ID进程获取锁资源,当有节点获取该资源的锁时候读取所资源的ID信息,通过锁资源的ID信息分辨出节点的ID信息,然后读取占有锁资源节点的时间戳信息,从而判断节点是否存活,如果获取锁资源的节点存活则获取锁失败,进行失败回滚,如果节点已经离线,则释放原来节点所拥有的锁资源,之后获取自己的锁资源。需要说明的是,图2所示的节点存活检测流程与图1所示的分布式锁资源管理流程之间并不严格时序关系。根据节点在线或离线的检测结果,可随时对节点占用的锁资源进行调整。本专利技术的一实施例还提供了一种分布式独占锁的实现方法,实现RBD的租约本文档来自技高网...

【技术保护点】
1.一种分布式独占锁的实现方法,其特征在于,包括:维护租约进程;节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。

【技术特征摘要】
1.一种分布式独占锁的实现方法,其特征在于,包括:维护租约进程;节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作。2.根据权利要求1所述的分布式独占锁的实现方法,其特征在于,该方法还包括:定时向所述分布式锁的存储池下发所述节点的时间戳,表明所述节点在线。3.根据权利要求2所述的分布式独占锁的实现方法,其特征在于,该方法还包括:在预置的检测间隔没有接收到所述节点更新的时间戳时,判定所述节点已经离线。4.根据权利要求3所述的分布式独占锁的实现方法,其特征在于,该方法还包括:在检测到节点离线后,释放所述节点占用的锁资源。5.根据权利要求1所述的分布式独占锁的实现方法,其特征在于,节点在获取锁资源时,注册至所述租约进程,通过所述租约进程完成对分布式锁的I/O操作的步骤之前,还包括:进行锁信息查询,根据所述节点请求的锁资源的标识,查询占用所述锁资源的主机;在所述锁资源未被任何主机占用或占用所述锁资源的主机已离线时,将所述锁资...

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

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

1