CN114020512A - 后台任务处理方法、装置、计算机设备和存储介质 - Google Patents

后台任务处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN114020512A
CN114020512A CN202111294195.1A CN202111294195A CN114020512A CN 114020512 A CN114020512 A CN 114020512A CN 202111294195 A CN202111294195 A CN 202111294195A CN 114020512 A CN114020512 A CN 114020512A
Authority
CN
China
Prior art keywords
task
thread
target
running
target background
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
CN202111294195.1A
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202111294195.1A priority Critical patent/CN114020512A/zh
Publication of CN114020512A publication Critical patent/CN114020512A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Abstract

本申请涉及一种后台任务处理方法、装置、计算机设备和存储介质。所述方法包括:决策线程从数据库中获取待处理的目标后台任务的任务信息;任务信息包括目标后台任务对应的任务运行线程;根据任务信息确定目标后台任务的任务运行状态;当任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程对应的目标任务运行线程时,将目标后台任务加入目标任务运行线程的任务列表,以供目标任务运行线程处理任务列表中的目标后台任务。相比于传统技术中在后台任务运行异常时需要运维人员手工操作处理,采用本方法能够实现运行异常任务的主动接管,从而可以提高运行异常任务的处理效率。

Description

后台任务处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及互联网技术领域,特别是涉及一种后台任务处理方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展,出现了一种利用分布式系统处理后台任务的技术,该技术可以通过将后台任务分发至不同的任务处理服务器,从而可以实现多个后台任务的并行处理。
传统技术中,在某一个后台任务在服务器上运行异常时,则需要运维人员手工重启服务器,并由重启后的服务器继续运行上述运行异常的后台任务。然而上述后台任务的处理方法,需要运维人员手工操作才可以实现运行异常后台任务的处理,因此,目前的后台任务处理方法中,针对运行异常任务的处理效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种后台任务处理方法、装置、计算机设备和存储介质。
一种后台任务处理方法,应用于决策线程,所述方法包括:
从数据库中获取待处理的目标后台任务的任务信息;所述任务信息包括所述目标后台任务对应的任务运行线程;
根据所述任务信息确定所述目标后台任务的任务运行状态;
当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,将所述目标后台任务加入所述目标任务运行线程的任务列表,以供所述目标任务运行线程处理所述任务列表中的目标后台任务。
在其中一个实施例中,所述任务信息包括所述目标后台任务的任务更新时间;所述根据所述任务信息确定所述目标后台任务的任务运行状态,包括:获取所述决策线程对应的线程启动时间,将所述线程启动时间与所述任务更新时间之间的时间间隔,作为任务更新时间间隔;若所述任务更新时间间隔大于预设的时间间隔阈值,则确定所述任务运行状态为所述目标后台任务运行异常。
在其中一个实施例中,所述确定所述任务运行状态为所述目标后台任务运行异常之后,还包括:当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程为所述目标任务运行线程时,将所述目标后台任务从所述目标任务运行线程的任务列表删除,以使所述目标任务运行线程取消处理所述任务列表中的目标后台任务。
在其中一个实施例中,所述将所述线程启动时间与所述任务更新时间之间的时间间隔,作为任务更新时间间隔之后,还包括:若所述任务更新时间间隔小于或者等于所述时间间隔阈值,则确定所述任务运行状态为所述目标后台任务运行正常;当所述任务运行状态为所述目标后台任务运行正常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,检测所述目标任务运行线程的任务列表中是否携带有所述目标后台任务;若所述目标任务运行线程的任务列表中携带有所述目标后台任务,则将所述目标后台任务从所述目标任务运行线程的任务列表删除,以使所述目标任务运行线程取消处理所述任务列表中的目标后台任务。
在其中一个实施例中,所述任务信息还包括:所述目标后台任务的任务更新时间以及所述目标后台任务的运行断点信息;所述将所述目标后台任务加入所述目标任务运行线程的任务列表之前,还包括:对所述目标后台任务的任务更新时间,以及所述目标后台任务的任务运行线程进行更新,得到所述目标后台任务对应的更新任务信息;将所述更新任务信息发送至所述数据库,以使所述数据库存储所述更新任务信息;所述将所述目标后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程处理所述任务列表中的目标后台任务,包括:将所述目标后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程根据所述运行断点信息处理所述任务列表中的目标后台任务。
在其中一个实施例中,所述根据所述任务信息确定所述目标后台任务的任务运行状态,包括:获取所述决策线程的线程启动次数;根据所述线程启动次数,判断所述决策线程是否为所述决策线程在其对应的任务处理服务器启动后的初次启动;若所述决策线程不是所述任务处理服务器启动后的初次启动,则根据所述任务信息确定所述目标后台任务的任务运行状态。
在其中一个实施例中,所述判断所述决策线程是否为所述决策线程在其对应的任务处理服务器启动后的初次启动之后,还包括:若所述决策线程是所述任务处理服务器启动后的初次启动,则根据所述任务运行线程,从目标后台任务中筛选出任务运行线程为所述目标任务运行线程的本地后台任务;将所述本地后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程处理所述任务列表中的本地后台任务。
一种后台任务处理装置,应用于决策线程,所述装置包括:
任务信息获取模块,用于从数据库中获取待处理的目标后台任务的任务信息;所述任务信息包括所述目标后台任务对应的任务运行线程;
运行状态确定模块,用于根据所述任务信息确定所述目标后台任务的任务运行状态;
任务列表处理模块,用于当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,将所述目标后台任务加入所述目标任务运行线程的任务列表,以供所述目标任务运行线程处理所述任务列表中的目标后台任务。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述后台任务处理方法、装置、计算机设备和存储介质,通过决策线程从数据库中获取待处理的目标后台任务的任务信息;任务信息包括目标后台任务对应的任务运行线程;根据任务信息确定目标后台任务的任务运行状态;当任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程对应的目标任务运行线程时,将目标后台任务加入目标任务运行线程的任务列表,以供目标任务运行线程处理任务列表中的目标后台任务。本申请通过决策线程可以根据目标后台任务的任务信息判断该任务的运行状态,如果该任务运行异常,并且其运行线程并非是该决策线程对应的目标任务运行线程时,则可以将该任务加入目标任务运行线程的运行列表以接管任务的处理,相比于传统技术中在后台任务运行异常时需要运维人员手工操作处理,本申请的后台任务处理方法可以实现运行异常任务的主动接管,从而可以提高运行异常任务的处理效率。
附图说明
图1为一个实施例中后台任务处理方法的应用环境图;
图2为一个实施例中后台任务处理方法的流程示意图;
图3为一个实施例中确定目标后台任务的任务运行状态的流程示意图;
图4为一个实施例中将目标后台任务从任务列表删除的流程示意图;
图5为一个实施例中确定目标后台任务的任务运行状态的流程示意图;
图6为一个应用实例中后台任务处理系统的系统架构示意图;
图7为一个应用实例中高可用决策线程的控制流程示意图;
图8为一个应用实例中后台任务处理线程的控制流程示意图;
图9为一个实施例中后台任务处理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本申请提供的后台任务处理方法,可以应用于如图1所示的应用环境中。其中,任务处理服务器101通过网络与数据库102通过网络进行通信,其中任务处理服务器101中包括用于处理后台任务的目标任务运行线程1011,以及为目标任务运行线程1011提供决策的决策线程1012。具体来说,决策线程1012可以从数据库102中得到需要进行任务处理的目标后台任务的任务信息,该任务信息可以包含目标后台任务所对应的任务运行线程,同时,决策线程1012还可以进一步的利用任务信息判断该目标后台任务的运行状态,假如目标后台任务运行异常,并且其对应的任务运行线程并非目标任务运行线程1011时,则可以将目标后台任务加入目标任务运行线程1011的任务列表,由目标任务运行线程1011代为执行。其中,任务处理服务器101以及数据库102都可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种后台任务处理方法,以该方法应用于图1中的决策线程1012为例进行说明,包括以下步骤:
步骤S201,决策线程1012从数据库102中获取待处理的目标后台任务的任务信息;任务信息包括目标后台任务对应的任务运行线程。
其中,决策线程1012指的是用于为后台任务运行处理提供决策的线程,本实施例中,用于处理后台任务的任务处理服务器101可以由决策线程1012以及该决策线程对应的任务运行线程,即目标任务运行线程1011组成,目标任务运行线程1011主要用于实现后台任务的运行处理,而决策线程1012则主要是为目标任务运行线程1011的任务处理提供决策,例如该目标任务运行线程1011需要执行哪些后台任务,则可以通过决策线程1012确定。目标后台任务则指的是需要进行任务处理的后台任务,该后台任务的任务相关信息可以存储于数据库102中,任务信息可以包括目标后台任务所对应的任务运行线程,由于用于处理后台任务的任务处理服务器的数量可以是多个,因此也可以有多个任务运行线程,数据库102可以将每一个后台任务与用于对该后台任务进行任务运行的任务运行线程之间的对应关系,作为该后台任务的任务信息的一部分进行存储。
具体来说,决策线程1012可以通过数据库102,得到需要处理的目标后台任务的任务信息,例如该决策线程1012可以是按照一定的时间间隔进行启动,而当决策线程1012启动时,则可以从数据库102中读取需要进行任务处理的目标后台任务的任务信息,并且从中得到用于处理目标后台任务的任务运行线程,作为目标后台任务对应的任务运行线程。
步骤S202,根据任务信息确定目标后台任务的任务运行状态。
任务运行状态则指的是目标后台任务的任务状态,该状态可以包括目标后台任务是正常运行处理,还是异常运行处理,决策线程102得到任务信息后,则可以对任务信息进行分析,来判断目标后台任务的任务运行状态是否正常运行处理。
步骤S203,当任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程1012对应的目标任务运行线程1011时,将目标后台任务加入目标任务运行线程1011的任务列表,以供目标任务运行线程1011运行任务列表中的目标后台任务。
目标任务运行线程1011则指的是由决策线程1012提供决策的任务运行线程,由于本实施例中用于运行后台任务的任务处理服务器为多个,并且每一个任务处理服务器都可以携带有相应的决策线程与任务运行线程,目标任务运行线程1011则是与决策线程1012处于同一个任务处理服务器的任务运行线程。例如,与数据库102连接的任务处理服务器可以包括:服务器A、服务器B以及服务器C,其中服务器A中包含决策线程A以及任务运行线程A、服务器B中包含决策线程B以及任务运行线程B,而服务器C中包含决策线程C以及任务运行线程C,那么假如决策线程A作为决策线程1012,那么决策线程1012对应的目标任务运行线程则为任务运行线程A,而假如决策线程B作为决策线程1012,那么决策线程1012对应的目标任务运行线程则为任务运行线程B等等。任务列表则指的是目标任务运行线程1011需要执行任务的列表,目标任务运行线程1011可以处理任务列表中携带的后台任务,而对于任务列表中未携带的后台任务,目标任务运行线程1011则不进行处理。
具体来说,假如任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程1012对应的目标任务运行线程1011时,即目标后台任务在原先的任务运行线程上运行异常,那么决策线程1012则可以将上述目标后台任务加入至目标任务运行线程1011的运行任务列表中,由目标任务运行线程1011对目标后台任务进行处理。
例如,某一个目标后台任务在任务运行线程B上运行异常,当决策线程A检测到该目标后台任务的运行状态为任务运行异常时,由于任务运行线程B并非该决策线程A对应的目标任务运行线程,因此决策线程A则可以将目标后台任务加入至目标任务运行线程的任务列表,即加入至任务运行线程A的任务列表中,由任务运行线程A代为处理目标后台任务。
上述后台任务处理方法中,决策线程1012从数据库102中获取待处理的目标后台任务的任务信息;任务信息包括目标后台任务对应的任务运行线程;根据任务信息确定目标后台任务的任务运行状态;当任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程1012对应的目标任务运行线程1011时,将目标后台任务加入目标任务运行线程1011的任务列表,以供目标任务运行线程1011处理任务列表中的目标后台任务。本申请通过决策线程1012可以根据目标后台任务的任务信息判断该任务的运行状态,如果该任务运行异常,并且其运行线程并非是该决策线程1012对应的目标任务运行线程1011,则可以将该任务加入目标任务运行线程1011的运行列表以接管任务的运行,相比于传统技术中在后台任务运行异常时需要运维人员手工操作处理,本申请的后台任务处理方法可以实现运行异常任务的主动接管,从而可以提高运行异常任务的处理效率。
在一个实施例中,任务信息包括目标后台任务的任务更新时间;如图3所示,步骤S202进一步包括:
步骤S301,获取决策线程1012对应的线程启动时间,将线程启动时间与任务更新时间之间的时间间隔,作为任务更新时间间隔。
其中,任务更新时间指的是后台任务在通过任务运行线程进行处理过程中,由任务运行线程向数据库102最后一次返回的更新时间,可以用于表征在任务更新时间的时间点中,该后台任务仍然在任务运行线程中进行处理。线程启动时间则指的是决策线程1012的启动时间,本实施例中,只有在决策线程1012启动时才会进行任务信息的获取,因此线程启动时间也可以用于表征当前时间。
具体来说,在决策线程1012启动时,可以获取当前时间作为线程启动时间,并且从目标后台任务获取目标后台任务最后一次反馈的更新时间,之后决策线程1012则可以计算线程启动时间与任务更新时间之间的时间间隔,作为任务更新时间间隔,即当前时间与目标后台任务最后一次更新时间之间的间隔。
步骤S302,若任务更新时间间隔大于预设的时间间隔阈值,则确定任务运行状态为目标后台任务运行异常。
而如果任务更新时间间隔要大于预先设定的一个时间间隔阈值,则可以表明用于处理目标后台任务的任务运行线程已经很长时间没有对目标后台任务进行更新,可以表明该目标后台任务无法在任务运行线程中继续进行处理,即该任务运行线程对目标后台任务的任务运行处理处于异常状态,因此决策线程1012则可以确定该目标后台任务的任务运行状态为目标后台任务运行异常。
上述实施例中,决策线程1012可以通过任务更新时间间隔以及时间间隔阈值的大小关系,来确定目标后台任务的任务运行状态,而任务更新时间间隔则可以通过目标后台任务的任务更新时间确定得到,从而可以实现任务运行状态的智能检测,提高异常任务运行状态的获取效率。
进一步地,步骤S302之后,还可以包括:当任务运行状态为目标后台任务运行异常,且任务运行线程为目标任务运行线程时,将目标后台任务从目标任务运行线程的任务列表删除,以使目标任务运行线程取消处理任务列表中的目标后台任务。
而在确定出目标后台任务运行异常后,假如负责目标后台任务处理的任务运行线程就是决策线程1012所对应的目标任务运行线程1011,则表明该目标后台任务是在目标任务运行线程1011上运行处理异常,因此则可以取消目标后台任务在目标任务运行线程1011上的处理,由其他任务运行线程接管处理,通过将上述目标后台任务从目标任务运行线程1011的任务列表中删除,则可以取消目标任务运行线程1011继续对目标后台任务的处理。
本实施例中,如果决策线程1012确定出任务运行异常的目标后台任务是在该决策线程1012对应的目标任务运行线程1011上处理时,则可以将目标后台任务从目标任务运行线程1011的任务列表删除,从而可以取消目标任务运行线程1011对目标后台任务的任务处理,从而可以节省目标任务运行线程1011的运算资源。
在一个实施例中,如图4所示,步骤S301之后,还可以包括:
步骤S401,若任务更新时间间隔小于或者等于时间间隔阈值,则确定任务运行状态为目标后台任务运行正常。
而如果任务更新时间间隔小于或者等于时间间隔阈值,则表明处理该目标后台任务的任务运行线程在正常对目标后台任务进行更新,此时决策线程1012则可以确定该目标后台任务的任务运行状态为任务正常运行。
步骤S402,当任务运行状态为目标后台任务运行正常,且任务运行线程不是决策线程对应的目标任务运行线程时,检测目标任务运行线程的任务列表中是否携带有目标后台任务;
步骤S403,若目标任务运行线程的任务列表中携带有目标后台任务,则将目标后台任务从目标任务运行线程的任务列表删除,以使目标任务运行线程取消处理任务列表中的目标后台任务。
而如果目标后台任务运行正常,并且任务运行线程不是决策线程1012对应的目标任务运行线程1011时,则表明该目标后台任务在其他任务运行线程中正常处理,此时为了避免同样的目标后台任务由多个任务运行线程进行处理,决策线程1012可以查询目标任务运行线程1011的任务列表中是否包含上述目标后台任务,如果任务列表中携带有目标后台任务,决策线程1012则可以从任务列表中将上述目标后台任务进行删除,从而使得目标任务运行线程可以取消处理上述目标后台任务。
另外,假如目标后台任务运行正常,并且任务运行线程为决策线程1012对应的目标任务运行线程1011时,则表明目标后台任务在目标任务运行线程1011上正常处理中,此时决策线程1012则不需要对目标后台任务进行任何处理,从而获取下一个待处理的目标后台任务的任务信息。
本实施例中,如果确定出目标后台任务运行正常,并且任务运行线程不是决策线程1012对应的目标任务运行线程1011时,则可以检测目标任务运行线程1011的任务列表是否包含上述目标后台任务,如果包含,则从任务列表中删除目标后台任务,来保证目标后台任务不被多个任务运行线程重复处理,从而可以节省目标任务运行线程1011的运算资源。
在一个实施例中,任务信息还包括:目标后台任务的任务更新时间以及目标后台任务的运行断点信息;步骤S203将目标后台任务加入目标任务运行线程的任务列表之前,还可以包括:对目标后台任务的任务更新时间,以及目标后台任务的任务运行线程进行更新,得到目标后台任务对应的更新任务信息;将更新任务信息发送至数据库102,以使数据库102存储更新任务信息;步骤S203可以进一步包括:将目标后台任务加入目标任务运行线程1011的任务列表,以使目标任务运行线程1011根据运行断点信息处理任务列表中的目标后台任务。
运行断点信息指的是目标后台任务的断点信息,可以用于表示目标后台任务的任务处理进度,本实施例中,目标后台任务的任务信息还可以包括运行断点信息,在步骤S203中决策线程1012确定出目标后台任务运行异常,并且任务运行线程不是目标任务运行线程1011时,决策线程1012则可以对目标后台任务进行接管,接管时首先需要决策线程1012对数据库102中存储的任务信息进行更新,即通过对目标后台任务的任务更新时间以及任务运行线程进行刷新,得到更新后的人物信息,即更新任务信息后,将其发送至数据库102中进行存储。任务信息更新完成后,决策线程1012才将上述目标后台任务加入至目标任务运行线程1011的任务列表中,由目标任务运行线程1011根据断点信息继续对目标后台任务进行处理。
上述实施例中,在决策线程1012接管目标后台任务时,还可以对目标后台任务的任务信息进行更新,并将更新后得到的更新任务信息发送至数据库102进行存储,使得数据库102可以随时存储目标后台任务最新的任务信息,之后才由目标任务运行线程1011处理目标后台任务,此时目标任务运行线程1011还可以通过目标后台任务的断点信息来实现目标后台任务的接管处理,从而可以实现目标后台任务的断点续处理,而不需要重新处理目标后台任务,从而进一步提高目标后台任务的处理效率。
在一个实施例中,如图5所示,步骤S202可以进一步包括:
步骤S501,获取决策线程1012的线程启动次数;
步骤S502,根据线程启动次数,判断决策线程1012是否为决策线程1012在其对应的任务处理服务器101启动后的初次启动。
其中,线程启动次数指的是决策线程1012启动次数,本实施例中,决策线程1012每一次启动时,都会记录统计该决策线程1012的启动次数,可以是每一次启动时,则对决策线程1012的启动次数+1,并存储,而任务处理服务器101关闭后,则可以对线程启动次数清零,因此该线程启动次数可以用于判断决策线程1012是否是在任务处理服务器101启动后的初次启动。如果线程启动次数为1,则表明该决策线程1012是在任务处理服务器101启动后的初次启动,而假如线程启动次数为2,则表明该决策线程1012并非是在任务处理服务器101启动后的初次启动。
步骤S503,若决策线程1012不是任务处理服务器101启动后的初次启动,则根据任务信息确定目标后台任务的任务运行状态。
在步骤S502中决策线程1012确定出此时不是任务处理服务器101启动后的初次启动,那么则可以执行步骤S202中根据任务信息确定目标后台任务的任务运行状态的过程,来确定是否需要接管目标后台任务的处理。
本实施例中,决策线程1012可以通过线程启动次数来判断决策线程1012是否为任务处理服务器101启动后的初次启动,如果不是,才执行确定目标后台任务的任务运行状态的步骤,从而可以提高目标后台任务监管的智能性。
进一步地,步骤S502之后,还可以包括:若决策线程1012是任务处理服务器101启动后的初次启动,则根据任务运行线程,从目标后台任务中筛选出任务运行线程为目标任务运行线程的本地后台任务;将本地后台任务加入目标任务运行线程的任务列表,以使目标任务运行线程1011运行任务列表中的本地后台任务。
本地后台任务则指的是任务处理服务器101启动后需要由目标任务运行线程1011进行处理的后台任务,本实施例中,如果决策线程1012是任务处理服务器101启动后的初次启动,那么则不需要执行目标后台任务的接管,因此此时决策线程1012则可以直接从多个需要执行的目标后台任务的任务信息中,筛选出任务运行线程为目标任务运行线程1011的目标后台任务,作为本地后台任务,并且将对本地后台任务进行任务接管,可以是先对本地后台任务的任务信息进行更新,例如可以是更新本地后台任务的任务更新时间以及任务运行线程,并将更新后的任务信息存储至数据库102后,再将目标后台任务加入至目标任务运行线程1011的任务列表中,使得目标任务运行线程1011可以处理上述任务列表中的目标后台任务。
本实施例中,如果决策线程1012是任务处理服务器101启动后的初次启动,那么决策线程1012则不需要考虑后台任务的接管,因此则不需要确定目标后台任务的任务运行状态,而是从目标后台任务中筛选出需要由目标任务运行线程1011处理的本地后台任务,并且通过将本地后台任务加入至目标任务运行线程1011的任务列表,则可以使目标任务运行线程1011处理上述本地后台任务,来保证本地后台任务的正常处理。
在一个应用实例中,还提供了一种分布式常驻后台任务高可用系统及方法,通过集群中内各服务器后台任务间的心跳联系,以及高可用决策线程,智能检测集群内各后台任务存活情况,启停线程池内的后台任务,进行任务接管与退出,提升任务的连续性。
首先,在数据库创建一张后台任务信息表,以后台任务名+运行节点为唯一索引存储后台任务信息。该表格主要字段如表1所示:
字段中文名 备注
后台任务名 PK
运行节点 PK,标志该后台任务运行的服务器
断点信息 记录后台任务的断点信息,用于接管时,可以进行断点续作。
最后更新时间 任务信息的最后更新时间,同时也是任务的最后心跳时间。
表1后台任务信息字段示意表
同时,本应用实例还提供了高可用决策线程以及后台任务处理线程两个主要的控制流程,高可用决策进程主要用于后台任务的心跳,并智能决策接管。后台任务处理线程主要是发送心跳数据供决策进程使用,可以应用于如图6所示的后台任务处理系统中,具体的控制如下:
(1)高可用决策线程:
步骤一:控制流程如图7所示,线程间隔一段时间启动一次,启动后,记录启动次数用于判断是否首次启动,并从数据库获取任务信息,并循环处理每一条任务。
步骤二:当线程为服务器启动后的首次启动,则不对其他服务器的任务进行接管,只处理运行节点为本服务器的任务。
如果存在需要启动的任务,则先刷新数据库任务信息的运行节点,最后更新时间,确保更新成功后,才可接管启动本地任务。
启动后,将任务名添加到本地内存的任务运行列表。
步骤三:当线程不是服务器启动后的首次启动,则判断运行节点是否为本机。
如果是本机,而且最后更新时间在一定间隔时间内,说明任务是正常的,跳过任务的处理,处理下一个任务。
如果是本机,但是最后更新时间超过指定间隔时间,说明任务已经长时间未有更新一次心跳了,需取消本机任务,等待其他服务器进行接管,因此从任务线程池中,取消任务,并从本地内存的任务列表内,删除本任务。
如果运行节点不是本机,而且最后更新时间在一定间隔时间内,说明任务在其他服务器上正常运行,则需检查本地内存的任务列表,是否存在该任务,如果有,则需取消本地的任务,并从列表内,删除任务。如无,则跳过。
如果运行节点不是本地,而且最后更新时间超过指定间隔时间,说明任务在其他服务器上发生异常,则需进行任务接管。接管时,先刷新数据库任务信息的运行节点,最后更新时间,确保更新成功后,再根据断点信息启动本地任务。启动后,将任务名添加到本地内存的任务运行列表。
(2)后台任务处理线程:
控制流程如图8所示,在启动后台任务的业务处理前,都需检查本地内存的任务运行列表。
如果任务不在运行列表内,则说明本机不可以继续处理该任务,那么任务就正常退出。
如果任务在运行列表内,则说明本机可以继续处理该任务,那么将进行业务处理。
处理结束后,更新心跳信息(最后更新时间)以及断点信息到任务信息表中,需注意,此处更新,WHERE条件需带上本机标志作为运行节点的条件,确认当前时刻,仍为本地在处理任务。如果更新失败,则退出任务。更新成功,则继续后台任务的控制流程。
上述分布式常驻后台任务高可用系统及方法,可以在后台任务异常下宕时,集群内服务器智能接管,提高其连续性的解决方案。与传统的后台任务监控,并在异常时,由运维人员手工重启的方案相比,应急时效有显著的提升,也减轻了运维人员的手工操作。同时智能接管,支持断点续作,也减少很多后台任务异常场景下,对于数据的修复和调整工作。
应该理解的是,虽然本申请的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种后台任务处理装置,应用于决策线程,包括:任务信息获取模块901、运行状态确定模块902和任务列表处理模块903,其中:
任务信息获取模块901,用于从数据库中获取待处理的目标后台任务的任务信息;任务信息包括目标后台任务对应的任务运行线程;
运行状态确定模块902,用于根据任务信息确定目标后台任务的任务运行状态;
任务列表处理模块903,用于当任务运行状态为目标后台任务运行异常,且任务运行线程不是决策线程对应的目标任务运行线程时,将目标后台任务加入目标任务运行线程的任务列表,以供目标任务运行线程处理任务列表中的目标后台任务。
在一个实施例中,任务信息包括目标后台任务的任务更新时间;运行状态确定模块902,进一步用于获取决策线程对应的线程启动时间,将线程启动时间与任务更新时间之间的时间间隔,作为任务更新时间间隔;若任务更新时间间隔大于预设的时间间隔阈值,则确定任务运行状态为目标后台任务运行异常。
在一个实施例中,任务列表处理模块903,还用于当任务运行状态为目标后台任务运行异常,且任务运行线程为目标任务运行线程时,将目标后台任务从目标任务运行线程的任务列表删除,以使目标任务运行线程取消处理任务列表中的目标后台任务。
在一个实施例中,运行状态确定模块902,还用于若任务更新时间间隔小于或者等于时间间隔阈值,则确定任务运行状态为目标后台任务运行正常;任务列表处理模块903,还用于当任务运行状态为目标后台任务运行正常,且任务运行线程不是决策线程对应的目标任务运行线程时,检测目标任务运行线程的任务列表中是否携带有目标后台任务;若目标任务运行线程的任务列表中携带有目标后台任务,则将目标后台任务从目标任务运行线程的任务列表删除,以使目标任务运行线程取消处理任务列表中的目标后台任务。
在一个实施例中,任务信息还包括:目标后台任务的任务更新时间以及目标后台任务的运行断点信息;任务列表处理模块903,还用于对目标后台任务的任务更新时间,以及目标后台任务的任务运行线程进行更新,得到目标后台任务对应的更新任务信息;将更新任务信息发送至数据库,以使数据库存储更新任务信息;将目标后台任务加入目标任务运行线程的任务列表,以使目标任务运行线程根据运行断点信息处理任务列表中的目标后台任务。
在一个实施例中,运行状态确定模块902,进一步用于获取决策线程的线程启动次数;根据线程启动次数,判断决策线程是否为决策线程在其对应的任务处理服务器启动后的初次启动;若决策线程不是任务处理服务器启动后的初次启动,则根据任务信息确定目标后台任务的任务运行状态。
在一个实施例中,任务列表处理模块903,还用于若决策线程是任务处理服务器启动后的初次启动,则根据任务运行线程,从目标后台任务中筛选出任务运行线程为目标任务运行线程的本地后台任务;将本地后台任务加入目标任务运行线程的任务列表,以使目标任务运行线程处理任务列表中的本地后台任务。
关于后台任务处理装置的具体限定可以参见上文中对于后台任务处理方法的限定,在此不再赘述。上述后台任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务信息数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种后台任务处理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种后台任务处理方法,其特征在于,应用于决策线程,所述方法包括:
从数据库中获取待处理的目标后台任务的任务信息;所述任务信息包括所述目标后台任务对应的任务运行线程;
根据所述任务信息确定所述目标后台任务的任务运行状态;
当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,将所述目标后台任务加入所述目标任务运行线程的任务列表,以供所述目标任务运行线程处理所述任务列表中的目标后台任务。
2.根据权利要求1所述的方法,其特征在于,所述任务信息包括所述目标后台任务的任务更新时间;
所述根据所述任务信息确定所述目标后台任务的任务运行状态,包括:
获取所述决策线程对应的线程启动时间,将所述线程启动时间与所述任务更新时间之间的时间间隔,作为任务更新时间间隔;
若所述任务更新时间间隔大于预设的时间间隔阈值,则确定所述任务运行状态为所述目标后台任务运行异常。
3.根据权利要求2所述的方法,其特征在于,所述确定所述任务运行状态为所述目标后台任务运行异常之后,还包括:
当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程为所述目标任务运行线程时,将所述目标后台任务从所述目标任务运行线程的任务列表删除,以使所述目标任务运行线程取消处理所述任务列表中的目标后台任务。
4.根据权利要求2所述的方法,其特征在于,所述将所述线程启动时间与所述任务更新时间之间的时间间隔,作为任务更新时间间隔之后,还包括:
若所述任务更新时间间隔小于或者等于所述时间间隔阈值,则确定所述任务运行状态为所述目标后台任务运行正常;
当所述任务运行状态为所述目标后台任务运行正常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,检测所述目标任务运行线程的任务列表中是否携带有所述目标后台任务;
若所述目标任务运行线程的任务列表中携带有所述目标后台任务,则将所述目标后台任务从所述目标任务运行线程的任务列表删除,以使所述目标任务运行线程取消处理所述任务列表中的目标后台任务。
5.根据权利要求1所述的方法,其特征在于,所述任务信息还包括:所述目标后台任务的任务更新时间以及所述目标后台任务的运行断点信息;
所述将所述目标后台任务加入所述目标任务运行线程的任务列表之前,还包括:
对所述目标后台任务的任务更新时间,以及所述目标后台任务的任务运行线程进行更新,得到所述目标后台任务对应的更新任务信息;
将所述更新任务信息发送至所述数据库,以使所述数据库存储所述更新任务信息;
所述将所述目标后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程处理所述任务列表中的目标后台任务,包括:
将所述目标后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程根据所述运行断点信息处理所述任务列表中的目标后台任务。
6.根据权利要求1所述的方法,其特征在于,所述根据所述任务信息确定所述目标后台任务的任务运行状态,包括:
获取所述决策线程的线程启动次数;
根据所述线程启动次数,判断所述决策线程是否为所述决策线程在其对应的任务处理服务器启动后的初次启动;
若所述决策线程不是所述任务处理服务器启动后的初次启动,则根据所述任务信息确定所述目标后台任务的任务运行状态。
7.根据权利要求6所述的方法,其特征在于,所述判断所述决策线程是否为所述决策线程在其对应的任务处理服务器启动后的初次启动之后,还包括:
若所述决策线程是所述任务处理服务器启动后的初次启动,则根据所述任务运行线程,从目标后台任务中筛选出任务运行线程为所述目标任务运行线程的本地后台任务;
将所述本地后台任务加入所述目标任务运行线程的任务列表,以使所述目标任务运行线程处理所述任务列表中的本地后台任务。
8.一种后台任务处理装置,其特征在于,应用于决策线程,所述装置包括:
任务信息获取模块,用于从数据库中获取待处理的目标后台任务的任务信息;所述任务信息包括所述目标后台任务对应的任务运行线程;
运行状态确定模块,用于根据所述任务信息确定所述目标后台任务的任务运行状态;
任务列表处理模块,用于当所述任务运行状态为所述目标后台任务运行异常,且所述任务运行线程不是所述决策线程对应的目标任务运行线程时,将所述目标后台任务加入所述目标任务运行线程的任务列表,以供所述目标任务运行线程处理所述任务列表中的目标后台任务。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202111294195.1A 2021-11-03 2021-11-03 后台任务处理方法、装置、计算机设备和存储介质 Pending CN114020512A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111294195.1A CN114020512A (zh) 2021-11-03 2021-11-03 后台任务处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111294195.1A CN114020512A (zh) 2021-11-03 2021-11-03 后台任务处理方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN114020512A true CN114020512A (zh) 2022-02-08

Family

ID=80060265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111294195.1A Pending CN114020512A (zh) 2021-11-03 2021-11-03 后台任务处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN114020512A (zh)

Similar Documents

Publication Publication Date Title
JP4482816B2 (ja) ポリシ処理装置、方法、及び、プログラム
CN109586952B (zh) 服务器扩容方法、装置
CN107016480B (zh) 任务调度方法、装置及系统
CN107589951B (zh) 一种集群升级方法及装置
CN111190753B (zh) 分布式任务处理方法、装置、存储介质和计算机设备
US20190196965A1 (en) Garbage collection method and device
JP6411696B1 (ja) バージョン管理システムおよびバージョン管理方法
WO2022105138A1 (zh) 去中心化的任务调度方法、装置、设备及介质
CN107453932B (zh) 一种分布式存储系统管理方法及其装置
CN112613993B (zh) 交易数据处理方法、装置、计算机设备和存储介质
CN107508700B (zh) 容灾方法、装置、设备及存储介质
CN112328602B (zh) 一种数据写入Kafka的方法、装置及设备
CN111342986A (zh) 分布式节点管理方法及装置、分布式系统、存储介质
CN114020512A (zh) 后台任务处理方法、装置、计算机设备和存储介质
CN112070585A (zh) 订单状态统一管理方法、装置、计算机设备和存储介质
CN110555017A (zh) 区块链数据清理方法、装置、计算机设备和存储介质
CN107577433B (zh) 一种存储介质和文件数据的迁移方法、装置及设备
CN114564281A (zh) 容器调度方法、装置、设备及存储介质
CN116010199A (zh) 应用服务自调节方法、装置、计算机设备及存储介质
CN114675950A (zh) 任务调度方法及其装置
CN111414242B (zh) 状态机的运行方法、装置、服务器、系统和存储介质
CN111522649B (zh) 一种分布式任务分配方法、装置和系统
CN113157569A (zh) 自动化测试方法、装置、计算机设备和存储介质
CN107194247B (zh) 一种针对虚拟机回滚的软件补偿方法及系统
CN112862452A (zh) 执行工单等效方法、装置、计算机设备和存储介质

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