一种批处理控制方法及装置的制造方法
【技术领域】
[0001]本发明属于数据批处理领域,尤其涉及一种批处理控制方法及装置。
【背景技术】
[0002]批处理是指在预置时段内批量处理大数据,以日终批处理为例,通常是指以天(24小时)为周期,在日终时段批量处理大数据。批处理一般以批处理触发器为批处理服务的统一入口,通过调用相应的批处理服务实现所需的大数据处理。
[0003]目前的批处理触发器功能较为单一,仅提供简单的批处理服务入口功能。从而导致技术人员在开发批处理服务时,除了需关心批处理服务的业务逻辑实现,还需关心批处理相关控制过程的技术实现,比如批处理事务控制(如事务提交)的技术实现、批处理多线程并发控制的技术实现等等,进而导致批处理服务的开发复杂度较高,增加了技术人员开发批处理服务的工作量和难度。
【发明内容】
[0004]有鉴于此,本发明的目的在于提供一种批处理控制方法及装置,旨在解决现有的批处理触发器因功能简单而导致批处理服务的开发复杂度较高这一问题。
[0005]为此,本发明公开如下技术方案:
[0006]一种批处理控制方法,包括:
[0007]获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息;
[0008]基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理;
[0009]基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。
[0010]上述方法,优选的,所述获取目标批处理作业对应的执行信息包括:
[0011 ]获取目标批处理作业的作业编号;
[0012]依据所述作业编号,确定所述目标批处理作业的配置文件;所述配置文件由用户预先对通用配置模板进行配置得到,所述通用配置模板包括对批处理进行控制所需的各种控制参数;
[0013]读取所述配置文件,得到所述目标批处理服务的执行信息。
[0014]上述方法,优选的,所述调用信息包括所述目标批处理服务的标识信息以及批处理预判条件,则所述基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理,包括:
[0015]判断所述批处理预判条件是否成立;
[0016]如果成立,则利用所述标识信息调用并执行所述目标批处理服务;
[0017]如果不成立,则结束批处理。
[0018]上述方法,优选的,所述目标批处理服务包括批处理前置服务、批处理主服务和批处理后置服务,所述标识信息包括前置服务标识、主服务标识和后置服务标识;则所述利用所述标识信息调用并执行所述目标批处理服务,包括:
[0019]利用所述前置服务标识,调用所述批处理前置服务,得到需处理的数据对象列表。
[0020]上述方法,优选的,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为参数化同步批处理时,所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括:
[0021]基于所述同步笔数对所述数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0022]基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0023]在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0024]上述方法,优选的,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为断点续跑批处理时,所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括:
[0025]基于预先生成的断点信息,去除所述数据对象列表中已执行成功的数据对象,得到需处理的新数据对象列表;
[0026]基于所述同步笔数对所述新数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0027]基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0028]在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0029]上述方法,优选的,所述控制信息包括批处理类型和同步笔数,当所述批处理类型为参数化多线程批处理时,所述控制信息还包括用户设置的并发线程数;则所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括:
[0030]基于所述并发线程数对所述数据对象列表进行拆分,得到多个子列表;
[0031]基于所述同步笔数对每个所述子列表进行拆分,得到每个所述子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象;
[0032]创建数目为所述并发线程数的多个并发线程,并将每个所述线程与每个所述子列表对应;
[0033]在每个所述线程内,基于对所述批处理主服务进行循环调用,依次执行相应子列表的各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0034]在各个线程的事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0035]上述方法,优选的,还包括:
[0036]在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态信息。
[0037]一种批处理控制装置,包括:
[0038]获取模块,用于获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息;
[0039]调用处理模块,用于基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理;
[0040]控制模块,用于基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。
[0041 ]上述装置,优选的,所述获取模块包括:
[0042]获取单元,用于获取目标批处理作业的作业编号;
[0043]确定单元,用于依据所述作业编号,确定所述目标批处理作业的配置文件;所述配置文件由用户预先对通用配置模板进行配置得到,所述通用配置模板包括对批处理进行控制所需的各种控制参数;
[0044]读取单元,用于读取所述配置文件,得到所述目标批处理服务的执行信息。
[0045]上述装置,优选的,所述调用信息包括所述目标批处理服务的标识信息以及批处理预判条件,则所述调用处理模块包括:
[0046]判断单元,用于判断所述批处理预判条件是否成立;
[0047]第一处理单元,用于在所述预判条件成立时,利用所述标识信息调用并执行所述目标批处理服务;
[0048]第二处理单元,用于在所述预判条件不成立时,结束批处理。
[0049]上述装置,优选的,所述目标批处理服务包括批处理前置服务、批处理主服务和批处理后置服务,所述标识信息包括前置服务标识、主服务标识和后置服务标识;则所述第一处理单元包括:
[0050]前置服务调用子单元,用于利用所述前置服务标识,调用所述批处理前置服务,得到需处理的数据对象列表。
[0051]上述装置,优选的,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为参数化同步批处理时,所述控制模块包括:
[0052]第一拆分单元,用于基于所述同步笔数对所述数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0053]第一事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[005
4]第一作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0055]上述装置,优选的,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为断点续跑批处理时,所述控制模块包括:
[0056]筛选单元,用于基于预先生成的断点信息,去除所述数据对象列表中已执行成功的数据对象,得到需处理的新数据对象列表;
[0057]第二拆分单元,用于基于所述同步笔数对所述新数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0058]第二事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0059]第二作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0060]上述装置,优选的,所述控制信息包括批处理类型和同步笔数,当所述批处理类型为参数化多线程批处理时,所述控制信息还包括用户设置的并发线程数;则所述控制模块包括:
[0061]第三拆分单元,用于基于所述并发线程数对所述数据对象列表进行拆分,得到多个子列表;
[0062]第四拆分单元,用于基于所述同步笔数对每个所述子列表进行拆分,得到每个所述子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象;
[0063]多线程创建单元,用于创建数目为所述并发线程数的多个并发线程,并将每个线程与每个所述子列表对应;
[0064]第三事务控制单元,用于在每个所述线程内,基于对所述批处理主服务进行循环调用,依次执行相应子列表的各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0065]第三作业退出单元,用于在各个线程的事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0066]上述装置,优选的,还包括:
[0067]作业状态记录与更新模块,用于在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态信息。
[0068]由以上方案可知,本申请公开的批处理控制方法及装置,包括获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息;基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理;基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。可见,本申请方法在提供批处理服务入口功能的同时,还实现了对批处理服务进行控制的控制功能,从而应用本申请方法,可有效扩展批处理触发器的功能,技术人员在开发批处理服务时,仅需关心批处理服务的业务逻辑实现,有效降低了批处理服务的开发复杂度。
【附图说明】
[0069]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0070]图1是本发明实施例一提供的批处理服务方法流程图;
[0071 ]图2是本发明实施例二提供的批处理服务方法流程图;
[0072]图3-图4是本发明实施例三提供的批处理服务装置的结构示意图。
【具体实施方式】
[0073]为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结解释如下:
[0074]事务:在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。本申请中提及的事务是指数据库事务,事务作为单个逻辑工作单元需执行的一系列操作,要么完全地执行,要么完全地不执行。
[0075]回滚:Rollback,指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为,回滚可包括程序回滚和数据回滚等类型。对于数据库事务来说,事务回滚是指当事务中任一条记录处理失败时,则撤销本次对该事务所做的所有操作,回滚至该事务在本次操作前的状态。
[0076]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0077]实施例一
[0078]本发明实施例一公开一种批处理控制方法,参考图1,所述方法可以包括以下步骤:
[0079]S101:获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息。
[0080]为解决现有批处理触发器由于仅能提供单一的批处理服务入口功能,而导致技术人员在开发批处理服务时,除了需关心批处理服务的业务逻辑实现,还需关心批处理相关控制过程的技术实现这一问题,本申请公开一种可应用于批处理触发器,且同时提供有批处理服务入口功能及批处理控制功能的批处理控制方法。
[0081 ]具体地,本申请方法需预先创建一通用配置模板,所述通用配置模板集成有对批处理服务进行调用所需的各项调用信息项,以及实现批处理控制所需的各种控制参数。所述调用信息项可包括批处理服务标识(用于配置所需批处理服务的标识信息),批处理预判条件(如可以配置批处理需满足的时间条件)等;所述控制参数可包括批处理类型、同步笔数、并发线程数等等。
[0082]本申请支持参数化同步批处理、断点续跑批处理及参数化多线程批处理等多种批处理类型。其中,参数化同步批处理为一种单线程处理方式,提供参数化同步控制功能,适用于操作数据库的批处理;断点续跑批处理同样为一种单线程处理方式,提供参数化同步及断点续跑控制功能,适用于需支持断点续跑场景的批处理;参数化多线程批处理为多线程并发处理方式,提供参数化同步及多线程并发处理控制功能,适用于处理巨大数据量的场景。
[0083]而对于数据量较小、批处理服务要求比较简单的批处理,如无需进行参数化同步、断点续跑及参数化多线程控制的批处理等,针对此种批处理需求,用户不需要在所述通用配置模板上对所述参数化同步、断点续跑及参数化多线程等控制功能的相关参数进行配置,同时为了使批处理触发器能够将此种批处理与以上三种类型的批处理相区分,可针对此种批处理需求,在所述通用配置模板上扩展一种自定义批处理,该类型的批处理属于单线程方式。
[0084]接下来,对所述参数化同步、断点续跑及参数化多线程的概念进行介绍。
[0085]参数化同步:对于需操作数据库的批处理作业,为了防止数据库缓存溢出,支持设定同步笔数。在处理完上述同步笔数的记录后,会提交事务,释放数据库缓存。事务提交完成后已修改的数据库在程序报错或异常中断时系统不会做回退处理。
[0086]断点续跑:对于需操作数据库的批处理作业,为了在作业异常中断后,再次提交时,程序可从中断地点处继续执行。避免重复处理已经处理过的记录,以提高批处理效率。
[0087]参数化多线程:对于数据量很大的日终批处理作业,可配置多个线程来并发处理,以提高批处理作业的执行效率。线程数可通过配置文件中的参数来配置。
[0088]实际应用中,用户可依据批处理作业的实际需求,在所述通用配置模板中配置需采用的批处理类型,以及配置该类型对应的各个控制参数等批处理作业所需的执行信息,比如,如果采用参数化同步批处理或断点续跑批处理,则需在通用配置模板上配置同步笔数;如果采用参数化多线程批处理,则需在通用配置模板上配置同步笔数和并发线程数。对通用配置模板进行所需的执行信息配置后,可得到批处理作业的配置文件,每个批处理作业对应一个配置文件。
[0089]具体可通过作业编号实现批处理作业与配置文
件之间的一一对应,从而,当对某一目标批处理作业进行数据处理时,可通过该作业的作业编号对所需的配置文件进行映射,进而可通过读取所映射的配置文件来获取该作业的相关执行信息。
[0090]由于本申请可为批处理提供所需的参数化同步控制功能,从而在将本申请方法应用于批处理触发器,并利用所述批处理触发器进行批处理控制时,不会存在长事务的风险。
[0091]S102:基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理。
[0092]具体地,参数化同步批处理、断点续跑批处理及参数化多线程批处理,这三种类型的批处理所需的批处理服务需至少包括批处理前置服务和批处理主服务,除了包括所述两种服务,一般情况下,还包括批处理后置服务。接下来以包括以上三种服务为例,对参数化同步批处理、断点续跑批处理及参数化多线程批处理的批处理过程进行说明。
[0093]在获取目标批处理作业的调用信息及控制信息等相关执行信息后,可基于调用信息,对本次作业所需的批处理服务进行相应的调用执行处理。对于以上三种类型的批处理来说,首先,需判断执行信息中的预判条件是否成立,例如批处理是否符合预设的时间条件(对于日终批处理来说,需在每天的日终时段执行)等,如果预判条件不成立,则作业正常退出;如果成立,则依据执行信息中配置的批处理前置服务标识,调用并执行本次作业所需的批处理前置服务,该服务返回需处理的数据对象列表,例如如果批处理的数据对象为数据库记录,则具体返回需处理的记录列表;如果批处理前置服务异常结束,则本次作业执行失败,异常退出。
[0094]S103:基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。
[0095]在调用批处理前置服务,返回需处理的数据对象列表后,批处理触发器需依次调用批处理主服务及批处理后置服务,继续对本次作业进行后续的批处理,其中,不同的批处理类型需依据预先配置的不同执行信息,对批处理主服务的调用执行过程进行不同的控制。
[0096]具体地,在参数化同步批处理中,批处理触发器首先需根据执行信息中的同步笔数,对批处理前置服务返回的数据对象列表进行拆分,生成多个子列表,其中,每个子列表包括不超过所述同步笔数的数据对象;例如,假设数据对象列表共有103笔记录,则会生成20个记录数为5的子列表和1个记录数为3的子列表,并将每个子列表的数据处理作为一个待执行的事务,在此基础上,针对每个子列表进行如下操作:
[0097]1)开始事务;
[0098]2)循环调用执行批处理主服务,处理子列表中的所有记录;
[0099]3)如果第2)步中在处理某条记录时报异常,则回滚事务并失败退出;如果第2)步中在处理所有记录时都正常结束,则提交事务。
[0100]当所有事务执行完毕,批处理触发器调用执行批处理后置服务,如果该服务正常结束,则正常退出本次作业;否则,失败退出作业,同时返回本次作业执行成功或执行失败的执行状态信息。
[0101]在断点续跑批处理中,批处理触发器需首先读取断点登记表,判断本次作业是否有断点,例如假设上次批处理在事务中的某记录处执行失败,则断点可包括该记录的编号、该记录在事务中的相对位置等信息,如果有断点,则依据登记的断点信息,去除批处理前置服务返回的数据对象列表中上次已执行成功的数据对象,从而得到筛选后待处理的新数据对象列表。之后,针对所述新数据对象列表,进行批处理主服务、批处理后置服务的调用执行,以及对所述批处理主服务的调用执行过程进行相应的控制,此部分处理过程与所述参数化同步批处理在此阶段的处理过程相同,具体可参考参数化同步批处理的说明部分,此处不再详述。
[0102]在参数化多线程批处理中,批处理触发器需首先依据执行信息中的并发线程数,对批处理前置服务返回的数据对象列表进行拆分,得到多个子列表,例如假设用户配置的并发线程数为10,数据对象列表共有10009笔记录,则会生成9个记录数为1000的子列表和1个记录数为1009的子列表。在此基础上,基于执行信息中的同步笔数对每个子列表进行拆分,得到每个子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象。
[0103]之后,基于所述并发线程数创建多个并发线程;所创建的线程与所述子列表一一对应,每个线程负责处理一个子列表包含的事务。在此基础上,多个线程并发执行实现事务处理,在每个线程内,具体通过对所述批处理主服务进行循环调用,来依次执行相对应的子列表中的各个事务;其中,在每个线程内,批处理触发器对批处理主服务的调用及控制过程与参数化同步批处理在此阶段的处理过程相同,不再详述。
[0104]在各线程处理结束后,批处理触发器调用执行批处理后置服务,如果该服务正常结束,则正常退出本次作业;否则,失败退出作业,同时返回本次作业执行成功与否的执行状态信息。
[0105]需要说明的是,用户还可以在所述通用配置模板中进行异常策略设置,例如,针对在参数化同步控制的事务处理阶段出现的异常,用户可依据批处理的实际需求,设置异常策略为异常继续或异常退出。其中,异常继续是指批处理触发器捕获批处理服务异常后,回滚未提交的事务,且批处理作业跳过此异常并继续执行;异常退出是指批处理触发器捕获批处理服务异常后,回滚未提交的事务且结束本次批处理作业。
[0106]而对于自定义批处理类型来说,由于需处理的数据量较小,预先不需配置同步笔数、并发线程数等参数,因此在启动批处理后,通过循环调用用户自定义的批处理服务对待处理的各数据对象进行数据处理即可。
[0107]由以上方案可知,本申请公开的批处理控制方法及装置,包括获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息;基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理;基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。可见,本申请方法在提供批处理服务入口功能的同时,还实现了对批处理服务进行控制的控制功能,从而应用本申请方法,可有效扩展批处理触发器的功能,技术人员在开发批处理服务时,仅需关心批处理服务的业务逻辑实现,有效降低了批处理服务的开发复杂度。
[0108]实施例二
[0109]本实施例二中,参考图2,所述方法还可以包括以下步骤:
[0110]S104:在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态信息。
[0111]具体地,为实时掌控批处理过程中批处理作业的执行情况,本实施例依据批处理的进度状况,实时记录并更新批处理作业的执行状态信息。
[0112]例如,具体地,在批处理的预判条件成立开始调用所需的批处理服务时,在数据库表中记录本次作业的执行状态为“执行中”;在调用批处理前置服务后,如果前置服务方法异常结束,则更新该作业的执行状态为执行失败,异常退出,否则,此时仍维持执行状态为执行中;在触发器调用批处理主服务执行事务的过程中,如果在处理某条记录时报异常,则回滚事务、并更新该作业的执行状态为执行失败、失败退出,否则提交事务,维持该作业的执行状态为原状态即执行中;在触发器调用执行批处理后置服务的过程中,如果后置服务正常结束,则更新该作业的执行状态为执行成功,正常退出作业;否则,则更新该作业的执行状态为执行失败,失败退出作业。
[0113]实施例三
[0114]本实施例三公开一种批处理控制装置,所述装置与以上各实施例公开的批处理控制方法相对应。
[0115]相应于实施例一,参考图3,所述批处理控制装置包括获取模块100、调用处理模块200和控制模块300。
[0116]获取模块100,用于获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息。
[0117]所述获取模块100包括获取单元、确定单元和读取单元。
[0118]获取单元,用于获取目标批处理作业的作业编号;
[0119]确定单元,用于依据所述作业编号,确定所述目标批处理作业
的配置文件;所述配置文件由用户预先对通用配置模板进行配置得到,所述通用配置模板包括对批处理进行控制所需的各种控制参数;
[0120]读取单元,用于读取所述配置文件,得到所述目标批处理服务的执行信息。
[0121 ]调用处理模块200,用于基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理。
[0122]所述调用处理模块200包括判断单元、第一处理单元和第二处理单元。
[0123]判断单元,用于判断所述批处理预判条件是否成立;
[0124]第一处理单元,用于在所述预判条件成立时,利用所述标识信息调用并执行所述目标批处理服务。
[0125]第二处理单元,用于在所述预判条件不成立时,结束批处理。
[0126]所述目标批处理服务包括批处理前置服务、批处理主服务和批处理后置服务,所述标识信息包括前置服务标识、主服务标识和后置服务标识;则所述第一处理单元包括:前置服务调用子单元,用于利用所述前置服务标识,调用所述批处理前置服务,得到需处理的数据对象列表。
[0127]控制模块300,用于基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。
[0128]所述控制信息包括批处理类型和同步笔数。
[0129]则当所述批处理类型为参数化同步批处理时,所述控制模块包括第一拆分单元、第一事务控制单元和第一作业退出单元。
[0130]第一拆分单元,用于基于所述同步笔数对所述数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0131]第一事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0132]第一作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0133]当所述批处理类型为断点续跑批处理时,所述控制模块包括筛选单元、第二拆分单元、第二事务控制单元和第二作业退出单元。
[0134]筛选单元,用于基于预先生成的断点信息,去除所述数据对象列表中已执行成功的数据对象,得到需处理的新数据对象列表;
[0135]第二拆分单元,用于基于所述同步笔数对所述新数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象;
[0136]第二事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0137]第二作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0138]当所述批处理类型为参数化多线程批处理时,所述控制信息还包括用户设置的并发线程数;则所述控制模块包括第三拆分单元、第四拆分单元、多线程创建单元、第三事务控制单元和第三作业退出单元。
[0139]第三拆分单元,用于基于所述并发线程数对所述数据对象列表进行拆分,得到多个子列表;
[0140]第四拆分单元,用于基于所述同步笔数对每个所述子列表进行拆分,得到每个所述子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象;
[0141]多线程创建单元,用于创建数目为所述并发线程数的多个并发线程,并将每个线程与每个所述子列表对应;
[0142]第三事务控制单元,用于在每个所述线程内,基于对所述批处理主服务进行循环调用,依次执行相应子列表的各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务;
[0143]第三作业退出单元,用于在各个线程的事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。
[0144]相应于实施例二,参考图4,所述批处理控制装置还可以包括:
[0145]作业状态记录与更新模块,用于在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态信息。
[0146]对于本发明实施例三公开的批处理控制装置而言,由于其与实施例一至实施例二公开的批处理控制方法相对应,所以描述的比较简单,相关相似之处请参见实施例一至实施例二中批处理控制方法部分的说明即可,此处不再详述。
[0147]综上所述,本申请具有如下优势:
[0148]1)降低了批处理服务的开发复杂度。对于批处理服务的开发过程来说,不需关心事务、断点及多线程等批处理相关控制的技术实现,只需关注批处理本身业务逻辑的实现;
[0149]2)支持预判条件,可有效避免批处理错跑或空跑,进而可有效地节约资源;
[0150]3)能实时记录批处理的执行状态,方便了对批处理的监控。
[0151]4)批处理的类型及功能易于扩展。
[0152]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0153]为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0154]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0155]最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0156]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种批处理控制方法,其特征在于,包括: 获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息; 基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理; 基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。2.根据权利要求1所述的方法,其特征在于,所述获取目标批处理作业对应的执行信息包括: 获取目标批处理作业的作业编号; 依据所述作业编号,确定所述目标批处理作业的配置文件;所述配置文件由用户预先对通用配置模板进行配置得到,所述通用配置模板包括对批处理进行控制所需的各种控制参数; 读取所述配置文件,得到所述目标批处理服务的执行信息。3.根据权利要求2所述的方法,其特征在于,所述调用信息包括所述目标批处理服务的标识信息以及批处理预判条件,则所述基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理,包括: 判断所述批处理预判条件是否成立; 如果成立,则利用所述标识信息调用并执行所述目标批处理服务; 如果不成立,则结束批处理。4.根据权利要求3所述的方法,其特征在于,所述
目标批处理服务包括批处理前置服务、批处理主服务和批处理后置服务,所述标识信息包括前置服务标识、主服务标识和后置服务标识;则所述利用所述标识信息调用并执行所述目标批处理服务,包括: 利用所述前置服务标识,调用所述批处理前置服务,得到需处理的数据对象列表。5.根据权利要求4所述的方法,其特征在于,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为参数化同步批处理时,所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括: 基于所述同步笔数对所述数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象; 基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。6.根据权利要求4所述的方法,其特征在于,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为断点续跑批处理时,所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括: 基于预先生成的断点信息,去除所述数据对象列表中已执行成功的数据对象,得到需处理的新数据对象列表; 基于所述同步笔数对所述新数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象; 基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。7.根据权利要求4所述的方法,其特征在于,所述控制信息包括批处理类型和同步笔数,当所述批处理类型为参数化多线程批处理时,所述控制信息还包括用户设置的并发线程数;则所述基于所述控制信息对所述目标批处理服务的调用执行过程进行控制包括: 基于所述并发线程数对所述数据对象列表进行拆分,得到多个子列表; 基于所述同步笔数对每个所述子列表进行拆分,得到每个所述子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象; 创建数目为所述并发线程数的多个并发线程,并将每个所述线程与每个所述子列表一一对应; 在每个所述线程内,基于对所述批处理主服务进行循环调用,依次执行相应子列表的各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 在各个线程的事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。8.根据权利要求5-7任意一项所述的方法,其特征在于,还包括: 在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态?目息Ο9.一种批处理控制装置,其特征在于,包括: 获取模块,用于获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息; 调用处理模块,用于基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理; 控制模块,用于基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。10.根据权利要求9所述的装置,其特征在于,所述获取模块包括: 获取单元,用于获取目标批处理作业的作业编号; 确定单元,用于依据所述作业编号,确定所述目标批处理作业的配置文件;所述配置文件由用户预先对通用配置模板进行配置得到,所述通用配置模板包括对批处理进行控制所需的各种控制参数; 读取单元,用于读取所述配置文件,得到所述目标批处理服务的执行信息。11.根据权利要求10所述的装置,其特征在于,所述调用信息包括所述目标批处理服务的标识信息以及批处理预判条件,则所述调用处理模块包括: 判断单元,用于判断所述批处理预判条件是否成立; 第一处理单元,用于在所述预判条件成立时,利用所述标识信息调用并执行所述目标批处理服务; 第二处理单元,用于在所述预判条件不成立时,结束批处理。12.根据权利要求11所述的装置,其特征在于,所述目标批处理服务包括批处理前置服务、批处理主服务和批处理后置服务,所述标识信息包括前置服务标识、主服务标识和后置服务标识;则所述第一处理单元包括: 前置服务调用子单元,用于利用所述前置服务标识,调用所述批处理前置服务,得到需处理的数据对象列表。13.根据权利要求12所述的装置,其特征在于,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为参数化同步批处理时,所述控制模块包括: 第一拆分单元,用于基于所述同步笔数对所述数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象; 第一事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 第一作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。14.根据权利要求12所述的装置,其特征在于,所述控制信息包括批处理类型和同步笔数;则当所述批处理类型为断点续跑批处理时,所述控制模块包括: 筛选单元,用于基于预先生成的断点信息,去除所述数据对象列表中已执行成功的数据对象,得到需处理的新数据对象列表; 第二拆分单元,用于基于所述同步笔数对所述新数据对象列表进行拆分,得到多个子列表,并将每个所述子列表的数据处理作为一个事务;其中,每个所述子列表包括不超过所述同步笔数的数据对象; 第二事务控制单元,用于基于对所述批处理主服务进行循环调用,依次执行各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 第二作业退出单元,用于在各个所述事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。15.根据权利要求12所述的装置,其特征在于,所述控制信息包括批处理类型和同步笔数,当所述批处理类型为参数化多线程批处理时,所述控制信息还包括用户设置的并发线程数;则所述控制模块包括: 第三拆分单元,用于基于所述并发线程数对所述数据对象列表进行拆分,得到多个子列表; 第四拆分单元,用于基于所述同步笔数对每个所述子列表进行拆分,得到每个所述子列表的多个小列表,并将每个所述小列表的数据处理作为一个事务;其中,每个所述小列表包括不超过所述同步笔数的数据对象; 多线程创建单元,用于创建数目为所述并发线程数的多个并发线程,并将每个线程与每个所述子列表 对应; 第三事务控制单元,用于在每个所述线程内,基于对所述批处理主服务进行循环调用,依次执行相应子列表的各个事务;如果事务正常结束,则提交所述事务;如果事务异常,则回滚所述事务; 第三作业退出单元,用于在各个线程的事务执行结束时,调用所述批处理后置服务,得到所述目标批处理作业的执行状态信息并退出作业。16.根据权利要求13-15任意一项所述的装置,其特征在于,还包括: 作业状态记录与更新模块,用于在所述目标批处理作业的处理过程中,实时记录、更新所述目标批处理作业的执行状态信息。
【专利摘要】本申请公开一种批处理控制方法及装置,所述方法和装置包括获取目标批处理作业对应的执行信息;所述执行信息包括目标批处理服务的调用信息以及调用执行所述目标批处理服务所需的控制信息;基于所述调用信息,对所述目标批处理服务进行相应的调用执行处理;基于所述控制信息,对所述目标批处理服务的调用执行过程进行控制。可见,本申请方法在提供批处理服务入口功能的同时,还实现了对批处理服务进行控制的控制功能,从而应用本申请方法,可有效扩展批处理触发器的功能,技术人员在开发批处理服务时,仅需关心批处理服务的业务逻辑实现,有效降低了批处理服务的开发复杂度。
【IPC分类】G06F9/48
【公开号】CN105487924
【申请号】CN201510862667
【发明人】任林涛, 吴炜斯, 丁伟奇
【申请人】中国建设银行股份有限公司
【公开日】2016年4月13日
【申请日】2015年11月30日