一种分布式锁服务的实现方法及组件的制作方法

文档序号:7804647阅读:275来源:国知局
一种分布式锁服务的实现方法及组件的制作方法
【专利摘要】本发明公开一种分布式锁服务的实现方法及其组件,方法包括:接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中;根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接;在为所述客户端程序体执行所述事务的分布式系统中,创建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统;通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。对于客户端的开发者来说,分布式锁服务完全透明,非常方便,分布式锁的管理更加统一,达到通过zookeeper统一控制事务的目的。最后,采用注解方式嵌入,相对于采用配置文件来说更为灵活。
【专利说明】一种分布式锁服务的实现方法及组件
【技术领域】
[0001]本发明涉及分布式系统相关【技术领域】,特别是一种分布式锁服务的实现方法及组件。
【背景技术】
[0002]常在项目中会需要对某个程序、组件或服务发送指令,来启动某个服务或做某件事情。而现在应用服务通常为分布式部署,即一个应用部署在多个服务器,或一个服务器部署多个实例当中。这样当需要对某个程序、组件或服务发送指令时,在同一时间被操作组件会接收到多条操作指令,这样被操作组件就会乱套,为了使被操作组件能够被统一执行,采用zookeeper的分布式锁功能中的paxos算法对应用服务选举一个leader,由leader负责发起各种任务指令。
[0003]zookeeper是Hadoop (—个分布式系统基础架构)的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能闻效、功能稳定的系统提供给用户。zookeeper使用paxos算法进行leader选举,选举出一个leader,由这个leader负责发起各种系统任务,控制分布式锁调度。以此来达到分布式事务锁的功能。
[0004]然而,现在的zookeeper分布式锁的方式较为麻烦,需要用户自己去管理实现,一方面用户自己开发比较困难,另一方面,同一个系统中,由于用户众多,不同用户遇到分布式事务冲突的问题,解决方式也是各不相同,并且解决程度有限,操作不灵活,导致系统维护困难。同时,对zookeeper的配置采用的是就配置文件配置,随着需要配置的增多,配置文件显得臃肿复杂,不够灵活。

【发明内容】

[0005]基于此,有必要针对现有技术对zook^per系统的分布式锁功能应用管理不方便的技术问题,提供一种分布式锁服务的实现方法及组件。
[0006]一种分布式锁服务的实现方法,包括:
[0007]接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中;
[0008]根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接;
[0009]在为所述客户端程序体执行所述事务的分布式系统中,根据所述唯一事务链接,创建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统;
[0010]通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
[0011]一种分布式锁服务的组件,包括: [0012]注册请求接收模块,用于接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中;
[0013]事务链接获取模块,用于根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接;
[0014]节点创建模块,用于在为所述客户端程序体执行所述事务的分布式系统中,根据所述唯一事务链接,仓Il建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统;
[0015]锁服务提供模块,用于通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
[0016]本发明客户端程序体仅需要通过注解方式嵌入分布式锁服务注册,其余的分布式锁服务由本发明的组件实现,因此,对于客户端的开发者来说,分布式锁服务完全透明,非常方便,同时,由于所有的分布式锁服务完全由组件进行管理,因此分布式锁的管理会更加统一,达到通过zookeeper统一控制事务的目的。最后,采用注解方式嵌入,相对于采用配置文件来说更为灵活。
【专利附图】

【附图说明】
[0017]图1为本发明一种分布式锁服务的实现方法的工作流程图;
[0018]图2为本发明步骤14的具体工作流程图;
[0019]图3为本发明一种分布式锁服务的组件的结构模块图。
【具体实施方式】
[0020]下面结合附图和具体实施例对本发明做进一步详细的说明。
[0021]如图1所示为本发明一种分布式锁服务的实现方法的工作流程图,包括:
[0022]步骤11,接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中;
[0023]步骤12,根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接;
[0024]步骤13,在为所述客户端程序体执行所述事务的分布式系统中,根据所述唯一事务链接,仓Il建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统;
[0025]步骤14,通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
[0026]其中,步骤11中的注解方式,指的是采用spring(Java的一个开源框架)的aop(面向行为编程)技术实现的注解方式。具体例子,如下所示:
[0027]OZkTrans (name =’ savevehicle,type =,mysql,timeout =,6000,)
[0028]public String saveVehiclelnfo (Vehiclelnfo vehiclelnfo) {};
[0029]其中,OZkTrans为zookeeper事务注解方式,“name”为该事务注解名称,“type”为该注解类型为mysql,“timeout”是超时时间。从上述例子可以看出,注解方式非常简单明了,能显式地在客户端程序体中表示,对用户来说,更为清晰更为灵活。
[0030]该程序中执行saveVehiclelnfo事务时,则会发送的分布式锁服务注册请求到本发明的组件,由组件执行上述步骤11?14向zookeeper系统申请分布式锁服务。[0031]其中,步骤12中,事务链接可以是在分布式系统中的一个唯一的地址。根据该地址可以生成一个对应的zookeeper系统节点。并由zookeeper系统进行维护。
[0032]本发明为客户端程序体提供了一个实现分布式锁的组件,用户仅需要将该组件,采用例如jar包的方式加载到程序中。并在需要分布式锁服务的地方通过注解方式加入分布式锁注册请求。后续的分布式锁服务,例如生成锁、取得锁、删除锁,均由组件进行维护,客户端程序体无需关心,从而减少用户的开发难度,并统一管理。
[0033]作为一个例子,组件中对注释的创建如下:
[0034]
【权利要求】
1.一种分布式锁服务的实现方法,其特征在于,包括: 步骤(11),接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中; 步骤(12),根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接; 步骤(13),在为所述客户端程序体执行所述事务的分布式系统中,根据所述唯一事务链接,仓Il建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统; 步骤(14),通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
2.根据权利要求1所述的分布式锁服务的实现方法,其特征在于,所述步骤(12),具体包括: 记录所述客户端程序体发送分布式锁服务注册请求的次数作为请求次数,如果所述请求次数大于预设请求阈值,则对所述分布式锁服务注册请求执行屏蔽处理,否则根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接。
3.根据权利要求2所述的分布式锁服务的实现方法,其特征在于,所述屏蔽处理,具体包括: 在预设时间段内拒 绝所述分布式锁服务注册请求,且经过所述预设时间段后对与所述客户端程序体关联的所述请求次数清零。
4.根据权利要求2所述的分布式锁服务的实现方法,其特征在于,所述屏蔽处理,具体包括: 延迟一段时间后,根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接。
5.根据权利要求1所述的分布式锁服务的实现方法,其特征在于,所述步骤(14),具体包括: 步骤(141),向所述客户端程序体发送程序阻塞开始命令,以所述客户端程序体对应的zookeeper系统节点为当前zookeeper系统节点; 步骤(142),判断由多个zookeeper系统节点组成的zookeeper系统节点列表中,命名名称最小的zookeeper系统节点是否为当前zookeeper系统节点,如果命名名称最小的zookeeper系统节点为当前zookeeper系统节点,则执行步骤(143),否则执行步骤(144); 步骤(143),向所述客户端程序体发送程序阻塞结束命令,当接收到所述客户端程序体在结束事务时发送的节点删除请求时,从所述zookeeper系统节点列表中删除所述当前zookeeper系统节点; 步骤(144),向所述zookeeper系统发送与所述客户端程序体关联的监视命令,所述监视命令对所述zookeeper系统节点列表进行监视,当任意一个zookeeper系统节点从所述zookeeper系统节点列表中删除时,执行步骤(142)。
6.—种分布式锁服务的组件,其特征在于,包括: 注册请求接收模块,用于接收到客户端程序体在触发事务时发送的分布式锁服务注册请求,所述分布式锁服务注册请求通过注解方式嵌入所述客户端程序体中; 事务链接获取模块,用于根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接; 节点创建模块,用于在为所述客户端程序体执行所述事务的分布式系统中,根据所述唯一事务链接,仓Il建与所述客户端程序体对应的zookeeper系统节点,其中zookeeper系统为所述分布式系统的可靠协调系统; 锁服务提供模块,用于通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
7.根据权利要求6所述的分布式锁服务的组件,其特征在于,所述事务链接获取模块,具体包括: 记录所述客户端程序体发送分布式锁服务注册请求的次数作为请求次数,如果所述请求次数大于预设请求阈值,则对所述分布式锁服务注册请求执行屏蔽处理,否则根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接。
8.根据权利要求7所述的分布式锁服务的组件,其特征在于,所述屏蔽处理,具体包括: 在预设时间段内拒绝所述分布式锁服务注册请求,且经过所述预设时间段后对与所述客户端程序体关联的所述请求次数清零。
9.根据权利要求7所述的分布式锁服务的组件,其特征在于,所述屏蔽处理,具体包括: 延迟一段时间后,根据所述分布式锁注册请求,获取与所述客户端程序体对应的唯一事务链接。
10.根据权利要求6所述的分布式锁服务的组件,其特征在于,所述锁服务提供模块,具体包括: 阻塞开始子模块,用于向所述客户端程序体发送程序阻塞开始命令,以所述客户端程序体对应的zookeeper系统节点为当前zookeeper系统节点; 最小节点判断子模块,用于判断由多个zookeeper系统节点组成的zookeeper系统节点列表中,命名名称最小的zookeeper系统节点是否为当前zookeeper系统节点,如果命名名称最小的zookeeper系统节点为当前zookeeper系统节点,则执行锁获取子模块,否则执行锁阻塞子模块; 锁获取子模块,用于向所述客户端程序体发送程序阻塞结束命令,当接收到所述客户端程序体在结束事务时发送的节点删除请求时,从所述zookeeper系统节点列表中删除所述当前zookeeper系统节点; 锁阻塞子模块,用于向所述zookeeper系统发送与所述客户端程序体关联的监视命令,所述监视命令对所述zookeeper系统节点列表进行监视,当任意一个zookeeper系统节点从所述zookeeper系统节点列表中删除时,执行最小节点判断子模块。
【文档编号】H04L29/06GK103997498SQ201410226764
【公开日】2014年8月20日 申请日期:2014年5月27日 优先权日:2014年5月27日
【发明者】吕波 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1