一种任务补偿方法、装置、电子设备及可读存储介质
文献发布时间:2023-06-19 12:02:28
技术领域
本申请涉及业务系统技术领域,特别涉及一种任务补偿方法、任务补偿装置、电子设备及计算机可读存储介质。
背景技术
业务系统在运行过程中,可能存在部分任务逻辑无法正常运行或无法正常结束的情况发生,在这种情况下,为了保证业务系统正常工作,需要重新执行这些异常的任务,即进行任务补偿。相关技术通常设置有调度中心,各个服务器将异常任务发送至调度中心,由调度中心利用触发器对异常任务进行触发执行。然而,利用调度中心进行任务补偿的方式过度依赖调度中心,调度中心出现故障则会导致大量异常业务无法被补偿执行的问题,使得业务系统的鲁棒性较差。
发明内容
有鉴于此,本申请的目的在于提供一种任务补偿方法、任务补偿装置、电子设备及可读存储介质,利用各个作为备份机和本机的服务器互为备份,使得单个服务器的异常并不会导致所有异常任务补偿失败,提高了业务系统的鲁棒性。
为解决上述技术问题,第一方面,本申请提供了一种任务补偿方法,具体包括:
若检测到异常任务,则对所述异常任务进行实例化处理,得到目标实例对象;
将所述目标实例对象放入任务队列;
从备份机列表中获取目标备份机信息,并利用所述目标备份机信息确定目标备份机;
向所述目标备份机发送异常任务信息,以便所述目标备份机根据所述异常任务信息,从所述任务队列中获取所述目标实例对象,并利用所述目标实例对象重新执行所述异常任务并反馈执行结果。
在一种可行的实施方式中,还包括:
若接收到目标服务器发送的目标任务信息,则利用所述目标任务信息从所述任务队列中获取目标对象;
利用所述目标任务信息,从任务补偿数据库表中获取目标任务对应的类名信息和参数信息;
利用所述类名信息、所述参数信息和所述目标对象重新执行所述目标任务,得到目标执行结果;
向所述目标执行结果反馈至所述目标服务器。
在一种可行的实施方式中,所述利用所述类名信息、所述参数信息和所述目标对象重新执行所述目标任务,得到目标执行结果,包括:
利用所述类名信息、所述参数信息和所述目标对象重新执行所述目标任务,得到初始执行结果;
判断所述初始执行结果是否为合法结果;
若为所述合法结果,则将所述初始执行结果确定为所述目标执行结果;
若不为所述合法结果,则将所述目标任务确定为异常任务。
在一种可行的实施方式中,还包括:
根据所述目标任务的执行情况,在所述任务补偿数据库表中修改所述目标任务对应的目标数据项;所述目标数据项包括任务状态、执行次数、原始服务器信息。
在一种可行的实施方式中,所述备份机列表的生成过程,包括:
获取初始备份机列表,并测试所述初始备份机列表中的各个候选备份机之间的网络连通性;
利用与所有其他候选备份机均连通的目标候选备份机构成所述备份机列表;
若检测到所述备份机列表中存在两个所述目标候选备份机之间的目标网络连接断开,则将所述目标网络连接对应的所述目标候选备份机从所述备份机列表中删除。
在一种可行的实施方式中,还包括:
若检测到所述目标网络连接断开,则建立守护线程;
判断所述目标网络连接是否恢复;
若所述目标网络连接恢复,则将所述目标网络连接对应的所述目标候选备份机加入所述备份机列表;
若所述目标网络连接未恢复,则按照预设恢复频率利用所述守护线程恢复所述目标网络连接。
在一种可行的实施方式中,所述向所述目标备份机发送异常任务信息,包括:
将所述目标备份机确定为客户端,并将所述客户端放入全局单例对象集合;
根据业务系统服务端口建立与所述目标备份机之间的远程方法调用服务;
通过所述远程方法调用服务向所述目标备份机发送所述异常任务信息。
第二方面,本申请提供了一种任务补偿装置,包括:
实例化模块,用于若检测到异常任务,则对所述异常任务进行实例化处理,得到目标实例对象;
队列填充模块,用于将所述目标实例对象放入任务队列;
目标备份机确定模块,用于从备份机列表中获取目标备份机信息,并利用所述目标备份机信息确定目标备份机;
任务补偿模块,用于向所述目标备份机发送异常任务信息,以便所述目标备份机根据所述异常任务信息,从所述任务队列中获取所述目标实例对象,并利用所述目标实例对象重新执行所述异常任务并反馈执行结果。
第三方面,本申请提供了一种电子设备,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现上述的任务补偿方法。
第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的任务补偿方法。
本申请提供的任务补偿方法,若检测到异常任务,则对异常任务进行实例化处理,得到目标实例对象;将目标实例对象放入任务队列;从备份机列表中获取目标备份机信息,并利用目标备份机信息确定目标备份机;向目标备份机发送异常任务信息,以便目标备份机根据异常任务信息,从任务队列中获取目标实例对象,并利用目标实例对象重新执行异常任务并反馈执行结果。
可见,该方法并不利用统一的调度中心对异常任务进行补偿,而是构建有备份机列表,其中记录了至少两个备份机对应的备份机信息。在检测到出现异常任务后,将其进行实例化得到目标实例对象,并将其放入任务队列,以便后续备份机利用该目标实例对象重新执行异常任务。同时,还可以从备份机列表中获取目标备份机信息,目标备份机信息是指用于执行本次任务补偿的备份机对应的信息,利用目标备份机信息可以确定目标备份机。通过发送异常任务信息,可以在目标备份机利用该异常任务信息获取目标实例对象,并执行异常任务,在这种情况下,异常任务成为了目标备份机上的方法,而本机可以得到目标备份机反馈的执行结果。由于并不是由调度中心来执行任务补偿,而是从备份机列表对应的若干个备份机中根据当前情况选择目标备份机,因此实现了去中心化的效果,各个作为备份机和本机的服务器互为备份,使得单个服务器的异常并不会导致所有异常任务补偿失败,提高了业务系统的鲁棒性,解决了相关技术存在的业务系统鲁棒性较差的问题。此外,通过该方法,可以无需对业务系统的原始代码进行配置或执行代码侵入以实现任务补偿,降低了接入标准和对业务代码的侵入性。
此外,本申请还提供了一种任务补偿装置、电子设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种任务补偿方法流程图;
图2为本申请实施例提供的另一种任务补偿方法流程图;
图3为本申请实施例提供的一种任务补偿装置的结构示意图;
图4为本申请实施例提供的一种任务补偿方法所适用的一种硬件组成框架示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术在对异常任务进行重新执行时,即进行任务补偿时,会采用分布式定时任务的方式进行。整个过程包括如下步骤:
1、当检测到异常任务时,定义异常任务对应的补偿任务处理器。
2、将定义好的补偿任务处理器注册到调度中心,注册过程包括补偿频率的配置。
3、调度中心建立针对上述补偿任务处理器的触发器。
4、启动计时器,按照步骤2中定义的补偿频率触发触发器。
5、触发器再被触发后调用任务处理器,任务处理器调用任务的具体实现类执行任务。
6、当任务正常完成时,修改任务状态使之不会被重复触发,否则重复步骤4-6。
由此可见,整个任务补偿过程严重依赖调度中心,调度中心负责重新执行所有异常任务。当调度中心出现故障等异常时,所有异常任务的补偿全部失败,使得业务系统的鲁棒性较差。同时,为了实现上述步骤,还需要在正常的业务系统中进行配置和代码侵入,使得对业务系统的代码侵入性较高。此外,调度中心在物理上通常与业务系统的服务器等设备距离较远,例如通常跨机房部署,这使得任务补偿的过程容易受到网络状态的影响。
为了解决上述问题,本申请提供了一种任务补偿方法。请参考图1,图1为本申请实施例提供的一种任务补偿方法流程图。该方法包括:
S101:若检测到异常任务,则对异常任务进行实例化处理,得到目标实例对象。
其中,异常任务为没有正常结束的任务(或者成为逻辑),或者为执行结果不是正常结果的任务,其具体类型、数量等不做限定。异常任务可以为原本就在当前服务器上执行的任务,或者可以为在其他服务器上无法正常执行而在当前服务器进行任务补偿时也无法正常执行的任务。当前服务器是指执行本申请中全部或部分步骤的服务器,在本实施例中,其身份为本机,本机是指调用其他服务器作为备份机的服务器。
本实施例并不限定对异常任务的具体检测方式,在一种实施方式中,可以将任务执行结果与预设合法结果进行比对,当二者不一致时确定该任务为异常任务;在另一种实施方式中,可以将执行时长大于预设时长的任务确定为异常任务。
在检测到异常任务后,可以对其进行实例化处理,得到对应的对象,即目标实例对象。实例化是指在面向对象编程的过程中,利用类创建对象的过程,而目标实例对象则为利用异常任务的类创建得到的对象。本实施例并不限定实例化处理的方式,在一种具体的实施方式中,可以预先设置有空白对象,在进行实例化处理时,将异常任务对应的某些信息(例如身份信息)写入空白对象中,即可得到对应的目标实例对象。根据实例化处理方式的不同,实例化处理的过程也可以不同,具体方式和过程可以参考相关技术,本实施例再次不做赘述。
S102:将目标实例对象放入任务队列。
任务队列是指用于存放任务对应的对象的队列,在一种实施方式中,其中可以放置有正常等待执行的任务对应的对象和需要被补偿的任务(即异常任务)对应的对象。在得到目标实例对象后,通过将其填充至任务队列,可以在后续允许备份机从任务队列中获取目标实例对象,进而利用其对重新异常任务。
S103:从备份机列表中获取目标备份机信息,并利用目标备份机信息确定目标备份机。
备份机列表是指用于记录各个备份机对应的备份机信息的列表,其中记录的备份机信息的数量不做限定。备份机列表可以为全局列表,即业务系统中的所有服务器在需要进行任务补偿时均可以利用该备份机列表确定需要的备份机。在另一种实施方式中,备份机列表可以分别与各个服务器相对应,即每个服务器分别构建自身对应的备份机列表,在需要进行任务补偿时,利用自身的备份机列表确定目标备份机。
备份机信息是指能够表征备份机身份的信息,其可以为IP地址(即InternetProtocol Address,网际协议地址)形式,或者可以为其他形式,例如服务器编号,服务器硬件地址(即MAC地址,Media Access Control Address)等。目标备份机信息是指备份机列表中指定的一个备份机信息,其具体不做限定,例如可以列表中第一个备份机信息,或者可以为最后一个备份机信息,或者可以为中间某一固定序号对应的备份机信息。需要说明的是,为了使得任务补偿的工作能够尽可能地分布在最多的服务器上,因此在每次选择目标备份机信息后,需要对备份机列表进行更新,以便当再次出现异常任务时利用另一个服务器进行任务补偿。根据获取目标备份机信息的方式的不同,备份机列表的更新方式也可以不同,例如当目标备份机信息为列表中第一个备份机信息时,更新方式可以为将该目标备份机信息放置到备份机列表的最后一个位置,并将其他备份机信息的序号依次向前更新一位。
由于备份机信息与备份机一一对应,因此在得到目标备份机信息后,即可利用其确定对应的目标备份机。
S104:向目标备份机发送异常任务信息,以便目标备份机根据异常任务信息,从任务队列中获取目标实例对象,并利用目标实例对象重新执行异常任务并反馈执行结果。
异常任务信息是指异常任务对应的信息,其可以表征异常任务的身份。异常任务信息可以为任务ID(identification,身份信息)等序号信息,或者可以为任务名称等信息。在确定目标备份机后,可以通过本机与目标备份机之间的网络连接向其发送异常任务信息。本实施例并不限定发送异常任务信息的具体方式,在一种实施方式中,可以利用远程方法调用服务的方式发送调用请求,在调用请求中包括异常任务信息,并控制目标备份机执行任务补偿。其中,远程方法调用服务即Remote Method Invocation,RMI服务,RMI服务支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。需要说明的是,在利用RMI服务调用目标备份机进行任务补偿前,需要对本机与目标备份机之间的RMI服务进行初始化,具体的初始化过程可以参考相关技术,再次不做赘述。
在将异常任务信息发送至目标备份机后,目标备份机可以从任务队列中获取目标实例对象,以便利用目标实例对象重新执行异常任务,并在执行完毕后反馈任务结果给本机。需要说明的是,本实施例并不限定是否还需要其他数据用于对异常任务进行重新执行,例如在一种实施方式中,还需要获取异常任务的类名信息、方法入参等数据。
对于目标备份机对异常任务的具体执行过程,在一种实施方式中,当利用RMI服务进行任务补偿时,目标备份机在接受到本机发送的调用请求后,通过反射的方式获取对应的执行类和执行方法,并调用(即invoke)对应的方法,得到执行结果。在得到执行结果后,目标备份机可以直接将执行结果反馈给本机,或者可以先判断执行结果是否正常,并在得到正常的执行结果时将其反馈给本机。
应用本申请实施例提供的任务补偿方法,并不利用统一的调度中心对异常任务进行补偿,而是构建有备份机列表,其中记录了至少两个备份机对应的备份机信息。在检测到出现异常任务后,将其进行实例化得到目标实例对象,并将其放入任务队列,以便后续备份机利用该目标实例对象重新执行异常任务。同时,还可以从备份机列表中获取目标备份机信息,目标备份机信息是指用于执行本次任务补偿的备份机对应的信息,利用目标备份机信息可以确定目标备份机。通过发送异常任务信息,可以在目标备份机利用该异常任务信息获取目标实例对象,并执行异常任务,在这种情况下,异常任务成为了目标备份机上的方法,而本机可以得到目标备份机反馈的执行结果。由于并不是由调度中心来执行任务补偿,而是从备份机列表对应的若干个备份机中根据当前情况选择目标备份机,因此实现了去中心化的效果,各个作为备份机和本机的服务器互为备份,使得单个服务器的异常并不会导致所有异常任务补偿失败,提高了业务系统的鲁棒性,解决了相关技术存在的业务系统鲁棒性较差的问题。此外,通过该方法,可以无需对业务系统的原始代码进行配置或执行代码侵入以实现任务补偿,降低了接入标准和对业务代码的侵入性。
基于上述实施例,本实施例将对上述实施例中的若干步骤进行具体阐述。其中,为了保证任务执行结果的可靠性,防止出现异常任务被并发执行导致的执行结果不一致、不可靠的问题。向目标备份机发送异常任务信息的过程具体可以包括如下步骤:
步骤11:将目标备份机确定为客户端,并将客户端放入全局单例对象集合。
在确定目标备份机后,将其确定为客户端,并将其加入全局单例对象集合。全局单例对象集合是指用于存放单例对象的集合,将客户端作为单例对象,可以将各个异常任务与对应的备份机单独一一对应起来,防止出现并发情况。本实施例并不限定将客户端放入全局单例对象集合的具体方式,具体可以参考相关技术,在此不做赘述。
步骤12:根据业务系统服务端口建立与目标备份机之间的远程方法调用服务。
步骤13:通过远程方法调用服务向目标备份机发送异常任务信息。
其中,远程方法效用服务即为RMI服务,建立远程方法调用服务的过程即为对本机和目标备份机之间的RMI服务进行初始化的过程,具体初始化过程不做限定。例如可以获取业务系统对应的服务端口,利用该服务端口进行RMI服务初始化操作。
进一步的,基于上述实施例,可以理解的是,在利用备份机列表确定目标备份机之前,需要先生成准确的备份机列表,而采用全局的备份机列表能够使得任务补偿更加平均地分布在各个备份机上,因此备份机列表的生成过程可以包括如下步骤:
步骤21:获取初始备份机列表,并测试初始备份机列表中的各个候选备份机之间的网络连通性。
初始备份机列表中记录了多个候选备份机对应的备份机信息,候选备份机是指能够作为备份机的服务器,其具体可以为业务系统中的所有服务器,或者可以为其中的部分服务器。由于作为备份机的服务器同时还可以作为本机,通过调用其他服务器,将自身运行异常的异常任务进行补偿,因此需要保证所有备份机任意两个之间的网络均连通。故此,在获取初始备份机列表后,测试其中的各个候选备份机之间的网络连通性,根据测试结果选择备份机。本实施例并不限定网络连通性的具体测试方式,例如可以利用网报探测工具对任意两个候选备份机之间的网络联通状况进行测试。
步骤22:利用与所有其他候选备份机均连通的目标候选备份机构成备份机列表。
在测试得到测试结果后,将与所有其他候选备份机之间的网络均连通的目标候选备份机确定为备份机,并利用其构成备份机列表,具体的,对各个目标候选备份机的备份机信息进行编号,并按照编号对各个备份机信息进行排序,得到对应的备份机列表。
步骤23:若检测到备份机列表中存在两个目标候选备份机之间的目标网络连接断开,则将目标网络连接对应的目标候选备份机从备份机列表中删除。
需要说明的是,当备份机列表为全局列表时,其中记录的各个服务器在业务系统运行时同样为本机,各个服务器之间相互可以为备份机。在构建备份机列表后,还可以继续检测各个目标候选备份机之间的网络连接,判断其是否断开,并在检测到任意两个目标候选备份机之间的目标网络连接断开时,将涉及到目标网络连接的目标候选备份机从备份机列表中删除,即将其对应的备份机信息从备份机列表中删除。通过将目标网络连接(即断开的网络连接)涉及到的目标候选备份机删除,可以保证备份机列表对应的任意一个备份机在作为本机时,可以调用备份机列表中记录的任意一个另外的目标候选备份机作为备份机。
本实施例并不限定目标网络连接的具体数量,当目标网络连接的数量为多个时,其分别对应于不同的目标候选备份机。
进一步的,为了保证备份机列表对应的服务器的数量,在发生目标网络连接断开的情况后,还可以尝试对其进行恢复,并在断开的网络连接被恢复时将涉及到的目标候选备份机重新加入备份机列表。具体的,还可以包括如下步骤:
步骤31:若检测到目标网络连接断开,则建立守护线程。
其中,守护线程能够在后台运行,并能够守护所有的非守护线程,只要还有任何一个非守护线程没有结束,守护线程就全部工作。建立守护线程,可以利用其尝试对目标网络连接进行恢复。
步骤32:判断目标网络连接是否恢复。
步骤33:若目标网络连接恢复,则将目标网络连接对应的目标候选备份机加入备份机列表。
若目标网络连接被恢复,则说明目标网络连接设计的目标候选备份机之间可以传输数据,二者可以为主机和备份机的关系,因此可以将其重新加入备份机列表。
步骤34:若目标网络连接未恢复,则按照预设恢复频率利用守护线程恢复目标网络连接。
预设恢复频率是指守护线程尝试恢复目标网络连接的频率,其具体大小不做限定,当确定目标网络连接未恢复时,可以在满足预设恢复频率的时间点处利用守护线程尝试恢复目标网络连接。
基于上述实施例,在实际应用中,执行S101至S104步骤的本机也可以作为其他服务器的备份机被调用。具体请参考图2,图2为本申请实施例提供的另一种任务补偿方法流程图,包括:
S201:若接收到目标服务器发送的目标任务信息,则利用目标任务信息从任务队列中获取目标对象。
目标服务器是指调用当前服务器的另一服务器,在本实施例中,当前服务器为接受调用的备份机,而目标服务器为本机。可以理解的是,若采用RMI服务获取目标服务器发送的目标任务信息,则在获取目标任务信息之前,需要建立与目标服务器之间的RMI服务。
在得到目标任务信息后,可以利用其从任务队列中获取对应的对象,即目标对象。目标对象为目标服务器对目标任务进行实例化处理后得到的对象。
S202:利用目标任务信息,从任务补偿数据库表中获取目标任务对应的类名信息和参数信息。
任务补偿数据库表是指记录业务系统中各个任务的信息及执行情况的数据库表,其具体为覆盖整个业务系统各个服务器的全局表。在本实施例中,任务补偿数据库表里至少包括有目标任务信息以及与其对应的类名信息(即classname)和参数信息(即方法入参),除此以外,还可以包括其他数据项。在一种可行的实施方式中,任务补偿数据库表可以为以下形式:
其中,Job_id是指用来唯一标识当前任务的序列号,即上述的目标任务信息;Job_params是指当前任务的方法入参,即参数信息,以jsonStr的格式存储;Job_excutor是指目标方法的className,即类名信息;Status是指任务状态,其中,1表示任务新建,2表示正在执行,3表示执行成功,4表示执行失败;Limit是指当前任务的补偿次数的上限阈值;Target_domain是指当前任务最初所属的服务器ip(即原始服务器信息);Times是指当前任务已被重试(即已经被补偿执行)的次数;create_date是指当前任务的创建时间;
modify_date是指当前任务的修改时间。
在得到目标任务信息后,可以利用其对任务补偿数据库表进行筛选,得到对应的类名信息和参数信息。类名信息和参数信息为执行目标任务所必须的数据,其具体内容和数量不做限定。在本实施例中,其通过任务补偿数据库表获取,在另外的实施方式中,其可以通过其他方式获取。
S203:利用类名信息、参数信息和目标对象重新执行目标任务,得到目标执行结果。
S204:向目标执行结果反馈至目标服务器。
在得到类名信息、参数信息和目标对象后,利用其重新执行目标任务,目标任务的具体执行方式不做限定,根据目标任务的不同,其具体执行过程也可以不同。在得到目标执行结果后,可以将目标执行结果反馈至目标服务器。
在一种实施方式中,在得到目标执行结果后可以直接将其反馈至目标服务器,在另一种实施方式中,可以对目标执行结果进行合法检测。具体的,利用类名信息、参数信息和目标对象重新执行目标任务,得到目标执行结果,包括:
步骤41:利用类名信息、参数信息和目标对象重新执行目标任务,得到初始执行结果。
步骤42:判断初始执行结果是否为合法结果。
在本实施例中,利用类名信息、参数信息和目标对象重新执行目标任务后,直接得到的结果为初始执行结果。在得到初始执行结果后,判断其是否合法,即初始执行结果是否为合法结果。对于具体的判断方法,在一种可行的实施方式中,可以判断初始执行结果与预设结果是否匹配,若匹配则确定为合法结果。
步骤43:若为合法结果,则将初始执行结果确定为目标执行结果。
步骤44:若不为合法结果,则将目标任务确定为异常任务。
若初始执行结果为合法结果,则将其确定为目标执行结果,直接反馈给目标服务器。若初始执行结果不为合法结果,在其他实施方式中,同样可以反馈给目标服务器,由目标服务器再次确定目标备份机并进行任务补偿。在本实施例中,为了提高任务补偿的速度,减少计算资源的浪费,可以将其确定为异常任务,并直接利用当前服务器调用备份机对目标任务进行任务补偿。当当前服务器获取到对应的目标执行结果后,再将目标执行结果转发至目标服务器。
进一步的,在一种实施方式中,任务补偿数据库表中记录了任务状态等数据项。由于任务补偿数据库表为全局表,任何服务器均可以对其进行修改等操作,因此为了及时更新任务补偿数据库表,可以根据目标任务的执行情况直接更新目标任务对应的目标数据项,无需目标服务器对目标数据项进行修改。具体的,还可以包括如下步骤。
步骤51:根据目标任务的执行情况,在任务补偿数据库表中修改目标任务对应的目标数据项。
在本实施例中,目标数据项包括任务状态、执行次数、原始服务器信息,除此以外,还可以包括其他信息,具体可以参考上述对任务补偿数据库表的描述。目标任务的执行情况可以为正在执行、执行成功或执行失败,根据其执行情况,当前服务器可以直接对其对应的目标数据项进行修改,无需由目标服务器进行修改,提高了数据库表中信息的更新效率和速度。
下面对本申请实施例提供的任务补偿装置进行介绍,下文描述的任务补偿装置与上文描述的任务补偿方法可相互对应参照。
请参考图3,图3为本申请实施例提供的一种任务补偿装置的结构示意图,包括:
实例化模块110,用于若检测到异常任务,则对异常任务进行实例化处理,得到目标实例对象;
队列填充模块120,用于将目标实例对象放入任务队列;
目标备份机确定模块130,用于从备份机列表中获取目标备份机信息,并利用目标备份机信息确定目标备份机;
任务补偿模块140,用于向目标备份机发送异常任务信息,以便目标备份机根据异常任务信息,从任务队列中获取目标实例对象,并利用目标实例对象重新执行异常任务并反馈执行结果。
可选地,还包括:
信息获取模块,用于若接收到目标服务器发送的目标任务信息,则利用目标任务信息从任务队列中获取目标对象;
表读取模块,用于利用目标任务信息,从任务补偿数据库表中获取目标任务对应的类名信息和参数信息;
执行模块,用于利用类名信息、参数信息和目标对象重新执行目标任务,得到目标执行结果;
反馈模块,用于向目标执行结果反馈至目标服务器。
可选地,执行模块,包括:
初始执行单元,用于利用类名信息、参数信息和目标对象重新执行目标任务,得到初始执行结果;
合法判断单元,用于判断初始执行结果是否为合法结果;
第一确定单元,用于若为合法结果,则将初始执行结果确定为目标执行结果;
第二确定单元,用于若不为合法结果,则将目标任务确定为异常任务。
可选地,还包括:
表修改模块,用于根据目标任务的执行情况,在任务补偿数据库表中修改目标任务对应的目标数据项;目标数据项包括任务状态、执行次数、原始服务器信息。
可选地,包括:
网络测试模块,用于获取初始备份机列表,并测试初始备份机列表中的各个候选备份机之间的网络连通性;
列表构建模块,用于利用与所有其他候选备份机均连通的目标候选备份机构成备份机列表;
删除模块,用于若检测到备份机列表中存在两个目标候选备份机之间的目标网络连接断开,则将目标网络连接对应的目标候选备份机从备份机列表中删除。
可选地,还包括:
线程建立模块,用于若检测到目标网络连接断开,则建立守护线程;
恢复判断模块,用于判断目标网络连接是否恢复;
加入模块,用于若目标网络连接恢复,则将目标网络连接对应的目标候选备份机加入备份机列表;
尝试恢复模块,用于若目标网络连接未恢复,则按照预设恢复频率利用守护线程恢复目标网络连接。
可选地,任务补偿模块140,包括:
单例处理单元,用于将目标备份机确定为客户端,并将客户端放入全局单例对象集合;
服务建立单元,用于根据业务系统服务端口建立与目标备份机之间的远程方法调用服务;
信息发送单元,用于通过远程方法调用服务向目标备份机发送异常任务信息。
下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的任务补偿方法可相互对应参照。
请参考图4,图4为本申请实施例提供的一种任务补偿方法所适用的一种硬件组成框架示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(I/O)接口104以及通信组件105中的一种或多种。
其中,处理器101用于控制电子设备100的整体操作,以完成上述的任务补偿方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-OnlyMemory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。在本实施例中,存储器102中至少存储有用于实现以下功能的程序和/或数据:
若检测到异常任务,则对所述异常任务进行实例化处理,得到目标实例对象;
将所述目标实例对象放入任务队列;
从备份机列表中获取目标备份机信息,并利用所述目标备份机信息确定目标备份机;
向所述目标备份机发送异常任务信息,以便所述目标备份机根据所述异常任务信息,从所述任务队列中获取所述目标实例对象,并利用所述目标实例对象重新执行所述异常任务并反馈执行结果。
多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi部件,蓝牙部件,NFC部件。
电子设备100可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的任务补偿方法。
当然,图4所示的电子设备100的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备100可以包括比图4所示的更多或更少的部件,或者组合某些部件。
下面对本申请实施例提供的可读存储介质进行介绍,下文描述的可读存储介质与上文描述的任务补偿方法可相互对应参照。
本申请还提供一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的任务补偿方法的步骤。
该可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
- 一种任务补偿方法、装置、电子设备及可读存储介质
- 一种任务处理方法、装置、电子设备及可读存储介质