CN110413388A - 基于业务系统的多任务处理方法、装置、设备及存储介质 - Google Patents

基于业务系统的多任务处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110413388A
CN110413388A CN201910606390.XA CN201910606390A CN110413388A CN 110413388 A CN110413388 A CN 110413388A CN 201910606390 A CN201910606390 A CN 201910606390A CN 110413388 A CN110413388 A CN 110413388A
Authority
CN
China
Prior art keywords
task
goal
pending
operation system
eventloop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910606390.XA
Other languages
English (en)
Inventor
孙瑞飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
OneConnect Financial Technology Co Ltd Shanghai
Original Assignee
OneConnect Financial Technology Co Ltd Shanghai
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by OneConnect Financial Technology Co Ltd Shanghai filed Critical OneConnect Financial Technology Co Ltd Shanghai
Priority to CN201910606390.XA priority Critical patent/CN110413388A/zh
Publication of CN110413388A publication Critical patent/CN110413388A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及基架运维领域,公开了基于业务系统的多任务处理方法、装置、设备及存储介质,用于动态地配置业务系统的多个任务,同时执行配置的多个任务,并对每个任务的执行状态进行监听,提高了业务系统中多任务的处理效率。本发明方法包括:获取目标任务列表,目标任务列表包括业务系统的多个待执行任务;通过SETNX命令对目标任务列表中的每个待执行任务添加redis分布式锁;判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,每个待执行任务包含有redis分布式锁;将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中;将目标任务的状态从初始修改为执行中;启动EventLoop线程,执行EventLoop线程中的所有目标任务。

Description

基于业务系统的多任务处理方法、装置、设备及存储介质
技术领域
本发明涉及业务过程优化领域,尤其涉及基于业务系统的多任务处理方法、装置、设备及存储介质。
背景技术
随着互联网的快速发展,计算机设备处理的数据越来越多,因此需要处理的任务也越来越多。很多情况下计算机设备需要同时对多个任务进行处理来提高计算机设备的处理效率,并且保证多个任务之间不冲突。
目前采用的任务处理方案大多数都是使用schedule进行配置定时任务,不利于业务动态增加,每次都需要在配置文件中配置后,重新打包发版才能生效,开发和维护性成本太高,而且任务采用单线程执行,执行效率低下。
发明内容
本发明提供了基于业务系统的多任务处理方法、装置、设备及存储介质,用于动态地配置业务系统的多个任务,同时执行配置的多个任务,提高了业务系统中多任务的处理效率。
本发明实施例的第一方面提供一种基于业务系统的多任务处理方法,包括:获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;将所述目标任务的状态从初始修改为执行中;启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
可选的,在本发明实施例第一方面的第一种实现方式中,在所述获取任务列表,所述任务列表包括业务系统的多个任务之前,所述方法还包括:根据预置的任务模板创建目标任务列表;在所述目标任务列表中增加多个待执行任务;设置所述多个待执行任务中每个待执行任务的参数,所述参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。
可选的,在本发明实施例第一方面的第二种实现方式中,所述设置所述多个待执行任务中每个待执行任务的参数包括:设置所述多个待执行任务中每个待执行任务的任务名称和接口名称;设置每个待执行任务的接口类型,所述接口类型包括http类型和dubbo类型;设置每个待执行任务的方法名称;设置每个待执行任务的执行时刻和执行间隔,所述执行时刻和所述执行间隔用于控制待执行任务的触发时间节点;设置每个待执行任务的最大报警次数。
可选的,在本发明实施例第一方面的第三种实现方式中,所述通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁包括:设置每个待执行任务的锁名称、锁的键key、锁的值value;为每个待执行任务关联redis分布式锁的SETNX命令;判断每个待执行任务关联的SETNX命令中是否存在key;若key不存在,则确定redis分布式锁添加成功,调整所述value为1,并设置所述redis分布式锁的有效时长expireTime;若key存在,则确定redis分布式锁添加失败,调整所述value为0。
可选的,在本发明实施例第一方面的第四种实现方式中,所述启动所述EventLoop线程,同步执行所述EventLoop线程中的所有目标任务包括:启动所述EventLoop线程;判断每个目标任务的redis分布式锁是否有效;若目标任务的redis分布式锁有效,则通过所述EventLoop线程执行所有具有有效的redis分布式锁的目标任务。
可选的,在本发明实施例第一方面的第五种实现方式中,所述启动所述EventLoop线程,同步执行所述EventLoop线程中的所有目标任务之后,所述方法还包括:对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。
可选的,在本发明实施例第一方面的第六种实现方式中,所述对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态包括:监控所述EventLoop线程中的每个目标任务的状态;判断每个目标任务是否执行成功;若目标任务执行成功,则将目标任务的状态更改为执行成功;若目标任务执行失败,则将所述目标任务的状态更改为执行失败,并发送警示邮件,以使得所述目标任务可以被重新调用。
本发明实施例的第二方面提供了一种基于业务系统的多任务处理装置,包括:获取单元,用于获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;添加单元,用于通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;判断单元,用于判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;确定添加单元,用于将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;修改单元,用于将所述目标任务的状态从初始修改为执行中;启动执行单元,用于启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
可选的,在本发明实施例第二方面的第一种实现方式中,基于业务系统的多任务处理装置还包括:创建单元,用于根据预置的任务模板创建目标任务列表;增加单元,用于在所述目标任务列表中增加多个待执行任务;设置单元,用于设置所述多个待执行任务中每个待执行任务的参数,所述参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。
可选的,在本发明实施例第二方面的第二种实现方式中,设置单元具体用于:设置所述多个待执行任务中每个待执行任务的任务名称和接口名称;设置每个待执行任务的接口类型,所述接口类型包括http类型和dubbo类型;设置每个待执行任务的方法名称;设置每个待执行任务的执行时刻和执行间隔,所述执行时刻和所述执行间隔用于控制待执行任务的触发时间节点;设置每个待执行任务的最大报警次数。
可选的,在本发明实施例第二方面的第三种实现方式中,添加单元具体用于:设置每个待执行任务的锁名称、锁的键key、锁的值value;为每个待执行任务关联redis分布式锁的SETNX命令;判断每个待执行任务关联的SETNX命令中是否存在key;若key不存在,则确定redis分布式锁添加成功,调整所述value为1,并设置所述redis分布式锁的有效时长expireTime;若key存在,则确定redis分布式锁添加失败,调整所述value为0。
可选的,在本发明实施例第二方面的第四种实现方式中,启动执行单元具体用于:启动所述EventLoop线程;判断每个目标任务的redis分布式锁是否有效;若目标任务的redis分布式锁有效,则通过所述EventLoop线程执行所有具有有效的所述redis分布式锁的目标任务。
可选的,在本发明实施例第二方面的第五种实现方式中,基于业务系统的多任务处理装置还包括:监控调整单元,用于对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。
可选的,在本发明实施例第二方面的第六种实现方式中,监控调整单元具体用于:监控所述EventLoop线程中的每个目标任务的状态;判断每个目标任务是否执行成功;若目标任务执行成功,则将目标任务的状态更改为执行成功;若目标任务执行失败,则将所述目标任务的状态更改为执行失败,并发送警示邮件,以使得所述目标任务可以被重新调用。
本发明实施例的第三方面提供了一种基于业务系统的多任务处理设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施方式所述的基于业务系统的多任务处理方法。
本发明实施例的第四方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行上述任一实施方式所述的基于业务系统的多任务处理方法的步骤。
本发明实施例提供的技术方案中,获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;将所述目标任务的状态从初始修改为执行中;启动所述EventLoop线程,同步执行所述EventLoop线程中的所有目标任务。本发明实施例,动态地配置业务系统的多个任务,同时执行配置的多个任务,提高了业务系统中多任务的处理效率。
附图说明
图1为本发明实施例中基于业务系统的多任务处理方法的一个实施例示意图;
图2为本发明实施例中基于业务系统的多任务处理方法的另一个实施例示意图;
图3为本发明实施例中基于业务系统的多任务处理装置的一个实施例示意图;
图4为本发明实施例中基于业务系统的多任务处理装置的另一个实施例示意图;
图5为本发明实施例中基于业务系统的多任务处理设备的一个实施例示意图。
具体实施方式
本发明提供了基于业务系统的多任务处理方法、装置、设备及存储介质,用于动态地配置业务系统的多个任务,同时执行配置的多个任务,提高了业务系统中多任务的处理效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,本发明实施例提供的基于业务系统的多任务处理方法的流程图,具体包括:
101、获取目标任务列表,目标任务列表包括业务系统的多个待执行任务。
基于业务系统的多任务处理装置获取目标任务列表,目标任务列表包括业务系统的多个待执行任务。其中,其中,目标任务列表中的多个任务是预先进行设置好的,例如,任务列表中可以包括2个任务,任务1和任务2,其中,任务1的名称为站内信预警,任务2的名称为站内信定期报告,可以预先设置好任务的名称,以便于在数据库中直接选择任务的名称,简化添加任务的过程。
需要说明的是,本发明实施例中,结合spring scheduled、redis、netty等三种技术特性,可以实现动态配置及能在集群环境下单节点执行,且多任务能同时并发执行。
可以理解的是,本发明的执行主体可以为基于业务系统的多任务处理装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以基于业务系统的多任务处理装置为执行主体为例进行说明。
102、通过SETNX命令对目标任务列表中的每个待执行任务添加redis分布式锁。
基于业务系统的多任务处理装置通过SETNX命令对目标任务列表中的每个待执行任务添加redis分布式锁。具体的,基于业务系统的多任务处理装置设置每个待执行任务的锁名称、锁的键key、锁的值value;基于业务系统的多任务处理装置为每个待执行任务关联redis分布式锁的SETNX命令;基于业务系统的多任务处理装置判断每个待执行任务关联的SETNX命令中是否存在key;若key不存在,则基于业务系统的多任务处理装置确定redis分布式锁添加成功,调整value为1,并设置redis分布式锁的有效时长;若key存在,则基于业务系统的多任务处理装置确定redis分布式锁添加失败,调整value为0。
需要说明的是,业务系统中引入redis架构,使用redis的分布式锁控制集群中单节点任务执行,避免集群环境任务重复执行。
103、判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,每个待执行任务包含有redis分布式锁。
基于业务系统的多任务处理装置判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,每个待执行任务包含有redis分布式锁。具体的,基于业务系统的多任务处理装置获取每个待执行任务的开始时刻(即任务的执行时刻),将获取到的多个执行时刻与系统的当前时刻进行对比,得到多个任务的间隔时长;然后基于业务系统的多任务处理装置将间隔时长小于阈值的任务确定为目标任务,目标任务为短时间内需要执行的待执行任务。
需要说明的是,基于业务系统的多任务处理装置通过设置间隔时长的阈值,多任务列表中的任务进行优先级划分,以使得基于业务系统的多任务处理装置将短时间内需要执行的待执行任务提前读取到线程中,避免任务执行时长超时或任务启动发生延迟。
可以理解的是,所有待执行任务的触发时间点(即开始时刻),在后管进行配置,不需要在代码中进行配置,任务执行可以实时生效。
104、将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。
基于业务系统的多任务处理装置将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。具体的,基于业务系统的多任务处理装置将多个任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。其中,EventLoop由一个永不改变的线程驱动,任务(Runnable或Callable)可以直接提交给EventLoop的实现,以便立即执行或有计划地执行,当任务列表加到EventLoop中,开启线程去执行任务列表中的任务。简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为“主线程”;另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为“EventLoop线程”(也可以称为“消息线程”)。本实施例中可以存在多个主线程。
需要说明的是,将执行的目标任务添加到EventLoop任务列表中,同步执行所有目标任务,各目标任务执行互不影响。
105、将目标任务的状态从初始修改为执行中。
基于业务系统的多任务处理装置将目标任务的状态从初始修改为执行中。其中,采用数据库存储目标任务,目标任务执行过程中变更任务状态,从目标任务调度到目标任务结束,状态变化包括初始、执行中、执行成功、执行失败等有效监控任务的执行状况。
需要说明的是,未加入EventLoop线程的任务,状态记录为“初始”;加入到EventLoop线程后的任务,状态记录为“执行中”;执行完成后移出EventLoop线程的任务,状态记录为“执行成功或执行失败”。
106、启动EventLoop线程,执行EventLoop线程中的所有目标任务。
基于业务系统的多任务处理装置启动EventLoop线程,执行EventLoop线程中的所有目标任务。具体的,基于业务系统的多任务处理装置启动EventLoop线程;基于业务系统的多任务处理装置判断每个目标任务是否具有redis分布式锁;若目标任务具有redis分布式锁,则基于业务系统的多任务处理装置通过EventLoop线程同时执行所有具有redis分布式锁的目标任务。
本发明实施例,动态地配置业务系统的多个任务,同时执行配置的多个任务,提高了业务系统中多任务的处理效率。
请参阅图2,本发明实施例提供的基于业务系统的多任务处理方法的另一个流程图,具体包括:
201、根据预置的任务模板创建目标任务列表。
基于业务系统的多任务处理装置根据预置的任务模板创建目标任务列表。其中,预置的任务模板可以包括任务名称、接口名、接口类型、方法名、执行时间、间隔和最大报警次数等参数,还可以包括其他参数,具体此处不做限定。
202、在目标任务列表中增加多个待执行任务。
基于业务系统的多任务处理装置在目标任务列表中增加多个待执行任务。其中,不同的任务的参数可以相同,也可以不同,具体此处不做限定。例如,目标任务列表中可以增加3个待执行任务,其中,对于任务1,任务名称为:资金方-LOAN_DETAIL_LIST-普惠,接口名称为:
http://smelp-core-ngx-xb-stg1.paic.com.cn/smelp-yinbao/puhuiDailyFpuh,方法名称为:fondFileSyncWarningMail?syncType=LOAN_DETAIL_LIST,执行时间为:20190113030500,间隔为:5,最大报警次数为:5,已报警次数为:0,执行状态为:初始;对于任务2,任务名称为:站内信预警,接口名为:com.pingan.smelp.risk.api.rm.RmMailSendService,方法名称为:SendMail,执行时刻为:20190115001000,执行间隔为:10,最大报警次数为:1,已报警次数为:0,执行状态为:初始;对于任务3,任务名称为:站内信定期报告,接口名称为:
com.pingan.smelp.risk.api.rm.RmMailSendService,方法名称为:
SendReportMail,执行时刻为:20190115003000,执行间隔为:10,最大报警次数为:2,已报警次数为:0,执行状态为:初始。
203、设置多个待执行任务中每个待执行任务的参数,参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。
基于业务系统的多任务处理装置设置多个待执行任务中每个待执行任务的参数,该参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。具体的,基于业务系统的多任务处理装置设置多个待执行任务中每个待执行任务的任务名称和接口名称;基于业务系统的多任务处理装置设置每个待执行任务的接口类型,接口类型包括http类型和dubbo类型;基于业务系统的多任务处理装置设置每个待执行任务的方法名称;基于业务系统的多任务处理装置设置每个待执行任务的执行时刻和执行间隔,执行时刻和执行间隔用于控制待执行任务的触发时间节点;基于业务系统的多任务处理装置设置每个待执行任务的最大报警次数。
204、获取目标任务列表,目标任务列表包括业务系统的多个待执行任务。
基于业务系统的多任务处理装置获取目标任务列表,目标任务列表包括业务系统的多个待执行任务。其中,其中,目标任务列表中的多个任务是预先进行设置好的,例如,任务列表中可以包括2个任务,任务1和任务2,其中,任务1的名称为站内信预警,任务2的名称为站内信定期报告,可以预先设置好任务的名称,以便于在数据库中直接选择任务的名称,简化添加任务的过程。
需要说明的是,本发明实施例中,结合spring scheduled、redis、netty等三种技术特性,可以实现动态配置及能在集群环境下单节点执行,且多任务能同时并发执行。
可以理解的是,本发明的执行主体可以为基于业务系统的多任务处理装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以基于业务系统的多任务处理装置为执行主体为例进行说明。
205、通过SETNX命令对目标任务列表中的每个待执行任务添加redis分布式锁。
基于业务系统的多任务处理装置通过SETNX命令对目标任务列表中的每个待执行任务添加redis分布式锁。具体的,基于业务系统的多任务处理装置设置每个待执行任务的锁名称、锁的键key、锁的值value;基于业务系统的多任务处理装置为每个待执行任务关联redis分布式锁的SETNX命令;基于业务系统的多任务处理装置判断每个待执行任务关联的SETNX命令中是否存在key;若key不存在,则基于业务系统的多任务处理装置确定redis分布式锁添加成功,调整value为1,并设置redis分布式锁的有效时长;若key存在,则基于业务系统的多任务处理装置确定redis分布式锁添加失败,调整value为0。
需要说明的是,业务系统中引入redis架构,使用redis的分布式锁控制集群中单节点任务执行,避免集群环境任务重复执行。
206、判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,每个待执行任务包含有redis分布式锁。
基于业务系统的多任务处理装置判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,每个待执行任务包含有redis分布式锁。具体的,基于业务系统的多任务处理装置获取每个待执行任务的开始时刻(即任务的执行时刻),将获取到的多个执行时刻与系统的当前时刻进行对比,得到多个任务的间隔时长;然后基于业务系统的多任务处理装置将间隔时长小于阈值的任务确定为目标任务,目标任务为短时间内需要执行的待执行任务。
需要说明的是,基于业务系统的多任务处理装置通过设置间隔时长的阈值,多任务列表中的任务进行优先级划分,以使得基于业务系统的多任务处理装置将短时间内需要执行的待执行任务提前读取到线程中,避免任务执行时长超时或任务启动发生延迟。
可以理解的是,所有待执行任务的触发时间点(即开始时刻),在后管进行配置,不需要在代码中进行配置,任务执行可以实时生效。
207、将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。
基于业务系统的多任务处理装置将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。具体的,基于业务系统的多任务处理装置将多个任务中间隔时长小于阈值的任务确定为目标任务,并将目标任务添加到EventLoop线程中。其中,EventLoop由一个永不改变的线程驱动,任务(Runnable或Callable)可以直接提交给EventLoop的实现,以便立即执行或有计划地执行,当任务列表加到EventLoop中,开启线程去执行任务列表中的任务。简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为“主线程”;另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为“EventLoop线程”(也可以称为“消息线程”)。
需要说明的是,将执行的目标任务添加到EventLoop任务列表中,同步执行所有目标任务,各目标任务执行互不影响。
208、将目标任务的状态从初始修改为执行中。
基于业务系统的多任务处理装置将目标任务的状态从初始修改为执行中。其中,采用数据库存储目标任务,目标任务执行过程中变更任务状态,从目标任务调度到目标任务结束,状态变化包括初始、执行中、执行成功、执行失败等有效监控任务的执行状况。
209、启动EventLoop线程,执行EventLoop线程中的所有目标任务。
基于业务系统的多任务处理装置启动EventLoop线程,执行EventLoop线程中的所有目标任务。具体的,基于业务系统的多任务处理装置启动EventLoop线程;基于业务系统的多任务处理装置判断每个目标任务的redis分布式锁是否有效;若目标任务的redis分布式锁有效,则基于业务系统的多任务处理装置通过EventLoop线时执行所有具有有效的redis分布式锁的目标任务。
210、对EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。
基于业务系统的多任务处理装置对EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。具体的,基于业务系统的多任务处理装置监控EventLoop线程中的每个目标任务的状态;基于业务系统的多任务处理装置基于业务系统的多任务处理装置判断每个目标任务是否执行成功;若目标任务执行成功,则基于业务系统的多任务处理装置将目标任务的状态更改为执行成功;若目标任务执行失败,则基于业务系统的多任务处理装置将目标任务的状态更改为执行失败,并发送警示邮件,以使得目标任务可以被重新调用。例如,对于任务3,任务名称为:站内信定期报告,接口名称为:com.pingan.smelp.risk.api.rm.RmMailSendService,方法名称为:SendReportMail,执行时刻为:20190115003000,执行间隔为:10,最大报警次数为:2,已报警次数为:2,执行状态为:执行失败。
本发明实施例,动态地配置业务系统的多个任务,同时执行配置的多个任务,并对每个任务的执行状态进行监听,提高了业务系统中多任务的处理效率。
上面对本发明实施例中基于业务系统的多任务处理方法进行了描述,下面对本发明实施例中基于业务系统的多任务处理装置进行描述,请参阅图3,本发明实施例中基于业务系统的多任务处理装置的一个实施例包括:
获取单元301,用于获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;
添加单元302,用于通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;
判断单元303,用于判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;
确定添加单元304,用于将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;
修改单元305,用于将所述目标任务的状态从初始修改为执行中;
启动执行单元306,用于启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
本发明实施例,动态地配置业务系统的多个任务,同时执行配置的多个任务,提高了业务系统中多任务的处理效率。
请参阅图4,本发明实施例中基于业务系统的多任务处理装置的另一个实施例包括:
获取单元301,用于获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;
添加单元302,用于通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;
判断单元303,用于判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;
确定添加单元304,用于将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;
修改单元305,用于将所述目标任务的状态从初始修改为执行中;
启动执行单元306,用于启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
可选的,基于业务系统的多任务处理装置还包括:
创建单元307,用于根据预置的任务模板创建目标任务列表;
增加单元308,用于在所述目标任务列表中增加多个待执行任务;
设置单元309,用于设置所述多个待执行任务中每个待执行任务的参数,所述参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。
可选的,设置单元309具体用于:
设置所述多个待执行任务中每个待执行任务的任务名称和接口名称;设置每个待执行任务的接口类型,所述接口类型包括http类型和dubbo类型;设置每个待执行任务的方法名称;设置每个待执行任务的执行时刻和执行间隔,所述执行时刻和所述执行间隔用于控制待执行任务的触发时间节点;设置每个待执行任务的最大报警次数。
可选的,添加单元302具体用于:
设置每个待执行任务的锁名称、锁的键key、锁的值value;为每个待执行任务关联redis分布式锁的SETNX命令;判断每个待执行任务关联的SETNX命令中是否存在key;若key不存在,则确定redis分布式锁添加成功,调整所述value为1,并设置所述redis分布式锁的有效时长expireTime;若key存在,则确定redis分布式锁添加失败,调整所述value为0。
可选的,启动执行单元306具体用于:
启动所述EventLoop线程;判断每个目标任务的redis分布式锁是否有效;若所述目标任务的所述redis分布式锁有效,则通过所述EventLoop线程执行所有具有有效的redis分布式锁的目标任务。
可选的,基于业务系统的多任务处理装置还包括:
监控调整单元310,用于对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。
可选的,监控调整单元310具体用于:
监控所述EventLoop线程中的每个目标任务的状态;判断每个目标任务是否执行成功;若目标任务执行成功,则将目标任务的状态更改为执行成功;若目标任务执行失败,则将所述目标任务的状态更改为执行失败,并发送警示邮件,以使得所述目标任务可以被重新调用。
本发明实施例,动态地配置业务系统的多个任务,同时执行配置的多个任务,并对每个任务的执行状态进行监听和调整,提高了业务系统中多任务的处理效率。
上面图3至图4从模块化功能实体的角度对本发明实施例中的基于业务系统的多任务处理装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于业务系统的多任务处理设备进行详细描述。
图5是本发明实施例提供的一种基于业务系统的多任务处理设备的结构示意图,该基于业务系统的多任务处理设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于业务系统的多任务处理设备中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在基于业务系统的多任务处理设备500上执行存储介质508中的一系列指令操作。
基于业务系统的多任务处理设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如Windows Serve,Mac OSX,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5中示出的基于业务系统的多任务处理设备结构并不构成对基于业务系统的多任务处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。处理器501可以执行上述实施例中获取单元301、添加单元302、判断单元303、确定添加单元304、修改单元305、启动执行单元306、创建单元307、增加单元308、设置单元309和监控调整单元310的功能。
下面结合图5对基于业务系统的多任务处理设备的各个构成部件进行具体的介绍:
处理器501是基于业务系统的多任务处理设备的控制中心,可以按照设置的基于业务系统的多任务处理方法进行处理。处理器501利用各种接口和线路连接整个基于业务系统的多任务处理设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行基于业务系统的多任务处理设备的各种功能,动态地配置业务系统的多个任务,同时执行配置的多个任务,并对每个任务的执行状态进行监听,提高了业务系统中多任务的处理效率。存储介质508和存储器509都是存储数据的载体,本发明实施例中,存储介质508可以是指储存容量较小,但速度快的内存储器,而存储器509可以是储存容量大,但储存速度慢的外存储器。
存储器509可用于存储软件程序以及模块,处理器501通过运行存储在存储器509的软件程序以及模块,从而执行基于业务系统的多任务处理设备500的各种功能应用以及数据处理。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁)等;存储数据区可存储根据基于业务系统的多任务处理设备的使用所创建的数据(比如目标任务列表)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在本发明实施例中提供的基于业务系统的多任务处理方法程序和接收到的数据流存储在存储器中,当需要使用时,处理器501从存储器509中调用。
在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,光盘)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于业务系统的多任务处理方法,其特征在于,包括:
获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;
通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;
判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;
将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;
将所述目标任务的状态从初始修改为执行中;
启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
2.根据权利要求1所述的基于业务系统的多任务处理方法,其特征在于,在所述获取任务列表,所述任务列表包括业务系统的多个任务之前,所述方法还包括:
根据预置的任务模板创建目标任务列表;
在所述目标任务列表中增加多个待执行任务;
设置所述多个待执行任务中每个待执行任务的参数,所述参数包括待执行任务的任务名称、接口名称、接口类型、方法名称、执行时刻、执行间隔和最大报警次数。
3.根据权利要求2所述的基于业务系统的多任务处理方法,其特征在于,所述设置所述多个待执行任务中每个待执行任务的参数包括:
设置所述多个待执行任务中每个待执行任务的任务名称和接口名称;
设置每个待执行任务的接口类型,所述接口类型包括http类型和dubbo类型;
设置每个待执行任务的方法名称;
设置每个待执行任务的执行时刻和执行间隔,所述执行时刻和所述执行间隔用于控制待执行任务的触发时间节点;
设置每个待执行任务的最大报警次数。
4.根据权利要求1所述的基于业务系统的多任务处理方法,其特征在于,所述通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁包括:
设置每个待执行任务的锁名称、锁的键key、锁的值value;
为每个待执行任务关联redis分布式锁的SETNX命令;
判断每个待执行任务关联的SETNX命令中是否存在key;
若key不存在,则确定redis分布式锁添加成功,调整所述value为1,并设置所述redis分布式锁的有效时长expireTime;
若key存在,则确定redis分布式锁添加失败,调整所述value为0。
5.根据权利要求1所述的基于业务系统的多任务处理方法,其特征在于,所述启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务包括:
启动所述EventLoop线程;
判断每个目标任务的redis分布式锁是否有效;
若目标任务的redis分布式锁有效,则通过所述EventLoop线程执行所有具有有效的redis分布式锁的目标任务。
6.根据权利要求1-5中任一所述的基于业务系统的多任务处理方法,其特征在于,所述启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务之后,所述方法还包括:
对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态。
7.根据权利要求6所述的基于业务系统的多任务处理方法,其特征在于,所述对所述EventLoop线程中的每个目标任务进行监控并实时调整每个目标任务的状态包括:
监控所述EventLoop线程中的每个目标任务的状态;
判断每个目标任务是否执行成功;
若目标任务执行成功,则将目标任务的状态更改为执行成功;
若目标任务执行失败,则将所述目标任务的状态更改为执行失败,并发送警示邮件,以使得所述目标任务可以被重新调用。
8.一种基于业务系统的多任务处理装置,其特征在于,包括:
获取单元,用于获取目标任务列表,所述目标任务列表包括业务系统的多个待执行任务;
添加单元,用于通过SETNX命令对所述目标任务列表中的每个待执行任务添加redis分布式锁;
判断单元,用于判断每个待执行任务的开始时刻与当前时刻的间隔时长是否小于阈值,所述每个待执行任务包含有所述redis分布式锁;
确定添加单元,用于将多个待执行任务中间隔时长小于阈值的任务确定为目标任务,并将所述目标任务添加到EventLoop线程中;
修改单元,用于将所述目标任务的状态从初始修改为执行中;
启动执行单元,用于启动所述EventLoop线程,执行所述EventLoop线程中的所有目标任务。
9.一种基于业务系统的多任务处理设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一项所述的基于业务系统的多任务处理方法。
10.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-7中任意一项所述的基于业务系统的多任务处理方法。
CN201910606390.XA 2019-07-05 2019-07-05 基于业务系统的多任务处理方法、装置、设备及存储介质 Pending CN110413388A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910606390.XA CN110413388A (zh) 2019-07-05 2019-07-05 基于业务系统的多任务处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910606390.XA CN110413388A (zh) 2019-07-05 2019-07-05 基于业务系统的多任务处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN110413388A true CN110413388A (zh) 2019-11-05

Family

ID=68360642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910606390.XA Pending CN110413388A (zh) 2019-07-05 2019-07-05 基于业务系统的多任务处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110413388A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111562971A (zh) * 2020-04-09 2020-08-21 北京明略软件系统有限公司 分布式定时器的调度方法及系统
CN112817710A (zh) * 2021-01-22 2021-05-18 平安养老保险股份有限公司 定时任务处理方法、系统、计算机设备及计算机存储介质
CN113312185A (zh) * 2021-06-09 2021-08-27 浪潮云信息技术股份公司 一种分布式锁
CN115934287A (zh) * 2022-12-27 2023-04-07 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
CN107918556A (zh) * 2016-10-11 2018-04-17 北京京东尚科信息技术有限公司 一种定时任务在多个服务器的并行执行方法和装置
CN108089926A (zh) * 2018-01-08 2018-05-29 马上消费金融股份有限公司 一种获取分布式锁的方法、装置、设备及可读存储介质
CN109471710A (zh) * 2018-10-25 2019-03-15 网易(杭州)网络有限公司 任务请求的处理方法、装置、处理器、终端及服务器
CN109582466A (zh) * 2017-09-29 2019-04-05 北京金山软件有限公司 一种定时任务执行方法、分布式服务器集群及电子设备
CN109857527A (zh) * 2019-01-04 2019-06-07 四川虹美智能科技有限公司 一种分布式任务调度方法、系统、分布式装置和Redis数据库

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
CN107918556A (zh) * 2016-10-11 2018-04-17 北京京东尚科信息技术有限公司 一种定时任务在多个服务器的并行执行方法和装置
CN109582466A (zh) * 2017-09-29 2019-04-05 北京金山软件有限公司 一种定时任务执行方法、分布式服务器集群及电子设备
CN108089926A (zh) * 2018-01-08 2018-05-29 马上消费金融股份有限公司 一种获取分布式锁的方法、装置、设备及可读存储介质
CN109471710A (zh) * 2018-10-25 2019-03-15 网易(杭州)网络有限公司 任务请求的处理方法、装置、处理器、终端及服务器
CN109857527A (zh) * 2019-01-04 2019-06-07 四川虹美智能科技有限公司 一种分布式任务调度方法、系统、分布式装置和Redis数据库

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111562971A (zh) * 2020-04-09 2020-08-21 北京明略软件系统有限公司 分布式定时器的调度方法及系统
CN112817710A (zh) * 2021-01-22 2021-05-18 平安养老保险股份有限公司 定时任务处理方法、系统、计算机设备及计算机存储介质
CN112817710B (zh) * 2021-01-22 2024-04-30 平安养老保险股份有限公司 定时任务处理方法、系统、计算机设备及计算机存储介质
CN113312185A (zh) * 2021-06-09 2021-08-27 浪潮云信息技术股份公司 一种分布式锁
CN115934287A (zh) * 2022-12-27 2023-04-07 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法
CN115934287B (zh) * 2022-12-27 2023-09-12 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法

Similar Documents

Publication Publication Date Title
CN110413388A (zh) 基于业务系统的多任务处理方法、装置、设备及存储介质
US10445142B2 (en) Edge computing platform
JP5926864B2 (ja) クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法
US9152532B2 (en) System and method for configuring a cloud computing system with a synthetic test workload
JP6373840B2 (ja) クラウドコンピューティングシステムをチューニングするためのシステム及び方法
CN112165691B (zh) 内容分发网络调度方法、装置、服务器和介质
US20140047342A1 (en) System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
CN105453035B (zh) 用于接收对存储在计算机系统处的软件组件的更新的方法
US20140047095A1 (en) System and method for tuning a cloud computing system
US20140047084A1 (en) System and method for modifying a hardware configuration of a cloud computing system
US20140047227A1 (en) System and method for configuring boot-time parameters of nodes of a cloud computing system
CN109634728A (zh) 作业调度方法、装置、终端设备及可读存储介质
CN107407918A (zh) 利用app扩展可编程逻辑控制器
CN108733496A (zh) 事件处理方法和装置
CN110333939A (zh) 任务混合调度方法、装置、调度服务器及资源服务器
CN107066339A (zh) 分布式作业管理器及分布式作业管理方法
EP3274823A1 (en) Category based execution scheduling
GB2394575A (en) System for a distributed shell in a distributed computer environment
CN105933136B (zh) 一种资源调度方法及系统
CN111522630B (zh) 基于批次调度中心的计划任务执行方法以及系统
US20200133682A1 (en) System and method for automatically reconfiguring a computer between a cryptocurrency mining mode and a gaming mode
US20230281039A1 (en) Efficient Scheduling of Build Processes Executing on Parallel Processors
CN116737560B (zh) 基于智能导控的智慧训练系统
CN111273915B (zh) 一种中间件配置优化方法、装置、终端设备和介质
US20230251984A1 (en) Configuring polling times for software applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191105