发明内容
本发明的技术任务是提供可以支持将一个大的批量事务划分为若干断点分步执行,断点间的依赖关系、先后顺序、并发控制由后台的批量控制器统一调度,通过前台可视化的控制界面可以完成对部分或全部断点进行调度控制(包括:计算、不计算、重算、跳过)和状态监视的一种支持断点续航的批量数据处理方法。
本发明的技术任务是按以下方式实现的,本方法包括断点的定义和一套架构、一组规范:
●断点[breakpoint]是批量计算的一个计算节点,划分断点的主要依据就是能够完成一项相对完整的独立业务计算。批量计算可以被清晰的描述为所包含的断点、在同一个批量内内的断点之间的相互依赖关系以及不同的断点之间的先后执行顺序。断点的计算以API函数、存储过程、独立可执行程序的方式实现。断点间的数据交互通过数据库实现,即断点所需要的数据源应取自于数据库的某些表中,断点计算生成的数据应存放与数据库的某些表中(特殊情况下,断点间的数据交互也可以使用独立文件的形式)。
●架构是支持后台批量程序运行的技术框架和平台,包括:监控界面、总控调度器[DCCU]、运行逻辑判断器[OSDU]、断点控制线程容器[BCTC]、批量定义维护界面。
■监控界面:用于控制参与计算的断点在本次运算中的地位,包括:计算、不计算、重算、跳过,并提供对于运算过程的监视界面。
■总控调度器[DCCU]:是后台控制的核心模块,由其根据计算任务,调用不同断点的计算过程。
■运行逻辑判断器[OSDU]:根据某次计算的断点计算要求,依据事先定义断点依赖逻辑图,判断本次计算所需要经过的断点及先后关系,形成本次计算任务。遇有允许并发的断点,还需要生成并发任务。
■断点控制线程容器[BCTC]:断点控制线程用于调用断点计算接口,并监控断点计算模块的运行状态。系统预生成若干断点控制线程(一般建议为CPU个数减一),放入本容器;总控调度器[DCCU]每次获取到一个计算任务后,向本容器申请一个空闲的线程;断点任务计算完成后,总控调度器[DCCU]将线程放回容器。
■批量定义维护界面:一组维护界面功能,用于维护每个批量计算所包含的断点、断点间的依赖关系。每个应用系统可以包括多个批量定义,但是为避免系统堵塞,建议每次只启动一个批量计算。此外,本组界面功能还提供每个断点逻辑的维护。
●规范用于指导在应用系统中使用本框架时,所开发的断点业务模块所应遵循的约定,包括:调用接口、断点配置文件[BKPT Config File]、批量配置文件[Batch Config File]、日志规范、版本管理规范。
■调用接口:用于定义每个断点计算所应提供的标准接口和参数,每个断点必须提供四个接口:预处理接口[preprocessinginterface]、计算逻辑接口(即主程序接口)[process interface]、后处理接口[afterprocessing interface]、数据清理接口(即回滚接口)[rollback interface]。
■断点配置文件[BKPT Config File]:一个XML格式的文件,用于定义每个断点的编号、内容、四类接口指向的函数/存储过程/可执行程序。
■批量配置文件[Batch Config File]:一个XML格式的文件,用于定义每个批量中所包含每个批量计算所包含的断点、断点间的依赖关系、断点的并发控制、默认计算逻辑。
■日志规范:包括运行状态日志、错误日志、数据现场日志(在断点因计算错误而中断时用于记录错误现场的数据,以用于故障排除)三类规范。断点业务控制可以遵循规范生成日志文件,也可以调用系统提供的API函数写函数。
■版本管理规范:定义批量运算的版本。相同发起入口的每次批量计算会被记录为一个版本(例如,多次运行同一日期的日终批次,则每个批次会被登记为一个版本),每个版本对应使用的断点配置文件、批量配置文件、参数版本记录、中间结果记录。通过版本管理,可以提供试算功能,即使用不同参数多次运行批处理,每次只试算部分断点,待选定参数后,再运行选定版本的批处理的剩余断点,从而最大限度的节约运行时间。
各部分间的逻辑关系与本方法的步骤为:
(1)、通过批量定义维护界面,定义每个批量所包含的断点及断点间关系,结果写入断点配置文件、批量配置文件;
(2)、操作员通过监控界面,根据断点配置文件内记录的内容,设置本次批量的所需要计算的断点;
(3)、运行逻辑判断器根据监控界面的设定结果和批量配置文件所定义的断点逻辑关系,生成本次批量的计算任务清单;
(4)、总控调度器根据计算任务清单,逐项执行断点计算任务;
(5)、总控调度器每次获取到一个计算任务后,向断点控制线程容器申请一个空闲的断点控制线程;断点任务计算完成后,总控调度器将断点控制线程放回断点控制线程容器;
(6)、每个断点控制线程根据断点配置文件的定义,调用计算接口进行计算;
(7)、断点计算的状态,通过运行状态日志实时反馈到监控界面。
本发明的一种支持断点续航的批量数据处理方法和现有技术相比,增强了系统的灵活性和可操作性,而且提高了系统的对于局部数据瑕疵的忍受能力和故障恢复能力,最大限度发挥了软硬件系统运算能力,因而,具有很好的推广使用价值。
具体实施方式
参照说明书附图和具体实施例对本发明的一种支持断点续航的批量数据处理方法作以下详细地说明。
实施例1:
如图1所示,本发明的一种支持断点续航的批量数据处理方法,各部分间的逻辑关系与本方法的步骤为:
(1)、通过批量定义维护界面,定义每个批量所包含的断点及断点间关系,结果写入断点配置文件[BKPT Config File]、批量配置文件[Batch ConfigFile];
(2)、操作员通过监控界面,根据断点配置文件内记录的内容,设置本次批量的所需要计算的断点;
(3)、运行逻辑判断器[OSDU]根据监控界面的设定结果和批量配置文件[Batch Config File]所定义的断点逻辑关系,生成本次批量的计算任务清单[Task List];
(4)、总控调度器[DCCU]根据计算任务清单[Task List],逐项执行断点计算任务;
(5)、总控调度器每次获取到一个计算任务后,向断点控制线程容器[BCTC]申请一个空闲的断点控制线程;断点任务计算完成后,总控调度器将断点控制线程放回断点控制线程容器[BCTC];
(6)、每个断点控制线程根据断点配置文件[BKPT Config File]的定义,调用计算接口进行计算;
(7)、断点计算的状态,通过运行状态日志实时反馈到监控界面。
本方法包括断点的定义和一套架构、一组规范。
(一)、断点的定义
断点[breakpoint]是批量计算的一个计算节点,一组有明确依赖关系和先后执行顺序的断点构成一个完成的批量计算。划分断点的主要依据就是能够完成一项相对完整的独立业务计算,既可以明确的指出某个断点的数据源、计算逻辑与结果。
断点的计算以API函数、存储过程、独立可执行程序的方式实现。
断点间的数据交互通过数据库实现,即断点所需要的数据源应取自于数据库的某些表中,断点计算生成的数据应存放与数据库的某些表中(特殊情况下,断点间的数据交互也可以使用独立文件的形式)。
断点的计算可以是并发的,即可以在接口函数中指定本次运算处理的数据范围,每次计算只处理接口函数中指定的范围的数据。
在运行逻辑判断器[OSDU]生成的计算任务清单[Task List]中:
●一个非并发的断点为一个任务项。
●一个并发的断点,如果并发规则将数据分为N组,则生成N个优先级完全相同任务项、一个优先级略高的任务项用于数据清理(仅在重算时)和预处理、一个任务优先级略低的任务项用于后处理。
(二)、架构
架构是支持后台批量程序运行的技术框架和平台,包括:监控界面、总控调度器[DCCU]、运行逻辑判断器[OSDU]、断点控制线程容器[BCTC]、批量定义维护界面。
1、监控界面
用于控制参与计算的断点在本次运算中的地位,包括:计算、不计算、重算、跳过,并提供对于运算过程的监视界面。
监控界面包括以下区域:
●批量参数区:设定本次批量的运行参数(由批量配置文件[Batch ConfigFile]定义)和版本(可以选择新建版本或者选择一个已有版本)。
●运行状态监控区:可以设定每个断点的运行状态,当设定一个断点的运算状态后,系统自动根据断点间的依赖关系自动修改关联断点的运行状态;选择新建版本,界面上默认的运行状态由批量配置文件[BatchConfig File]定义;选择一个以前已经存在的版本,界面上默认的运行状态为最后一次运行的状态;计算开始后,图标区域转为显示运行的状态,断点操作区域则不可操作。
●计算控制区:“启动”、“暂存”、“调整”一个批量计算。暂存时,所有后台“总控调度器[DCCU]”会将正在执行的断点执行完成后,将各断点计算状态存入数据库。调整一个批量计算时,“总控调度器[DCCU]”先将正在执行断点执行完毕(如果某断点为并发断点,则将该断点的并发任务全部执行完毕),然后根据调整后的断点计算要求,由运行逻辑判断器[OSDU]重新生成计算任务清单[Task List],然后重新提交计算。
●明细运行状态监控区:显示运行状态日志。
2、运行逻辑判断器[OSDU]
运行逻辑判断器[OSDU]的主要功能是根据控制界面提交的断点控制信息,依据“批量配置文件[Batch Config File]”定义的逻辑关系,判断本次计算所需要经过的断点、断点先后计算次序、断点并发控制,形成计算任务清单[Task List]。
生成任务清单的主要规则如下:
●某节点如果设置为“计算”操作,则:
■该节点所有上级节点必须处于“等待计算”、“等待重算”、“不计算”或“计算完成”状态,其中处于“不计算”状态的上级节点自动置为“等待计算”状态,并进入任务队列。
■该节点的上级节点中,如果有节点处于“计算失败”状态,必须先将该节点置为“重算”状态,才能对该节点执行“计算”操作。
●某节点如果设置为“不计算”操作,则:
■该节点所有下级节点必须处于“不计算”状态。
●某节点如果设置为“重算”操作,则:
■该节点必须处于“计算失败”或“计算完成”状态。
■该节点所有上级节点必须处于“等待计算”、“等待重算”、“不计算”、“计算完成”状态,其中处于“不计算”状态的上级节点自动置为“等待计算”状态,并进入任务队列。
■该节点的上级节点中,如果有节点处于“计算失败”状态,必须先将该节点置为“重算”状态,才能对该节点执行“重算”操作。
当某断点为并发断点时,OSDU还需要将根据并发规则生成N个优先级相同的任务项,每个任务项根据“断点配置文件[BKPT Config File]”的定义由指定域指定的表取一个数据范围,并写入计算任务清单。此外还要设置一个优先级略高的任务项用于数据清理(仅在重算时)和预处理和一个任务优先级略低的任务项用于后处理。
3、断点控制线程容器[BCTC]
断点控制线程用于调用断点计算接口,并监控断点计算模块的运行状态。
系统启动时预生成若干断点控制线程,放入本容器。在实施过程中,一般建议预启动的线程数量不超过(CPU数量减一)。
4、总控调度器[DCCU]
总控调度器[DCCU]每次获取到一个计算任务后,向本容器申请一个空闲的线程;断点任务计算完成后,总控调度器[DCCU]将线程放回容器。
DCCU的处理逻辑流程如图2所示。
5、批量定义维护界面
一组维护界面功能,用于维护每个批量计算所包含的断点、断点间的依赖关系。
定义的结果保存到断点配置文件[BKPT Config File]、批量配置文件[Batch Config File]。
每套断点和批量配置的可以指定生效和终止时间。
系统可以定义不同的批量计算路径作为不同的版本,但在每次计算时只能使用其中一个版本。
(三)、规范
本组规范用于指导在应用系统中使用本框架时、所开发的断点业务模块时所应遵循的约定,包括:调用接口、断点配置文件[BKPT Config File]、批量配置文件[Batch Config File]、日志规范、版本管理规范。
1、调用接口
定义每个断点计算所应提供的标准接口和参数。
每个断点必须提供四个接口(如该断点不需要进行相关处理,仍需定义该接口,接口的处理内容可以为空):
●预处理接口[preprocessing interface]:用于处理本断点正式计算前所需要处理的准备工作。接口参数包括:
■批量代号
■批量版本号
■公共参数:即批量参数,该参数为由各参数值组装的一个字符串,具体的参数组装规则根据批量配置文件[Batch Config File]相关域的定义。
●计算逻辑接口[process interface]:即主程序接口,用于实现本断点所需完成的业务计算过程。
■批量代号
■批量版本号
■公共参数:即批量参数,该参数为由各参数值组装的一个字符串,具体的参数组装规则根据批量配置文件[Batch Config File]相关域的定义。
■并发控制域:如果本断点不并发,则该域为空;如果本断点为并发,则该域为一次计算的范围,该范围值由计算任务清单写入计算任务清单。
●后处理接口[afterprocessing interface]:用于在一个断点计算完成后,需要进行的处理工作,例如中间临时数据的清理等。
■批量代号
■批量版本号
■公共参数:即批量参数,该参数为由各参数值组装的一个字符串,具体的参数组装规则根据批量配置文件[Batch Config File]相关域的定义。
●数据清理接口[rollback interface]:即回滚接口,用于将本断点产生的数据变化更正为计算前的状态。(计算失败不进行自动回滚,只有进行重算时才调用本接口)
■批量代号
■批量版本号
■公共参数:即批量参数,该参数为由各参数值组装的一个字符串,具体的参数组装规则根据批量配置文件[Batch Config File]相关域的定义。
2、断点配置文件[BKPT Config File]
一个XML格式的文件,用于定义每个断点的编号、内容、四类接口指向的函数/存储过程/可执行程序。
该文件主要数据域包括:
{序号}
[断点基本信息]
<断点代号>(全局唯一)
<断点名称>
<断点描述>(可为空)
[断点控制信息]
<断点类型>(API函数、存储过程、可执行程序)
<预处理接口>(函数名/存储过程名/含全路径的程序名称)
<计算逻辑接口>(函数名/存储过程名/含全路径的程序名
称)
<后处理接口>(函数名/存储过程名/含全路径的程序名称)
<数据清理接口>(函数名/存储过程名/含全路径的程序名
称)
[断点并发信息]
<并发控制>(是否并发)
<并发控制域>(指向存放数据划分范围的数据库表,例如
机构代号表,依据该表的数据,可以把计算的数据分为N组)
3、批量配置文件[Batch Config File]
一个XML格式的文件,用于定义每个批量中所包含每个批量计算所包含的断点、断点间的依赖关系、断点的并发控制、默认计算逻辑。
{序号}
[批量基本信息]
<批量代号>(全局唯一)
<批量名称>
<批量描述>(可为空)
<批量模版版本号>
<批量生效起止日期>
[批量公共参数]
<参数一>
参数名称
参数类型
参数默认值
参数长度(用于参数组装)
<参数二>
参数名称
参数类型
参数默认值
参数长度(用于参数组装)
<参数…>
[断点计算顺序]
<断点代号A>
父断点
父断点代号1
父断点代号2
…
父断点代号n
子断点
子断点代号1
子断点代号2
…
子断点代号n
<断点代号B>
父断点
父断点代号1
父断点代号2
…
父断点代号n
子断点
子断点代号1
子断点代号2
…
子断点代号n
[默认需要计算的断点]
<断点代号A>
<断点代号B>
…
<断点代号N>
4、日志规范
包括运行状态日志、错误日志、数据现场日志三类规范。断点业务控制可以遵循规范生成日志文件,也可以调用系统提供的API函数写函数。
●运行状态日志
用于记录断点计算的状态,存放在数据库的指定表中,监控界面通过检查该日志,更新批量参数区的图例,并将明细日志记入“明细运行状态监控区”。
该日志基本格式:
时间戳|批量代号|运行版本代号|批量公共参数|断点代号|调用接口名称|并发域|计算结果(开始计算、计算成功、计算失败等)|
●错误日志
出现错误时,记录错误状态,存放在数据库的指定表中,在监控界面通过“明细运行状态监控区”可以查看。
该日志基本格式:
时间戳|批量代号|运行版本代号|批批量公共参数|断点代号|调用接口名称|并发域|错误级别(提示、一般错误、严重错误、致命错误)|错误代码|错误简要描述|
●数据现场日志
在断点因计算错误而中断时用于记录错误现场的数据,以用于故障排除。具体数据信息的登记项目、内容由断点的运算程序决定。出现“一般错误、严重错误、致命错误”时,建议写数据现场日志。
该日志采用文本格式存储,系统管理员通过操作系统检查。
该日志基本格式:
时间戳|批量代号|运行版本代号|批量公共参数|断点代号|调用接口名称|并发域|错误级别(提示、一般错误、严重错误、致命错误)|错误代码|数据域名称1[数据域值1]|数据域名称2[数据域值2]|……|数据域名称N[数据域值N]|
5、版本管理规范
该规范定义批量运算的版本。相同发起入口的每次批量计算会被记录为一个版本(例如,多次运行同一日期的日终批次,则每个批次会被登记为一个版本),每个版本对应使用的断点配置文件、批量配置文件、参数版本记录、中间结果记录。
通过版本管理,可以提供试算功能,即使用不同参数多次运行批处理,每次只试算部分断点,待选定参数后,再运行选定版本的批处理的剩余断点,从而最大限度的节约运行时间。
实施例2:
实施过程可以分为程序开发和批量配置两个过程,并可通过监控界面发起批量计算:
●程序开发:主要是完成调用接口(每个断点4个)的开发,即完成业务逻辑的具体实现。
●批量配置:通过配置断点配置文件[BKPT Config File]、批量配置文件[Batch Config File],来定义系统批量运行的过程。该工作可以通过批量定义维护界面提供的可视化定义工具进行定义。
●计算管理:通过可视化的监控界面,可以完成批量计算的发起、停止、计算内容定义、状态查看等功能。
以下以图3所示的一个批量计算为例简要介绍实施过程(假设共有三个机构可以用于并发)。图3中A、B、C、D、E、F、G均代表断点。
1、程序开发
在图3所示示例的情况下,供需开发以下接口函数:
●断点A
■预处理接口函数:fun_PerA()
■计算逻辑接口函数:fun_ProA()
■后处理接口函数:fun_AftA()
■数据清理接口函数:fun_RollbackA()
●断点B
■预处理接口函数:fun_PerB()
■计算逻辑接口函数:fun_ProB()
■后处理接口函数:fun_AftB()
■数据清理接口函数:fun_RollbackB()
●断点C
■预处理接口存储过程:sp_PerC()
■计算逻辑接口存储过程:sp_ProC()
■后处理接口存储过程:sp_AftC()
■数据清理接口存储过程:sp_RollbackC()
●断点D
■预处理接口存储过程:sp_PerD()
■计算逻辑接口存储过程:sp_ProD()
■后处理接口存储过程:sp_AftD()
■数据清理接口存储过程:sp_RollbackD()
●断点E
■预处理接口函数:fun_PerE()
■计算逻辑接口函数:fun_ProE()
■后处理接口函数:fun_AftE()
■数据清理接口:fun_RollbackE()
●断点F
■预处理接口存储过程:sp_PerF()
■计算逻辑接口存储过程:sp_ProF()
■后处理接口存储过程:sp_AftF()
■数据清理接口存储过程:sp_RollbackF()
●断点G
■预处理接口进程:pro_PerG()
■计算逻辑接口进程:pro_ProG()
■后处理接口进程:pro_AftG()
■数据清理进程:pro_RollbackG()
2、批量配置
2.1断点配置文件[BKPT Config File]
在图3所示,该文件应被配置为:
{001}
[断点基本信息]
<A>
<A>
< >
[断点控制信息]
<API>
<fun_PerA>
<fun_ProA>
<fun_AftA>
<fun_RollbackA>
[断点并发信息]
<不并发>
< >
{002}
[断点基本信息]
<B>
<B>
< >
[断点控制信息]
<API>
<fun_PerB>
<fun_ProB>
<fun_AftB>
<fun_RollbackB>
[断点并发信息]
<并发>
<机构表>
{003}
[断点基本信息]
<C>
<C>
< >
[断点控制信息]
<SP>
<sp_PerC>
<sp_ProC>
<sp_AftC>
<sp_RollbackC>
[断点并发信息]
<不并发>
< >
{004}
[断点基本信息]
<D>
<D>
< >
[断点控制信息]
<SP>
<sp PerD>
<sp_ProD>
<sp_AftD>
<sp_Rol lbackD>
[断点并发信息]
<不并发>
< >
{005}
[断点基本信息]
<E>
<E>
< >
[断点控制信息]
<API>
<fun_PerE>
<fun_ProE>
<fun_AftE>
<fun_RollbackE>
[断点并发信息]
<不并发>
< >
{006}
[断点基本信息]
<F>
<F>
< >
[断点控制信息]
<SP>
<sp_PerF>
<sp_ProF>
<sp_AftF>
<sp_RollbackF>
[断点并发信息]
<不并发>
< >
{007}
[断点基本信息]
<G>
<G>
< >
[断点控制信息]
<PROCESS>
<usr/batch/bin/pro_PerG>
<usr/batch/bin/pro_ProG>
<usr/batch/bin/pro_AftG>
<usr/batch/bin/pro_RollbackG>
[断点并发信息]
<不并发>
< >
2.2批量配置文件[Batch Config File]
在图3所示,该文件应被配置为:
{000}
[批量基本信息]
<001>
<示例批量>
< >
<1.00>
<1900/01/012999/12/31>
[批量公共参数]
<001>
发起日期
DATE
SYSDATE
8
<002>
计算类型
CHAR
0
1
[断点计算顺序]
<A>
父断点
子断点
B
<B>
父断点
A
子断点
C
D
E
<C>
父断点
B
子断点
F
<D>
父断点
B
子断点
F
<E>
父断点
B
子断点
G
<F>
父断点
C
D
子断点
G
<G>
父断点
E
F
子断点
[默认需要计算的断点]
<A>
<B>
<C>
<D>
<E>
<F>
<G>
3、运算控制
在如图3所示的一个批量运算示例中,在如下几种情形下,任务清单生成的情况如下表1所示:
表1
通过实际应用结果证明通过将一个耗时较长的后台批量处理进行断点划分,增强了系统的灵活性和可操作性,提高了系统的对于局部数据瑕疵的忍受能力和故障恢复能力,并且部分断点可以由串行改为并行,充分利用了系统的资源,最大限度发挥了软硬件系统运算能力。