定时任务集群方法及其装置制造方法及图纸

技术编号:9955566 阅读:161 留言:0更新日期:2014-04-23 11:54
本发明专利技术提供一种定时任务集群方法及其装置,该方法包括:将集群内的节点分布式部署在至少三个的奇数个服务器节点上;将定时任务实例分布式部署在各个定时任务节点上;各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得写入权的定时任务实例将执行定时任务,未获得写写入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。本发明专利技术的技术方案可以解决定时处理技术的单点问题,实现定时集群的高可用。

【技术实现步骤摘要】
【专利摘要】本专利技术提供一种定时任务集群方法及其装置,该方法包括:将集群内的节点分布式部署在至少三个的奇数个服务器节点上;将定时任务实例分布式部署在各个定时任务节点上;各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得写入权的定时任务实例将执行定时任务,未获得写写入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。本专利技术的技术方案可以解决定时处理技术的单点问题,实现定时集群的高可用。【专利说明】定时任务集群方法及其装置
本专利技术属于计算机
,具体涉及一种定时任务集群方法及其装置。
技术介绍
在Iinux环境下,通常采用Crontab技术执行定时任务。但这种技术方案存在单点问题,即某一台Iinux服务器上,如果crontab进程工作异常或者Iinux服务器本身岩机损坏,会导致目标任务不能按预期定时执行;如果使用多个Iinux服务器部署crontab任务,又存在相同任务被重复执行的问题。Spring quartz是JAVA领域一项与crontab相类似的定时处理技术,存在和crontab相同的执行机制和缺陷。无法解决单点问题,达不到高可用。针对crontab等简单集群技术所遇到的单点问题,Quartz集群技术实现了定时任务的高可用,使用多个定时任务实例通过争锁机制决定某时间点由其中一个定时任务实例来执行定时任务。由于现有的quartz集群技术通常使用数据库作为锁介质,集群方案十分笨重,且由于定时集群的高可用依赖于数据库的高可用,实际加大了定时集群实现高可用的难度。
技术实现思路
专利技术提供一种定时任务集群方法及其装置,其可以解决解决现有技术中定时任务方案的单点问题,从而实现定时集群的高可用。为实现上述目的,本专利技术提供一种定时任务集群方法,该定时任务集群方法包括:将集群内的节点分布式部署在至少三个的奇数个服务器节点上;将定时任务实例分布式部署在各个定时任务节点上;各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得写入权的定时任务实例将执行定时任务,未获得写写入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。进一步地,还包括: 各定时任务实例按照相同的路径命名规则向集群内申请写入相同的路径信息。进一步地,所述路径命名规则包括:根据定时任务包名、类名、当前时间戳,生成节点路径。进一步地,还包括:各个定时任务执行定时计算时,采用分布式锁机制,按照相同的路径命名规则,向集群内申请创建一个临时节点,并获得所述临时节点下的所有创建节点的序号,根据所述临时节点的序号,判断是否获得锁成功以确定是否执行定时计算。进一步地,判断是否获得锁成功以确定是否执行定时计算具体包括:判断所述临时节点的序号是否为最小,若是,则获得锁,继续执行定时计算,计算完毕删除临时节点;若否,则获得锁失败,删除临时节点,取消本次定时计算。进一步地,各个定时任务节点启动时保持时间同步。进一步地,还包括:根据对定时任务的包名以及类名进行区分,以实现不同的定时任务共享集群。为实现上述目的,本专利技术提供一种实现定时任务集群的装置,该装置包括:节点设置单元,用于将集群内的节点分布式部署在3个以上的单数个服务器节点上;定时任务实例设置单元,用于将定时任务实例分布式部署在各个定时任务节点上;定时任务执行单元,用于各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得与入权的定时任务实例将执行定时任务,未获得与与入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。进一步地,还包括:各个定时任务执行定时计算时,采用分布式锁机制,按照相同的路径命名规则,向集群内申请创建一个临时节点,并获得所述临时节点下的所有创建节点的序号,根据所述临时节点的序号,判断是否获得锁成功以确定是否执行定时计算。进一步地,判断是否获得锁成功以确定是否执行定时计算具体包括:判断所述临时节点的序号是否为最小,若是,则获得锁,继续执行定时计算,计算完毕删除临时节点;若否,则获得锁失败,删除临时节点,取消本次定时计算。本专利技术提供的定时任务集群方法及其装置,通过定时任务多点部署,解决现有技术中定时任务方案的单点问题。本专利技术中多个定时任务实例同时运行,在预期时间点,只有一个定时任务实例执行任务;即使其中一个实例因为意外故障无法运行,仍有其他实例保证定时任务得到执行;采用zookeeper分布式锁机制,在同时具有多个定时任务实例的情况下,保证只有一个实例获得执行权限。它避免了采用数据库这样笨重的锁方案,使定时任务集群在部署及维护上更加简单便捷。【专利附图】【附图说明】图1为本专利技术实施例一提供的定时任务集群方法的流程示意图;图2为本专利技术实施例二提供的实现定时任务集群的装置的结构示意图;图3为实施例二中的实现定时任务集群的装置的应用示意图。【具体实施方式】为使本领域技术人员更好地理解本专利技术的技术方案,下面结合附图和【具体实施方式】对本专利技术作进一步详细描述。图1为本专利技术实施例一提供的定时任务集群方法的流程示意图,如图1所示,该定时任务集群方法包括:步骤S1、将集群内的节点分布式部署在至少三个的奇数个服务器节点上。具体地,Zookeeper节点分布式部署在单数个服务器节点上,部署得越多,可靠性就越高,部署奇数个,Zookeeper集群是以岩机个数过半才会让整个集群岩机的,奇数个集群更佳。步骤S2、将定时任务实例分布式部署在各个定时任务节点上。步骤S3、各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得与入权的定时任务实例将执行定时任务,未获得与与入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。具体地,各定时任务为永驻进程,到计划时间点,各个定时任务实例程序按照相同的路径命名规则向Zookeeper集群申请写入相同的路径信息,获得写入权的定时任务实例将执行定时任务;未获得写入权的定时实例则放弃执行定时任务,等到下一个计划时间点,各定时任务再重复上述操作。 优选地,实例按照相同的路径命名规则向集群内申请写入相同的路径信息。路径命名规则包括:根据定时任务包名、类名、当前时间戳,生成节点路径。例如:“cn.knet.timing.TcpTask”,按计划要在2010年8月5号20点30分执行定时计算,则生成路径应为“/cn/knet/timing/tcptask/201008052030”。各个定时任务执行定时计算时,采用分布式锁机制,按照相同的路径命名规则,向集群内申请创建一个临时节点,并获得临时节点下的所有创建节点的序号,根据临时节点的序号,判断是否获得锁成功以确定是否执行定时计算。进一步地,判断是否获得锁成功以确定是否执行定时计算具体包括:判断临时节点的序号是否为最小,若是,则获得锁,继续执行定时计算,计算完毕删除临时节点;若否,则获得锁失败,删除临时节点,取消本次定时计算。本实施例中,各个定时任务节点启动时保持时间同步。根据对定时任务的包名以及类名进行区分,以实现不同的定时任务共享集群。各定时任务执行定时计算时,先按照相同的路径命名规则,向zookeeper申请创建一个临时节点本文档来自技高网...

【技术保护点】
一种定时任务集群方法,其特征在于,包括:将集群内的节点分布式部署在至少三个的奇数个服务器节点上;将定时任务实例分布式部署在各个定时任务节点上;各个定时任务实例按照计划时间点从集群内获取定时任务执行权利,获得写入权的定时任务实例将执行定时任务,未获得写写入权的定时任务实例则放弃执行定时任务,直至下一个计划时间点,再循环执行获取定时任务执行权利。

【技术特征摘要】

【专利技术属性】
技术研发人员:高雷
申请(专利权)人:互联网域名系统北京市工程研究中心有限公司 北龙中网北京科技有限责任公司
类型:发明
国别省市:北京;11

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

1