本发明涉及工程项目软件开发,特别涉及集群环境定时任务单一执行方法、系统、介质和设备。
背景技术:
1、在软件行业发展中,单机器部署不能满足项目的高可用及高并发的需求;而在集群环境部署下,多台机器部署了当前的项目,如果不做任何处理的话,定时任务必会执行多次,通常重复执行会影响现有数据。所以要解决的就是在某个时间点,只能让一个项目执行这个定时任务。
2、1、使用消息队列实现定时任务的调度,需依赖activemq、rabbitmq、rocketmq、kafka等消息组件;
3、2、使用分布式任务调度框架,如quartz、xxl-job、elastic job等框架提供了分布式任务调度的能力,通常基于分布式锁或者数据库及组件zookeeper实现,实现起来非常繁琐;
4、3、将定时任务独立出来,成为一个单独的项目工程,单一部署,独立部署会比较麻烦;
5、4、使用redis的过期机制和分布式锁机制实现代码较复杂。
6、上述方式严重影响了开发项目的效率,这对快速部署一个高可用集群项目造成了极大阻碍。
技术实现思路
1、本发明解决的技术问题是提供一种集群环境定时任务单一执行方法,解决了项目为集群环境部署下,定时任务不会重复消费,只会执行一次,不会因重复执行会影响现有数据的问题。
2、本发明解决其技术问题所采用的技术方案是:一种集群环境定时任务单一执行方法,步骤为:
3、s100:在数据库中创建定时任务表;
4、s200:当前节点获取定时任务并对定时任务表进行数据更新并对定时任务表加锁,若更新成功,进入步骤s300,若更新失败,进入步骤s400;
5、s300:执行主定时任务并结束当前操作;
6、s400:放弃当前定时任务执行,等待下一次定时任务执行。
7、进一步的是:所述步骤s100中,在数据库中创建定时任务表,定时任务表包括如下内容:定时任务标记task_sign、任务名称标记task_name、当前执行任务主机ip名称server_ip、是否正在执行状态status和执行定时任务的时间execute_time。
8、进一步的是:所述步骤s200中,对定时任务表进行数据更新,具体为:将当前时间戳、状态和当前执行任务的服务器ip更新至定时任务表中。
9、进一步的是:所述步骤s100中的数据库为mysql数据库或oracle数据库。
10、进一步的是:还包括步骤s500,当定时任务执行完成后,将定时任务表中的是否正在执行状态status修改为未执行;
11、当定时任务表中的是否正在执行状态status为执行中时,该定时任务表不能更新,当定时任务表中的是否正在执行状态status为未执行时,该定时任务表可以更新。
12、本发明还公开了一种集群环境定时任务单一执行系统,包括定时任务表创建模块、定时任务表更新判断模块和定时任务执行模块;
13、所述定时任务表创建模块用于在数据库中创建定时任务表;
14、所述定时任务表更新判断模块用于获取定时任务并对定时任务表进行数据更新,若更新成功则执行定时任务,若更新失败,则退出当前操作;
15、所述定时任务执行模块用于使得当前节点执行定时任务。
16、进一步的是:还包括执行状态修改模块,所述执行状态修改模块用于在定时任务执行完成后,将定时任务表中的是否正在执行状态status修改为未执行。
17、进一步的是:所述定时任务表更新判断模块中,对定时任务表进行数据更新,具体为:将当前时间戳、状态和当前执行任务的服务器ip更新至定时任务表中。
18、本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的集群环境定时任务单一执行方法的步骤。
19、本发明还公开了一种计算机设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;其中:
20、所述存储器,用于存放计算机程序;
21、所述处理器,用于通过运行所述存储器上所存放的程序来执行上述所述的集群环境定时任务单一执行方法的步骤。
22、本发明的有益效果是:本方法将数据库作为分布式调度中心,同一时刻只能有一个事务操作,可以保证只执行一次。更新操作只会成功一次,执行完后在指定时间内再次执行定时任务则直接失效,因此,本方法解决了项目为集群环境部署下,定时任务不会重复消费,只会执行一次,不会因重复执行会影响现有数据的问题。
1.一种集群环境定时任务单一执行方法,其特征在于,步骤为:
2.如权利要求1所述的一种集群环境定时任务单一执行方法,其特征在于,所述步骤s100中,在数据库中创建定时任务表,定时任务表包括如下内容:定时任务标记task_sign、任务名称标记task_name、当前执行任务主机ip名称server_ip、是否正在执行状态status和执行定时任务的时间execute_time。
3.如权利要求1所述的一种集群环境定时任务单一执行方法,其特征在于,所述步骤s200中,对定时任务表进行数据更新,具体为:将当前时间戳、状态和当前执行任务的服务器ip更新至定时任务表中。
4.如权利要求1所述的一种集群环境定时任务单一执行方法,其特征在于,所述步骤s100中的数据库为mysql数据库或oracle数据库。
5.如权利要求3所述的一种集群环境定时任务单一执行方法,其特征在于,还包括步骤s500,当定时任务执行完成后,将定时任务表中的是否正在执行状态status修改为未执行;
6.一种集群环境定时任务单一执行系统,其特征在于,包括定时任务表创建模块、定时任务表更新判断模块和定时任务执行模块;
7.如权利要求6所述的集群环境定时任务单一执行系统,其特征在于:还包括执行状态修改模块,所述执行状态修改模块用于在定时任务执行完成后,将定时任务表中的是否正在执行状态status修改为未执行。
8.如权利要求6所述的集群环境定时任务单一执行系统,其特征在于:所述定时任务表更新判断模块中,对定时任务表进行数据更新,具体为:将当前时间戳、状态和当前执行任务的服务器ip更新至定时任务表中。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的集群环境定时任务单一执行方法的步骤。
10.一种计算机设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;其中: