批量处理程序的执行方法及装置、电子设备和可存储介质与流程

文档序号:20773180发布日期:2020-05-19 20:29阅读:128来源:国知局
批量处理程序的执行方法及装置、电子设备和可存储介质与流程

本发明涉及计算机技术领域,特别是涉及一种批量处理程序的执行方法及装置、电子设备和可存储介质。



背景技术:

随着电子信息技术的不断发展,信息在网络上的流通越来越频繁,逐渐形成了大数据的信息处理方法,因此数据的发展趋势和方向也是要不断适应大数据的要求,即要求数据必须进行全集中管理。在数据全集中管理的发展趋势下,数据进行批量处理能够提高数据处理的及时性和可靠性。

相关技术中,开发人员根据不同业务数据的实际需求,对各业务实例均需要编写与所需功能对应的服务代码,不仅增加了开发人员在编写批量处理程序的工作量,而且还增加了系统的运行负荷。



技术实现要素:

本发明实施例的目的在于提供一种批量处理程序的执行方法及装置、电子设备和可存储介质,以实现降低开发人员工作量,减轻系统对批量处理程序运行负荷的效果。具体技术方案如下:

在本发明实施的第一方面,首先提供了一种批量处理程序的执行方法,所述方法包括:

获取至少一个可执行的业务实例;

分别对至少一个业务实例进行执行,在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。

在本发明实施的第二方面,还提供了一种批量处理程序的执行装置,包括:

获取模块,用于获取至少一个可执行的业务实例;

执行模块,用于分别对至少一个业务实例进行执行,在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。

在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的批量处理程序的执行方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的批量处理程序的执行方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的批量处理程序的执行方法。

本发明实施例提供的批量处理程序的执行方法,开发人员仅需要预先编写后续所有批量处理程序可能会需要用到的服务的代码,并分别封装在服务资源库中,后续分别执行各业务实例时即可利用这一个服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。这样,既降低了开发人员对服务代码编写的工作量,又相对于相关技术中对每一业务实例分别配置不同的服务集合而言减轻了系统执行批量处理程序时的运行负荷。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明一实施例提供的批量处理程序的执行方法的流程图;

图2为本发明另一实施例提供的批量处理程序的执行方法中业务实例的组成示意图;

图3为本发明另一实施例提供的批量处理程序的执行流向示意图;

图4为本发明另一实施例提供的批量处理程序中任务重启服务的工作示意图;

图5为本发明一实施例提供的批量处理程序的执行装置的结构示意图;

图6为本发明另一实施例提供的批量处理程序的执行装置的结构示意图;

图7为本发明另一实施例提供的批量处理程序的执行装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

本发明实施例提供一种批量处理程序的执行方法,如图1所示,所述方法包括:

步骤101:获取至少一个可执行的业务实例;

步骤102:分别对至少一个业务实例进行执行,在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。

本发明实施例提供的批量处理程序的执行方法,开发人员仅需要预先编写后续所有批量处理程序可能会需要用到的服务的代码,并分别封装在服务资源库中,后续分别执行各业务实例时即可利用这一个服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。这样,既降低了开发人员对服务代码编写的工作量,又相对于相关技术中对每一业务实例分别配置不同的服务集合而言减轻了系统执行批量处理程序时的运行负荷。

如图2所示,上述业务实例均为线程池批量任务的业务实例,包括业务逻辑和业务数据,其中,业务逻辑的可以采用由第三方上传业务逻辑代码至编程系统的方式,在后续运行时由系统执行代码;也可以是通过对外统一的应用程序编程接口(applicationprogramminginterface,简称api)先在编程系统进行注册,将业务逻辑代码保存在第三方,后续运行时由系统远程调用业务逻辑代码;还可以是第三方内嵌的软件开发工具包(softwaredevelopmentkit,简称sdk)根据sdk规则定义业务逻辑代码,后续运行时第三方注册到编程系统中,由系统远程调用业务逻辑代码。

业务数据包括待处理数据的标识信息,例如:待处理数据为网上商城的商品,则待处理数据的标识信息为这些商品的id集合;待处理数据为视频网站的视频,则待处理数据的标识信息为这些视频的id集合。业务数据可以支持多种数据格式,例如:js对象简谱(javascriptobjectnotation,简称json)、可扩展标记语言xml、二进制等等。

其中,业务逻辑可以复用,即相同的业务逻辑和不同的业务数据可以得到不同的业务实例。

对于业务实例的执行可以是手动执行,也可以是利用服务资源库中的服务(例如:时间调度服务)进行自动执行。

上述获取至少一项业务实例的方式可以是获取结合了业务逻辑和业务数据的业务实例代码,也可以是分别获取业务逻辑代码和业务实例代码后由批量处理程序执行装置结合得到的业务实例代码。

上述服务资源库中存储有辅助于线程池的业务实例的多项服务,每项服务均预先关联有一组服务代码,每组服务代码封装好等待业务实例执行过程中被调用。

本发明实施例中,服务资源库存储有批量处理程序所需要的多种服务,且可以通过更新的方式不断增加服务资源库中的服务。开发人员可以针对每一业务实例在服务资源库中选择业务实例所需的服务,以使业务实例在执行过程中具有相应的功能。这样,不仅降低了开发人员对于服务代码编写的工作量,而且用户在选择服务时由于能够看到服务,这样可以提醒开发人员对实际需要但是被事先遗漏的服务进行选取,提升业务实例功能的完整性。

本发明实施例中,批量处理程序执行装置执行的所有的业务实例均由服务资源库提供相应的服务,这样相对于相关技术中针对每一业务实例配置对应功能的服务集合而言,能够减少批量处理程序执行装置中重复服务的数量,减轻批量处理程序执行装置执行时的运行负荷。

可选的,如图3所示,所述服务资源库包括预处理服务、后置处理服务、任务重启服务、重复执行服务、异常跳过服务、异常重试服务、日志记录服务、结果查询服务和任务统计服务中的至少一项。

预处理服务,用于在业务逻辑执行前对业务数据进行预处理操作,例如:过滤掉业务数据中无效的数据。

后置处理服务,用于对业务逻辑执行后的数据进行处理,例如:对执行结果进行校验、排序等操作。

任务重启服务,用于在任务异常结束(比如服务器宕机)后,任务重启时检查每条记录的运行状态,如果已经执行过了就不再执行。如图4所示,任务重启服务会检查每个执行记录,在执行过程中执行1、执行2、执行4均正常执行的情况下,若执行3发生异常中断后,任务重启服务用于重启执行3。

重复执行服务,用于在需要对业务实例进行重复多次执行的情况,将前一次执行的结果作为下一次执行的初始值,按照设计的重复次数进行多次重复的执行。

异常跳过服务,用于在运行发生异常时,跳过该异常记录并执行下一条记录。例如:业务实例用于批量处理1000条数据,在执行到第100条时有一条错误,那么记录异常日志跳过,执行以后的任务;最后得到成功999条、失败1条的结果。

异常重试服务,如图4所示,用于在运行发生异常时,结束该异常记录并重新进行执行(即在上述例子中第100条异常后,重新尝试执行第100条),重试的次数可以通过开发人员针对异常重试服务输入的重试次数进行确定,上述重试次数即属于开发人员针对异常重试服务输入的参数信息。

上述运行发生异常的情况可能是网络状态差、接口幂等等情况,此处仅为举例说明。

日志记录服务,用于在逻辑实例执行过程中记录每一条任务的状态。

结果查询服务,用于利用日志记录服务查询任务的执行情况,例如:任务执行开始时间/结束时间、任务执行id集合、每个id执行开始/执行时间、执行结果(成功/失败)、失败原因等等。

任务统计服务,用于利用日志记录服务统计记录执行成功次数、执行失败次数、最长执行时间、最短执行时间、最常见异常问题等。

另外,如图3所示,所述服务资源库还可以包括时间调度服务和分区调度服务中的至少一项。

时间调度服务,用于满足开发人员对执行时间的需求,例如:运维系统每天定时执行业务实例以发送运维报告邮件,每天定时执行业务实例以更新多个视频。本实施例中,时间调度支持cron表达式,实现方式比较多,比如quartz。

分区调度服务,用于在业务实例的数据量过大,单个分区无法满足执行要求的情况下,对业务实例代码拆分为多组子代码,且使每组子代码并行执行。分区调度服务可以是系统自动进行的,也可以是由开发人员选择并输出参数信息设定,即自定义进行。

在一可选的实施方式中,所述至少一项服务包括日志记录服务和结果查询服务;

所述在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能的步骤,包括:

记录第一业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第一业务实例为所述至少一个可执行的业务实例中的任一业务实例;

若接收到针对所述第一业务实例的查询请求,则反馈所述日志中与所述第一业务实例对应的记录信息,所述记录信息包括任务开始时间、任务结束时间、任务关联的标识信息集合和任务的执行结果中的至少一项。

本实施方式中,第一业务实例为开发人员配置有日志服务和结果查询服务的业务实例。在第一业务实例执行过程中,通过日志服务在日志中记录了第一业务实例在执行过程中每一条任务的状态。

后续在开发人员想要获知批量处理程序执行的结果时,可以发送针对所述第一业务实例的查询请求,批量处理程序执行装置接收到针对所述第一业务实例的查询请求后,反馈之前记录在日志中的与所述第一业务实例对应的记录信息,所述记录信息包括任务开始时间、任务结束时间、任务关联的标识信息集合和任务的执行结果中的至少一项。

本实施方式中,开发人员只需在执行业务实例前在服务资源库中预先为第一业务实例选择日志记录服务和结果查询服务,开发人员无需再进行服务代码的编写,既能够基于日志中记录的内容得到第一业务实例的执行结果。

在另一可选的实施方式中,所述至少一项服务包括日志记录服务和任务统计服务;

所述在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能的步骤,包括:

记录第二业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第二业务实例为所述至少一个可执行的业务实例中的任一业务实例;

在所述第二业务实例执行完成后,若接收到针对目标业务实例的统计请求,则对所述日志中与所述第二业务实例对应的记录信息进行统计,得到第二业务实例的统计信息;

反馈所述第二业务实例的统计信息,所述统计信息包括任务执行成功数、任务执行失败数、单个任务执行最长时长、单个任务执行最短时长、总执行时长和异常集合中的至少一项。

本实施方式中,第二业务实例为开发人员配置有日志服务和任务统计服务的业务实例。在第二业务实例执行过程中,通过日志服务在日志中记录了第二业务实例在执行过程中每一条任务的状态。

若接收到针对所述第二业务实例的统计请求,则首先筛选出与第二业务实例相关的记录;之后,对这些记录进行数据统计,得到第二业务实例的统计信息。所述统计信息包括任务执行成功数、任务执行失败数、单个任务执行最长时长、单个任务执行最短时长、总执行时长和异常集合中的至少一项;最后,反馈所述第二业务实例的统计信息。

本实施方式中,开发人员只需在执行业务实例前在服务资源库中预先为第二业务实例选择日志记录服务和任务统计服务,开发人员无需再进行服务代码的编写,既能够在第二业务实例执行结束后,基于日志中记录的内容得到第二业务实例的统计信息。

在另一可选的实施方式中,所述分别对所述至少一个业务实例进行执行的步骤,包括:

接收时间调度指令,所述时间调度指令包括与所述至少一个业务实例一一对应的至少一个执行时间点;

在目标执行时间点执行与所述目标执行时间点对应的业务实例,所述目标执行时间点为所述至少一个执行时间点中的任一执行时间点。

开发人员能够通过发送时间调度指令对时间调度服务设定对应业务实例的执行时间点,其中,可以是对全部的业务实例一一对应设定执行时间点,也可以是对部分业务实例设定执行时间点,此处不作限定。

在达到一执行时间点时,时间调度服务会发起与该执行时间点对应的业务实例的执行,实现在执行时间点执行业务实例的效果。

本实施方式中,开发人员只需在执行业务实例前在服务资源库中预先为业务实例选择时间调度服务,开发人员无需再进行服务代码的编写,既能够使业务实例在想要的时间点开始执行。

需要说明的是,上述只是对个别情况的举例说明,应当认为服务资源库中的至少一项服务可以相互结合为业务实例提供对应的功能,不仅只是上述举例的这些情况。

如图5所示,本发明实施例还提供一种批量处理程序的执行装置500,包括:

获取模块510,用于获取至少一个可执行的业务实例;

执行模块520,用于分别对至少一个业务实例进行执行,在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。

可选的,所述至少一项服务包括日志记录服务和结果查询服务;

所示执行模块520,用于记录第一业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第一业务实例为所述至少一个可执行的业务实例中的任一业务实例;若接收到针对所述第一业务实例的查询请求,则反馈所述日志中与所述第一业务实例对应的记录信息,所述记录信息包括任务开始时间、任务结束时间、任务关联的标识信息集合和任务的执行结果中的至少一项。

可选的,所述至少一项服务包括日志记录服务和任务统计服务;

所示执行模块520,用于记录第二业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第二业务实例为所述至少一个可执行的业务实例中的任一业务实例;在所述第二业务实例执行完成后,若接收到针对目标业务实例的统计请求,则对所述日志中与所述第二业务实例对应的记录信息进行统计,得到第二业务实例的统计信息;反馈所述第二业务实例的统计信息,所述统计信息包括任务执行成功数、任务执行失败数、单个任务执行最长时长、单个任务执行最短时长、总执行时长和异常集合中的至少一项。

可选的,如图6所示,所示执行模块520,包括:

接收单元521,用于接收时间调度指令,所述时间调度指令包括与所述至少一个业务实例一一对应的至少一个执行时间点;

执行单元522,用于在目标执行时间点执行与所述目标执行时间点对应的业务实例,所述目标执行时间点为所述至少一个执行时间点中的任一执行时间点。

发明实施例的批量处理程序的执行装置500能够实现图1至图4的方法实施例中批量处理程序的执行方法实现的各个过程,为避免重复,这里不再赘述。

本发明实施例的批量处理程序的执行装置500,能够降低开发人员的工作难度和工作量,提高批量处理程序的执行效率。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:

获取至少一个可执行的业务实例;

分别对所述至少一个业务实例进行执行,在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能。

可选的,所述服务资源库包括预处理服务、后置处理服务、任务重启服务、重复执行服务、异常跳过服务、异常重试服务、日志记录服务、结果查询服务和任务统计服务中的至少一项。

可选的,所述至少一项服务包括日志记录服务和结果查询服务;

所述在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能的步骤,包括:

记录第一业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第一业务实例为所述至少一个可执行的业务实例中的任一业务实例;

若接收到针对所述第一业务实例的查询请求,则反馈所述日志中与所述第一业务实例对应的记录信息,所述记录信息包括任务开始时间、任务结束时间、任务关联的标识信息集合和任务的执行结果中的至少一项。

可选的,所述至少一项服务包括日志记录服务和任务统计服务;

所述在每一个业务实例执行过程中利用同一服务资源库中的至少一项服务为各业务实例提供与所述至少一项服务对应的功能的步骤,包括:

记录第二业务实例在执行过程中每一条任务的运行状态,并存储于日志,所述第二业务实例为所述至少一个可执行的业务实例中的任一业务实例;

在所述第二业务实例执行完成后,若接收到针对目标业务实例的统计请求,则对所述日志中与所述第二业务实例对应的记录信息进行统计,得到第二业务实例的统计信息;

反馈所述第二业务实例的统计信息,所述统计信息包括任务执行成功数、任务执行失败数、单个任务执行最长时长、单个任务执行最短时长、总执行时长和异常集合中的至少一项。

可选的,所述分别对所述至少一个业务实例进行执行的步骤,包括:

接收时间调度指令,所述时间调度指令包括与所述至少一个业务实例一一对应的至少一个执行时间点;

在目标执行时间点执行与所述目标执行时间点对应的业务实例,所述目标执行时间点为所述至少一个执行时间点中的任一执行时间点。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的批量处理程序的执行方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的批量处理程序的执行方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1