基于JAVA TIMER高可用性的定时器逻辑实现方法技术

技术编号:17109480 阅读:44 留言:0更新日期:2018-01-24 22:23
本发明专利技术的目的是提供一种基于JAVA TIMER高可用性的定时器逻辑实现方法,通过争抢机制,在同一时间就保证了只有一个调度模块抢到任务的运行权,从而使业务逻辑的运行符合用户的期望;同时,部署多个业务执行模块,如果一个业务执行模块发生故障而无法执行时,可以通过修改URL地址将执行的逻辑转移到另一台部署业务执行模块的服务器上,大大提高了故障的恢复速度。

A timer logic implementation method based on high availability of JAVA TIMER

The purpose of the invention is to provide a JAVA TIMER high based on timer logic realization method, through the mechanism of competition, at the same time to ensure the operation right of only one task scheduling module to grab, so that the business logic operation in accordance with the user's expectations; at the same time, the deployment of multiple service execution module, if a service execution module failure cannot be executed, you can modify the URL address will perform the logic of transfer to another deployment service execution module on the server, greatly improving the speed of fault recovery.

【技术实现步骤摘要】
基于JAVATIMER高可用性的定时器逻辑实现方法
本专利技术涉及一种基于JAVATIMER高可用性的定时器逻辑实现方法。
技术介绍
现有的软件产品大多用于客户生产环境,为客户商业用途提供服务。这就要求软件产品以及架构有很高的可用性,在故障时能够及时恢复,同时减少人工的干预。有一种应用场景,需要定时执行特定的任务逻辑,在软件开发中一般是通过定时器来实现的。在JAVA中定时器大多的实现方式是通过TIMER以及第三方的SpringQuartz,在定时执行任务代码上,这两者都没有什么问题,甚至可以说任务的执行时间非常准确。可当部署到生产环境时,如何提高定时器的可用性以及故障恢复能力就成了一个问题。现有的软件定时器,无论通过何种技术实现,一般是将任务调度逻辑与业务逻辑合并写在一起,这样就造成一个问题:一旦部署定时器的服务器出现故障,那么整个定时器都会停止工作,可用性不高。而如果将定时器部署多个服务,那么相同的定时器之间如何协调调度,又成为一个难题,因为同一时间只需要有一个定时器执行业务逻辑即可,多个定时器执行了相同的业务逻辑有可能会造成原来的逻辑混乱。
技术实现思路
本专利技术提供一种基于JAVATIMER高可用性的定时器逻辑实现方法,旨在提高定时器的可用性,将定时器调度与业务逻辑分离,并实现多个定时器对于同一任务的调度实现。为实现上述目的,本专利技术采用以下技术方案:一种基于JAVATIMER高可用性的定时器逻辑实现方法,其特征在于:包括以下步骤:S1:定时器采用JAVATIMER的方式实现,根据设定的参数,以一定的时间间隔执行任务调度;S2:业务执行模块负责具体的业务逻辑,只有当任务调度模块符合条件的时候才会触发业务模块的执行,执行的主要方式是:当任务调度模块根据自己的实现逻辑判定任务可执行时,发送HTTP请求到业务执行模块的JSP页面上,以JSP页面为入口进入业务逻辑的执行。S3:根据相同定时器间的争抢原理,部署定时器的任务调度执行模块到N台应用服务器上,N台应用服务器上的定时任务调度模块通过争抢机制争抢相应任务的运行权限,当有任务调度模块争抢到运行权限后,根据配置的业务执行模块URL地址进行HTTP访问,来执行业务逻辑;N为大于等于2的自然数。与现有技术相比,本专利技术具有以下优点:通过争抢机制,在同一时间就保证了只有一个调度模块抢到任务的运行权,从而使业务逻辑的运行符合用户的期望;同时,部署多个业务执行模块,如果一个业务执行模块发生故障而无法执行时,可以通过修改URL地址将执行的逻辑转移到另一台部署业务执行模块的服务器上,大大提高了故障的恢复速度。附图说明图1为本专利技术一实施例的框架示意图。具体实施方式下面结合附图和具体实施例对本专利技术做进一步解释说明。本专利技术的目的是提供一种基于JAVATIMER高可用性的定时器逻辑实现方法。其包括以下步骤:S1:定时器采用JAVATIMER的方式实现,根据设定的参数,以一定的时间间隔执行任务调度;S2:业务执行模块负责具体的业务逻辑,只有当任务调度模块符合条件的时候才会触发业务模块的执行,执行的主要方式是:当任务调度模块根据自己的实现逻辑判定任务可执行时,发送HTTP请求到业务执行模块的JSP页面上,以JSP页面为入口进入业务逻辑的执行。S3:根据相同定时器间的争抢原理,部署定时器的任务调度执行模块到N台应用服务器上,N台应用服务器上的定时任务调度模块通过争抢机制争抢相应任务的运行权限,当有任务调度模块争抢到运行权限后,根据配置的业务执行模块URL地址进行HTTP访问,来执行业务逻辑;N为大于等于2的自然数。在本专利技术一实施例中,S1在设定的时间间隔内TIMER执行的任务调度包括以下步骤:S11:根据传入TIMER的线程号码THREAD_MODE,查询任务信息表对应的THREAD_MODE的记录;S12:遍历查询到的记录,比较任务下次运行时间NEXT_TIME和当前时间,如果当前时间小于NEXT_TIME则退出进入下一个TIMER任务调度周期,如果大于NEXT_TIME,则修改任务实时状态表的实时运行状态RUN_STATUS为“运行”;S13:当前时间大于NEXT_TIME时,发送HTTP请求到业务逻辑执行的URL地址字段中配置的URL,执行业务逻辑;S14:根据任务运行周期字段以及NEXT_TIME字段自动计算下一次运行时间并更新到NEXT_TIME,原来NEXT_TIME字段中的时间更新到上次任务运行时间LAST_TIME字段中;S15:更新任务实时状态表的实时运行状态RUN_STATUS为“停止”;S16:记录本次运行结果到任务运行日志表。每个TIMER根据S11-S16反复执行自己的任务,如果部署多个定时器服务,则在多个定时器线程间,根据争抢原理,先将实时状态表的RUN_STATUS字段更新为“运行”的定时器获得任务的运行权,其他没有获得运行权的定时任务线程则回到运行周期的头一步开始反复运行。为了提高可用性,同时减少人工的介入程度,本专利技术的总体思路就是完善定时器的调度逻辑,并将调度与业务逻辑分离。同时实现多个定时器对于同一个业务逻辑的高可用性实现。总体的模块可以分为:任务调度模块、业务逻辑模块,下面将分别介绍。(一)任务调度模块本模块主要实现任务的调度功能,涉及的主要表有:1、UCSS_POS_HTTP_CONFIG:任务信息表配置了业务模块的URL,任务的调度信息以及任务状态等,主要字段及功能为:lEXECUATE_URL业务逻辑执行的URL地址lLAST_TIME任务上次运行时间lNEXT_TIME任务下次运行时间lRUN_CYCLE任务运行周期,与LAST_TIME相加可以得出NEXT_TIME的时间lRUN_STATUS任务有效状态lTHREAD_MODE线程号码,每个任务只取自己线程号码下的任务运行2、UCSS_POS_HTTP_STATE:任务实时状态表从表中可以实时查看某个任务的实时状态,主要字段及功能如下:lRUN_STATUS任务实时运行状态lRUN_TIME任务运行花费时间3、UCSS_POS_HTTP_RUN_LOG:任务运行日志表用于记录每次任务的运行结果及花费时间,主要字段及功能如下lRUN_TIME任务运行时间,本次任务执行所耗费的时间lRUN_RETURN任务运行结果,调用业务模块URL,即访问EXECUATE_URL字段中配置的URL后返回的状态码根据以上主要的表以及功能字段,定时器采用JAVATIMER的方式实现,TIMER可以根据设定的参数,以一定的时间间隔运行业务逻辑。每一个TIMER可以只运行一个任务,也可以运行多个任务。在本专利技术具体实施例中,TIMER的运行时间间隔为1分钟,在这1分钟内TIMER执行的任务调度周期逻辑为:1、根据传入TIMER的THREAD_MODE参数,查询UCSS_POS_HTTP_CONFIG表对应THREAD_MODE的记录。2、遍历查询到的记录,比较NEXT_TIME和当前时间,如果当前时间小于NEXT_TIME则退出进入下一个TIMER任务调度周期,如果大于NEXT_TIME,则修改UCSS_POS_HTTP_STATE表的实时运行状态RUN_STATUS为“运行”3、当前时间大于NEXT_TIM本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201710813834.html" title="基于JAVA TIMER高可用性的定时器逻辑实现方法原文来自X技术">基于JAVA TIMER高可用性的定时器逻辑实现方法</a>

【技术保护点】
一种基于JAVA TIMER高可用性的定时器逻辑实现方法,其特征在于:包括以下步骤:S1:定时器TIMER采用JAVA TIMER的方式实现,包括任务调度模块及业务执行模块;TIMER根据设定的参数,以一定的时间间隔执行任务调度;S2:业务执行模块负责具体的业务逻辑,只有当任务调度模块符合条件的时候才会触发业务模块的执行,执行的主要方式是:当任务调度模块根据自己的实现逻辑判定任务可执行时,发送HTTP请求到业务执行模块的JSP页面上,以JSP页面为入口进入业务逻辑的执行;S3:根据相同定时器间的争抢原理,部署定时器的任务调度执行模块到N台应用服务器上,N台应用服务器上的定时任务调度模块通过争抢机制争抢相应任务的运行权限,当有任务调度模块争抢到运行权限后,根据配置的业务执行模块URL地址进行HTTP访问,来执行业务逻辑;N为大于等于2的自然数。

【技术特征摘要】
1.一种基于JAVATIMER高可用性的定时器逻辑实现方法,其特征在于:包括以下步骤:S1:定时器TIMER采用JAVATIMER的方式实现,包括任务调度模块及业务执行模块;TIMER根据设定的参数,以一定的时间间隔执行任务调度;S2:业务执行模块负责具体的业务逻辑,只有当任务调度模块符合条件的时候才会触发业务模块的执行,执行的主要方式是:当任务调度模块根据自己的实现逻辑判定任务可执行时,发送HTTP请求到业务执行模块的JSP页面上,以JSP页面为入口进入业务逻辑的执行;S3:根据相同定时器间的争抢原理,部署定时器的任务调度执行模块到N台应用服务器上,N台应用服务器上的定时任务调度模块通过争抢机制争抢相应任务的运行权限,当有任务调度模块争抢到运行权限后,根据配置的业务执行模块URL地址进行HTTP访问,来执行业务逻辑;N为大于等于2的自然数。2.根据权利要求1所述的基于JAVATIMER高可用性的定时器逻辑实现方法,其特征在于:S1在设定的时间间隔内TIMER执行的任务调度包括以下步骤:S11:根据传入TIMER的线程号码THREAD_MODE,查询任务信息表对应的THREAD_MODE的记录;S12:遍历查询到的记录,比较任务下次运行时间NE...

【专利技术属性】
技术研发人员:林宇范叔亮赖庆鑫
申请(专利权)人:中邮科通信技术股份有限公司
类型:发明
国别省市:福建,35

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

1