CN102929585B - 一种支持多主机分布式数据处理的批处理方法及系统 - Google Patents

一种支持多主机分布式数据处理的批处理方法及系统 Download PDF

Info

Publication number
CN102929585B
CN102929585B CN201210362479.4A CN201210362479A CN102929585B CN 102929585 B CN102929585 B CN 102929585B CN 201210362479 A CN201210362479 A CN 201210362479A CN 102929585 B CN102929585 B CN 102929585B
Authority
CN
China
Prior art keywords
batch
batch processing
processing
file
record
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.)
Active
Application number
CN201210362479.4A
Other languages
English (en)
Other versions
CN102929585A (zh
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.)
Shanghai Stock Exchange Technology Co., Ltd.
Original Assignee
Shanghai Stock Exchange
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 Shanghai Stock Exchange filed Critical Shanghai Stock Exchange
Priority to CN201210362479.4A priority Critical patent/CN102929585B/zh
Publication of CN102929585A publication Critical patent/CN102929585A/zh
Application granted granted Critical
Publication of CN102929585B publication Critical patent/CN102929585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及信息数据处理技术领域,具体是一种支持多主机分布式数据处理的批处理方法及系统。批处理系统中设有批处理框架,批处理框架主要包括批处理引擎程序,批处理管理和监控程序,批处理流程控制文件以及批处理批步骤定义文件,其中,流程控制文件和批步骤定义文件为两个配置文件,当批处理引擎启动后,就会遍历流程控制文件,获得下一步需要处理批步骤代码,然后根据批处理代码,从批步骤定义文件获得需要执行的脚本信息,然后执行该脚本来完成该批步骤。本发明同现有技术相比,具有较大的突破和优势,解决了现有技术中的诸多不足和缺陷,本发明中的批处理系统是一套有高并发性、高可用性、高可扩展性的系统。<!--1-->

Description

一种支持多主机分布式数据处理的批处理方法及系统
[技术领域]
本发明涉及信息数据处理技术领域,具体是一种支持多主机分布式数据处理的批处理方法及系统。
[背景技术]
随着证券交易市场的日益蓬勃和成熟,交易数据量也越来越大,对交易及处理系统的稳定性和处理效率都有较高的要求。在每个交易日交易时间段过后,交易系统就开始对当日的交易进行清算,然后处理复杂的非实时成交业务。这类盘后处理过程,业内通常称为批处理。简单的说,批处理就是将不同的任务进行分组,即分批,然后按照一定的顺序执行这些任务的过程。
根据业务复杂程度的不同,批处理系统的复杂程度也不尽相同。最简单的批处理系统可以是一个简单、直观的SHELL程序,例如现有技术中有一种固定收益平台的批处理系统,此类批处理系统可以满足比较简单的业务需求。但是其效率、可扩展性,以及使用的便利性都有比较明显的问题。比如,如果需要增加一段处理逻辑,就需要修改该SHELL程序,对所有的其他业务都会有较大影响。
现有技术中,大宗交易系统的批处理系统通常是一个基于UNIX的CRONTAB的轻量级数据处理系统。一方面,CRONTAB为周期性调用应用程序逻辑提供了较大的便利,另一方面,其局限性也是十分的明显。首先,其不具备高可用性。使用CRONTAB意味着应用程序被执行的时间点是固定的,当某一应用程序所依赖的上游系统故障而需要推迟该应用程序时,需要人工干预。第二,异常处理能力较差。基于CRONTAB,并没有一个统筹的管理程序负责对于各个应用程序的执行情况进行监控。当某一个应用程序执行出错时,并不能及时反馈运行人员。在实践中,往往是下游系统运行人员将错误通知到该批处理系统的运行人员。第三,各批步骤耦合性较高,扩展性不佳。在CRONTAB配置文件中,所有的批步骤都被赋予了一个时间点。亦即在时间点的维度上,所有的批步骤都相关。而实际操作中,一般批步骤之间最大的相关性应该是先后顺序,而非实际的时间点。其限制了时间点,却未必能保证实际执行顺序,因此不够稳定可靠,在现有市场中还未能有一种处理效率高、安全稳定且可靠的批处理系统来满足日益丰富的数据量。
[发明内容]
本发明的目的就是为了解决现有技术中的不足和缺陷,提供一种耦合性高、扩展性佳、安全、稳定、可靠的支持多主机分布式数据处理的批处理方法及系统。
为实现上述目的,设计一种支持多主机分布式数据处理的批处理方法及系统,其特征在于批处理系统中设有批处理框架,批处理框架主要包括批处理引擎程序、批处理管理和监控程序、批处理流程控制文件以及批处理批步骤定义文件,其中,流程控制文件和批步骤定义文件为两个配置文件,当批处理引擎启动后,就会遍历流程控制文件,获得下一步需要处理批步骤代码,然后根据批处理代码,从批步骤定义文件获得需要执行的脚本信息,然后执行该脚本来完成该批步骤。
所述的批处理引擎程序扫描批处理流程控制文件过程中,如果发现两个批步骤的配置为并行执行,则会将两个批步骤分别提交CPU并行执行;另外,流程控制文件中,将批处理步骤进行分组,不同的批处理组之间并行处理。
所述的批处理系统采用多主机框架,多台主机使用同一个磁盘,访问相同的文件时,内存也保持一致,批处理引擎在其中一台主机中执行。
所述的批处理框架和批处理应用程序相互分离,新增一个批处理步骤,在流程控制文件中新增该批步骤代码以及批步骤名,然后在批步骤定义文件中定义批步骤的相关信息;批步骤定义的相关信息包括需要执行的应用程序、是否需要多主机并发、是否需要多进程并发。
一种支持多主机分布式数据处理的批处理方法,其特征在于该方法步骤操作如下:
a.批处理框架模型
批处理引擎模块是批处理框架的核心,每一个批步骤会有一个5位数的代码,当批处理引擎启动后,就会遍历批处理流控制文件,获得下一步需要处理批步骤代码,然后根据批处理代码,从批步骤定义文件获得需要执行的脚本,然后执行该脚本来完成该批步骤,批处理引擎还会对每一个批步骤执行的结果进行检查并做相应处理;
b.批处理操控界面
批处理操控界面中,每一条记录代表一个批步骤,根据此界面查看及设置批步骤的执行状态、查看批步骤所调用的应用程序、查看执行批步骤执行日志、重新启动批处理操作;
c.流控制模型–串行处理与并行处理
对于每一个批步骤,在流控制文件FPFLWCTL中都会定义至少3条记录,批处理引擎在处理“P”记录时,会提交此批步骤所需调用的主处理程序,即应用程序到CPU,进行业务逻辑处理;处理“S”记录时,则会去同步并等待主处理程序完成;处理“C”时,会检查主处理程序是否正确的执行,当发现该批步骤的应用程序异常退出,则会将该批步骤在批步骤定义文件FPPRCSTS中的执行状态置为ERROR,同时批处理引擎停止工作,批处理监控程序一旦扫描发现有批步骤状态被置为ERROR,就会在批处理操控界面中将该批步骤置为红色,以引起运行人员注意;
所述的串行处理即每次只执行一个批处理步骤,下一个步骤只有在前一个步骤结束之后才能启动处理的执行方式,实现两个批步骤的串行处理,只需要在FPFLWCTL文件中按“P1S1C1P2S2C2”的顺序排列两个批步骤即可;
所述的并行处理即多个相关程度较低的批处理步骤同时运行,各自处理不同的业务文件,相互之间没有影响,两个批处理步骤间的并行处理在FPFLWCTL文件中的组织方式为“P1P2S1C1S2C2”,批处理引擎读取时,先依次读到两步批处理的P类记录P1、P2,将两个任务提交到CPU让其并行执行,然后顺序读到每一步批处理的SC记录,依次进行同步和检查;
a.流控制模型–批步骤分组并行运行模型
批处理组是一个批处理中逻辑连贯并且功能相关的步骤的集合,这些步骤被放进一个批处理组中,可以与其它批处理组同时并行执行;
当批步骤P1,P2为第一组,即组X,P3,P4为第二组,即组Y,则要使得P1,P2与P3,P4并行,只需要在流控制文件FPFLWCTL中做如下配置:“EXP1S1C1P2S2C2RXEYP3S3C3P4S4C4RYSXCXSYCY”,其中EX,EY和RX,RY分别为批处理组的入口和出口,当批处理引擎处理到一个批处理组的入口EX时,批处理引擎会再出创建出一个批处理引擎,专门用于处理该批处理组中的批步骤,如此,组X和组Y就由两个并行的批处理引擎进行处理;
b.批处理定义文件
批步骤定义文件,定义了每一个批步骤的各项属性,包括该批步骤调用的应用程序、批步骤是否需要在多主机执行多进程并发执行、批步骤执行状态,竞价撮合平台的批处理系统将持仓全部落地,对应批步骤70381GEN_CCYE_IS,由于持仓信息较大,而且分布在不同主机的内存中,因此需要多主机并行处理,同时,为了进一步加快速度,每一个主机亦同时有2个相同的进程在并行执行,实现上述的多主机多进程并发,只需要将FPPRCSTS的配置字段SetInMemoryFlag设置为2;
c.多主机并发模型
当某个批步骤采用多主机并发模式处理,批处理引擎在每一台主机上分别提交该批步骤的主处理程序,提交的每一个主处理程序称为一个实例,这样,每一台主机有一个主处理程序在执行同样的处理逻辑,而该主处理程序会遍历驱动文件的每一个待处理资源所对应的记录,每当一个实例读取驱动文件中的一条记录时,就会在该条记录上加上一把锁,处理完后,在该记录上加上“已完成”的标签,而任何实例是不会去处理带锁或者已完成的记录的,如此,两个执行在不同主机上的同一个主处理程序,协同并发的完成了处理;
d.可重复执行原则
可重复执行原则就是一个批步骤可以反复执行,而输出的结果不会发生改变,在日常运行过程中,由于与上下游系统的关联,时有输入文件错误而导致批步骤异常的情况发生,当异常的批步骤满足可重复执行原则,那么运行人员只需要修正输入文件之后,重新执行该批步骤即可;
对于只涉及文件操作,而不对共享内存进行修改的批步骤,在核心处理逻辑执行之前,一般会包括一个预处理阶段,预处理阶段会校验此批步骤需要输出的文件是否存在,当存在,就会将其删除,保证每次核心处理逻辑执行时的相关环境的一致性;
而对于修改共享内存的批步骤,要实施可重复执行原则相对比较复杂,应用程序在更新共享内存的过程中,由于输入文件错误等问题报错,内存较难做到回滚,解决这个问题可以从两个角度出发,一方面,减少在更新内存过程中出错的概率,实践中,应用程序很少因为常规的内存读写出错,而往往是由于更新内存所依赖的输入文件内容和形式不合法而出错,因此,对于每一个会写共享内存的批步骤之前,都加上一个额外的批步骤校验输入文件合法性,另一方面,在共享内存更新之前设立还原点,一旦某一批步骤更新共享内存出错,就可以从还原点开始重新执行,例如,在处理新增账户和账户状态变更的文件之前,有一个还原账户信息的批步骤,即还原点,一旦账户更新报错,就可以通过执行该步骤将账户信息的共享内存恢复到更新之前。
批处理引擎根据流程控制文件中的P、S、C、R、E记录进行不同的处理,其具体逻辑步骤为:
a.对应一个批步骤读取流程控制文件中下一条记录;
b.批步骤记录类型记录为P时,执行此批步骤对应的执行程序,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为S时,同步当前处理的批步骤,一直到当前步骤的执行程序执行完成,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为C时,检查此部批步骤对应的执行逻辑是否成功执行,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为E时,生成一个子批处理引擎,从当前批步骤开始执行,并记录当前标注为“E”的批步骤名;
批步骤记录类型记录为R时,判断是否与之前类型为“E”的批步骤记录同名,当是则结束,当不成功则报错。
对于驱动文件记录加锁的处理方式其具体步骤为:
a.读取驱动文件下一条记录;
b.判断当前记录是否尚未被处理,当已处理则回到步骤a,当未处理则进入步骤c;
c.更新驱动文件中该记录状态,将其状态置为“P”,表示正在处理;
d.根据当前处理的驱动文件记录调用对应的处理逻辑;
e.更新驱动文件该记录状态,将其状态置为“C”,表示处理完毕。
本发明同现有技术相比,具有较大的突破和优势,解决了现有技术中的诸多不足和缺陷,本发明中的批处理系统是一套有高并发性、高可用性、高可扩展性的系统。其设计达到了下述的技术效果:
1.批处理框架与应用逻辑分离。批处理框架提供一套灵活且可配置的流程控制方案,使开发人员能够方便地增减批处理任务,调整任务的前后顺序。
2.批处理框架对每个批步骤的执行情况进行实时监控并反馈运行人员。
3.支持批步骤串行和并行执行相结合的处理方式,提高批处理执行效率。
4.支持多主机多进程并发的分布式处理。
5.批处理各批步骤之间耦合度小。批步骤可以重复运行。显著提高批处理容错能力。
6.提供友好的人机交互界面,运行人员能够对任一批步骤进行暂停、恢复等控制。
7.本发明显著地提升了主机进行批处理的性能和稳定性。
[附图说明]
图1为本发明的批处理框架图;
图2为本发明的流程控制文件处理流程图;
图3为本发明的多主机分布式模型;
图4是本发明驱动文件记录锁处理流程图;
指定图1为本发明的摘要附图。
[具体实施方式]
下面结合附图对本发明作进一步说明,这种系统和方法的原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
本发明提供了一个批处理框架,作为一个批处理系统的基础。批处理框架主要包括批处理引擎程序,批处理管理和监控程序,批处理流程控制文件以及批处理批步骤定义文件。其中,流程控制文件和批步骤定义文件为两个配置文件。当批处理引擎启动后,就会遍历流程控制文件,获得下一步需要处理批步骤代码,然后根据批处理代码,从批步骤定义文件获得需要执行的脚本信息,然后执行该脚本来完成该批步骤。
为了实现批处理的高并发性,需要在批处理流程文件中做相应的配置。批处理引擎程序扫描批处理流程控制文件过程中,当发现两个批步骤的配置为并行执行,则会将两个批步骤分别提交CPU并行执行。另外,流程控制文件中,亦可以将批处理步骤进行分组。不同的批处理组之间并行处理。为了实现多主机并发,批步骤定义文件中对于批步骤是否在各个主机都要执行,以及在每个主机中执行多少个实例都进行了描述,批处理引擎根据其定义完成多主机多进程并发。
为了实现交易系统的高可用性,本发明中的批处理系统使用多主机框架。多台主机使用同一个磁盘,访问相同的文件时,内存也保持一致。批处理引擎在其中一台主机中执行。当该主机发生宕机时,批处理引擎异常退出。此时,其他主机的批处理监控进程就能发现正在执行的批步骤出错,并将错误信息反馈运行人员。运行人员只需要在任一其他主机中重新启动批处理即可。另外,对于批处理引擎所在的主机,某一个批步骤执行出错,批处理监控界面就会将出错的批步骤用红色标注出来,批处理引擎也会停止执行。运行人员分析报错原因,排除障碍后,直接重新执行批处理引擎,批处理系统即可恢复。
为了实现批处理系统的高可扩展性,批处理框架和批处理应用程序相互分离。新增一个批处理步骤,只需要在流程控制文件中新增该批步骤代码以及批步骤名,然后在批步骤定义文件中定义批步骤的相关信息即可。批步骤定义的相关信息包括需要执行的应用程序、是否需要多主机并发、是否需要多进程并发等等。批处理根据流程控制文件和批步骤定义文件的相关信息,可以准确的执行应用程序逻辑。
1、批处理框架模型
如图1所示,批处理框架主要包括批处理引擎程序,批处理管理和监控程序,批处理流程控制文件以及批处理批步骤定义文件。批处理引擎模块是批处理框架的核心。当批处理引擎启动后,就会遍历批处理流控制文件,获得下一步需要处理的批步骤代码,每一个批步骤会有一个5位数的代码,然后根据批处理代码,从批步骤定义文件获得需要执行的脚本,然后执行该脚本来完成该批步骤。批处理引擎还会对每一个批步骤执行的结果进行检查并做相应处理。如图1中所示,FPFLWCTL为批处理流程控制文件,定义了所有批步骤的顺序和组织结构,包括分组情况;FPPRCSTS为批步骤定义文件,定义了每一个批步骤的各项属性。包括该批步骤调用的脚本、批步骤是否需要在多主机执行、批步骤执行状态等;FPFILLOG为逻辑名定义文件,用简单名字定义了文件的物理地址;FPAUTO为批处理配置文件,主要用于存放一些配置项;批处理引擎为框架的核心程序,通过读取批处理流程控制文件、批步骤定义文件来协调整个批处理;批处理管理和监控为用户界面核心程序,为操作人员提供友好的操作界面;批处理步骤为实际批处理步骤调用的程序;日志文件为包括步骤日志,系统错误日志和操作员日志三种日志文件。
2、批处理操控界面
批处理操控界面中,每一条记录代表一个批步骤。本界面为运行人员提供了十分友好的用户体验。运行人员可以根据此界面查看及设置批步骤的执行状态、查看批步骤所调用的应用程序、查看执行批步骤执行日志、重新启动批处理等操作。
3、流控制模型–串行处理与并行处理
对于每一个批步骤,在流控制文件FPFLWCTL中都会定义至少3条记录。例如批步骤70330GEN_DDRZ_FILE有以下3条记录:
70330PGEN_DDRZ_FILE
70330SGEN_DDRZ_FILE
70330CGEN_DDRZ_FILE
批处理引擎在处理“P”记录时,会提交此批步骤所需调用的主处理程序,即应用程序到CPU,进行业务逻辑处理;处理“S”记录时,则会去同步/等待主处理程序完成;处理“C”时,会检查主处理程序是否正确的执行,如果发现该批步骤的应用程序异常退出,则会将该批步骤在批步骤定义文件FPPRCSTS中的执行状态置为ERROR,同时批处理引擎停止工作。批处理监控程序一旦扫描发现有批步骤状态被置为ERROR,就会在批处理操控界面中将该批步骤置为红色,以引起运行人员注意。
所谓串行处理即每次只执行一个批处理步骤,下一个步骤只有在前一个步骤结束之后才能启动处理的执行方式实现两个批步骤的串行处理,只需要在FPFLWCTL文件中按“P1S1C1P2S2C2”的顺序排列两个批步骤即可。
所谓并行处理即多个相关程度较低的批处理步骤同时运行,各自处理不同的业务文件,相互之间没有影响。两个批处理步骤间的并行处理在FPFLWCTL文件中的组织方式为“P1P2S1C1S2C2”。批处理引擎读取时,先依次读到两步批处理的P类记录,即P1、P2,将两个任务提交到CPU让其并行执行,然后顺序读到每一步批处理的SC记录,依次进行同步和检查
4、流控制模型–批步骤分组并行运行模型
批处理组是一个批处理中逻辑连贯并且功能相关的步骤的集合,这些步骤被放进一个批处理组中,可以与其它批处理组同时并行执行。
假设批步骤P1,P2为第一组,即组X,P3,P4为第二组,即组Y,则要使得P1,P2与P3,P4并行,只需要在流控制文件FPFLWCTL中做如下配置:“EXP1S1C1P2S2C2RXEYP3S3C3P4S4C4RYSXCXSYCY”,其中EX,EY和RX,RY分别为批处理组的入口和出口。当批处理引擎处理到一个批处理组的入口,例如EX时,批处理引擎会再出创建出一个批处理引擎,专门用于处理该批处理组中的批步骤。如此,组X和组Y就由两个并行的批处理引擎进行处理。
该实施例中竞价撮合平台的批处理系统需要处理以下业务:
表1业务处理流程
批处理代号 批步骤名称 业务
79521 WAIT_OEF_TC 等待开放式基金数据
19401 GEN_OFD04 处理开放式基金成交数据
19402 ZIP_OFD04 压缩开放式基金成交数据
19601 GEN_OFD06 处理开放式基金红利数据
19602 ZIP_OFD06 压缩开放式基金红利数据
分析表1列出的业务流程,发现可以按照以下分组方式进行分组,使得各个组之间达到并行效果。由于每个组耗时都很长,并行可以有效地提高执行效率。
表2业务处理流程分组
根据以上分组,得到FPFLWCTL中的数据如下:
表3业务处理流程配置
标志位 批处理代号 批处理名称
P 79521 WAIT_OEF_TC
S 79521 WAIT_OEF_TC
C 79521 WAIT_OEF_TC
E 19400 REPT_OFD04
P 19401 GEN_OFD04
S 19401 GEN_OFD04
C 19401 GEN_OFD04
P 19402 ZIP_OFD04
S 19402 ZIP_OFD04
C 19402 ZIP_OFD04
R 19400 REPT_OFD04
E 19600 REPT_OFD06
P 19601 GEN_OFD06
S 19601 GEN_OFD06
C 19601 GEN_OFD06
P 19602 ZIP_OFD06
S 19602 ZIP_OFD06
C 19602 ZIP_OFD06
R 19600 REPT_OFD06
批处理引擎根据流程控制文件中的P、S、C、R、E记录进行不同的处理。具体逻辑如图2所示。
5、批处理定义文件
批步骤定义文件,定义了每一个批步骤的各项属性。包括该批步骤调用的应用程序、批步骤是否需要在多主机执行多进程并发执行、批步骤执行状态等等。比如,竞价撮合平台的批处理系统将持仓全部落地,对应批步骤70381GEN_CCYE_IS。由于持仓信息较大,而且分布在不同主机的内存中。因此需要多主机并行处理。同时,为了进一步加快速度,每一个主机亦同时有2个相同的进程在并行执行。实现上述的多主机多进程并发,只需要将FPPRCSTS的配置字段SetInMemoryFlag设置为2。具体其他配置如下:
表4批处理定义文件
6、多主机并发模型
批处理框架提供一种方便的多主机并发处理模式,用于解决访问的资源数据量庞大,单主机处理效率较低的问题。具体的实现方式如图3所示。将需要处理的资源按照一定的规则分割成多份,多个SET,图中为SET0001–SET0006,对应的设置驱动文件,内容包含每一个SET的编号。
如图3所示,批处理进程在每一台主机上分别提交该批步骤的主处理程序,图中为两台,其中提交的每一个主处理程序称为一个实例。这样,每一台主机有一个主处理程序在执行同样的处理逻辑。而该主处理程序会遍历驱动文件的每一个SET所对应的资源。每当一个实例读取驱动文件中的一条记录时,就会在该条记录上加上一把锁,处理完后,在该记录上加上“已完成”的标签。而任何实例是不会去处理带锁或者已完成的记录的。如此,两个执行在不同主机上的同一个主处理程序,协同并发的完成了处理。
对于任意实例,对于驱动文件记录加锁的处理方式图4所示。
7、可重复执行原则
竞价撮合平台批处理系统需要与很多上下游系统进行协同合作,比如登记公司的清算系统,上交所的会籍系统,大宗交易系统,固定收益平台等等。任一上下游系统的问题都可能导致竞价撮合平台批处理系统的处理异常。为了提升系统的异常处理能力,批处理系统应用程序基本上贯彻可重复执行原则。
简单的说,可重复执行原则就是一个批步骤可以反复执行,而输出的结果不会发生改变。在日常运行过程中,由于与上下游系统的关联,时有输入文件错误而导致批步骤异常的情况发生。如果异常的批步骤满足可重复执行原则,那么运行人员只需要修正输入文件之后,重新执行该批步骤即可。
对于只涉及文件操作,而不对共享内存进行修改的批步骤,在核心处理逻辑执行之前,一般会包括一个预处理阶段。预处理阶段会校验此批步骤需要输出的文件是否存在,如果存在,就会将其删除。保证每次核心处理逻辑执行时的相关环境的一致性。
而对于修改共享内存的批步骤,要实施可重复执行原则相对比较复杂。应用程序在更新共享内存的过程中,由于输入文件错误等问题报错,内存较难做到回滚。解决这个问题可以从两个角度出发。一方面,减少在更新内存过程中出错的概率。实践中,应用程序很少因为常规的内存读写出错,而往往是由于更新内存所依赖的输入文件内容和形式不合法而出错。因此,对于每一个会写共享内存的批步骤之前,都加上一个额外的批步骤校验输入文件合法性。另一方面,在共享内存更新之前设立还原点。一旦某一批步骤更新共享内存出错,就可以从还原点开始重新执行。例如,在处理新增账户和账户状态变更的文件之前,有一个还原账户信息的批步骤,即还原点。一旦账户更新报错,就可以通过执行该步骤将账户信息的共享内存恢复到更新之前。
表5共享内存还原点
批步骤代码 批步骤名称 备注
41248 RESTORE_ACCPBU 账户信息还原点
75010 PRCS_AGZH1_SDC 处理新增账户
75020 PRCS_AGZT1_SDC 处理账户状态变更

Claims (4)

1.一种支持多主机分布式数据处理的批处理系统,其特征在于批处理系统中设有批处理框架,批处理框架主要包括批处理引擎程序、批处理管理和监控程序、批处理流程控制文件以及批处理批步骤定义文件,其中,流程控制文件和批步骤定义文件为两个配置文件,当批处理引擎启动后,就会遍历流程控制文件,获得下一步需要处理批步骤代码,然后根据批步骤代码,从批步骤定义文件获得需要执行的脚本信息,然后执行需要执行的脚本来完成批步骤;所述的批处理引擎程序扫描批处理流程控制文件过程中,如果发现两个批步骤的配置为并行执行,则会将两个批步骤分别提交CPU并行执行;另外,流程控制文件中,将批处理步骤进行分组,不同的批处理组之间并行处理;所述的批处理系统采用多主机框架,多台主机使用同一个磁盘,访问相同的文件时,内存也保持一致,批处理引擎在其中一台主机中执行;所述的批处理框架和批处理应用程序相互分离,新增一个批处理步骤,在流程控制文件中新增批步骤代码以及批步骤名,然后在批步骤定义文件中定义批步骤的相关信息;批步骤定义的相关信息包括需要执行的应用程序、是否需要多主机并发、是否需要多进程并发。
2.一种支持多主机分布式数据处理的批处理方法,其特征在于该方法步骤操作如下:
a)批处理框架模型
批处理引擎模块是批处理框架的核心,每一个批步骤会有一个5位数的代码,当批处理引擎启动后,就会遍历批处理流控制文件,获得下一步需要处理批步骤代码,然后根据批步骤代码,从批步骤定义文件获得需要执行的脚本,然后执行需要执行的脚本来完成批步骤,批处理引擎还会对每一个批步骤执行的结果进行检查并做相应处理;
b)批处理操控界面
批处理操控界面中,每一条记录代表一个批步骤,根据此界面查看及设置批步骤的执行状态、查看批步骤所调用的应用程序、查看执行批步骤执行日志、重新启动批处理操作;
c)流控制模型–串行处理与并行处理
对于每一个批步骤,在流控制文件FPFLWCTL中都会定义至少3条记录,顺序为“P”、“S”、“C”记录,批处理引擎在处理“P”记录时,会提交此批步骤所需调用的主处理程序,即应用程序到CPU,进行业务逻辑处理;处理“S”记录时,则会去同步并等待主处理程序完成;处理“C”记录时,会检查主处理程序是否正确的执行,当发现批步骤的应用程序异常退出,则会将异常退出的批步骤在批步骤定义文件FPPRCSTS中的执行状态置为ERROR,同时批处理引擎停止工作,批处理监控程序一旦扫描发现有批步骤状态被置为ERROR,就会在批处理操控界面中将置为ERROR的批步骤置为红色,以引起运行人员注意;
所述的串行处理即每次只执行一个批处理步骤,下一个步骤只有在前一个步骤结束之后才能启动处理的执行方式,实现两个批步骤的串行处理,只需要在FPFLWCTL文件中按“P1、S1、C1、P2、S2、C2”的顺序排列两个批步骤即可;
所述的并行处理即多个相关程度较低的批处理步骤同时运行,各自处理不同的业务文件,相互之间没有影响,两个批处理步骤间的并行处理在FPFLWCTL文件中的组织方式为“P1、P2、S1、C1、S2、C2”,批处理引擎读取时,先依次读到两步批处理的P类记录P1、P2,将两个任务提交到CPU让其并行执行,然后顺序读到每一步批处理的S、C记录,依次进行同步和检查;
d)流控制模型–批步骤分组并行运行模型
批处理组是一个批处理中逻辑连贯并且功能相关的步骤的集合,这些步骤被放进一个批处理组中,可以与其它批处理组同时并行执行;
当批步骤P1,P2为第一组,即组X,P3,P4为第二组,即组Y,则要使得P1,P2与P3,P4并行,只需要在流控制文件FPFLWCTL中做如下配置:“EX、P1、S1、C1、P2、S2、C2、RX、EY、P3、S3、C3、P4、S4、C4、RY、SX、CX、SY、CY”,其中EX,EY和RX,RY分别为批处理组的入口和出口,S、C记录和具体批步骤的处理方式相同,SX、SY用于同步并等待批处理组中的所有批步骤执行完成,CX、CY则会检查批处理组中的所有批步骤是否正确执行;当批处理引擎处理到一个批处理组的入口EX时,批处理引擎会再创建出一个批处理引擎,专门用于处理需处理的批处理组中的批步骤,如此,组X和组Y就由两个并行的批处理引擎进行处理;
e)批处理定义文件
批步骤定义文件,定义了每一个批步骤的各项属性,包括批步骤调用的应用程序、批步骤是否需要在多主机执行多进程并发执行、批步骤执行状态,竞价撮合平台的批处理系统将持仓全部落地,对应批步骤70381GEN_CCYE_IS,由于持仓信息较大,而且分布在不同主机的内存中,因此需要多主机并行处理,同时,为了进一步加快速度,每一个主机亦同时有2个相同的进程在并行执行,实现上述的多主机多进程并发,只需要将FPPRCSTS的配置字段SetInMemoryFlag设置为2;
f)多主机并发模型
当某个批步骤采用多主机并发模式处理,批处理引擎在每一台主机上分别提交批步骤的主处理程序,提交的每一个主处理程序称为一个实例,这样,每一台主机有一个主处理程序在执行同样的处理逻辑,而主处理程序会遍历驱动文件的每一个待处理资源所对应的记录,每当一个实例读取驱动文件中的一条记录时,就会在读取的记录上加上一把锁,处理完后,在处理完的记录上加上“已完成”的标签,而任何实例是不会去处理带锁或者已完成的记录的,如此,两个执行在不同主机上的同一个主处理程序,协同并发的完成了处理;
g)可重复执行原则
可重复执行原则就是一个批步骤可以反复执行,而输出的结果不会发生改变,在日常运行过程中,由于与上下游系统的关联,时有输入文件错误而导致批步骤异常的情况发生,当异常的批步骤满足可重复执行原则,那么运行人员只需要修正输入文件之后,重新执行批步骤即可;
对于只涉及文件操作,而不对共享内存进行修改的批步骤,在核心处理逻辑执行之前,一般会包括一个预处理阶段,预处理阶段会校验此批步骤需要输出的文件是否存在,当存在,就会将其删除,保证每次核心处理逻辑执行时的相关环境的一致性;
而对于修改共享内存的批步骤,要实施可重复执行原则相对比较复杂,应用程序在更新共享内存的过程中,由于输入文件错误报错,内存较难做到回滚,解决这个问题可以从两个角度出发,一方面,减少在更新内存过程中出错的概率,实践中,应用程序很少因为常规的内存读写出错,而往往是由于更新内存所依赖的输入文件内容和形式不合法而出错,因此,对于每一个会写共享内存的批步骤之前,都加上一个额外的批步骤校验输入文件合法性,另一方面,在共享内存更新之前设立还原点,一旦某一批步骤更新共享内存出错,就可以从还原点开始重新执行。
3.如权利要求2所述的一种支持多主机分布式数据处理的批处理方法,其特征在于批处理引擎根据流程控制文件中的P、S、C、R、E记录进行不同的处理,其具体逻辑步骤为:
a)对应一个批步骤读取流程控制文件中下一条记录;
b)批步骤记录类型记录为P时,执行此批步骤对应的执行程序,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为S时,同步当前处理的批步骤,一直到当前步骤的执行程序执行完成,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为C时,检查此批步骤对应的执行逻辑是否成功执行,执行完成后回到步骤a,当执行不成功则报错;
批步骤记录类型记录为E时,生成一个子批处理引擎,从当前批步骤开始执行,并记录当前标注为“E”的批步骤名;
批步骤记录类型记录为R时,判断是否与之前类型为“E”的批步骤记录同名,当是则结束,当否则报错。
4.如权利要求2所述的一种支持多主机分布式数据处理的批处理方法,其特征在于对于驱动文件记录加锁的处理方式其具体步骤为:
a)读取驱动文件下一条记录;
b)判断当前记录是否尚未被处理,当已处理则回到步骤a,当未处理则进入步骤c;
c)更新驱动文件中记录状态,将其状态置为“P”,表示正在处理;
d)根据当前处理的驱动文件记录调用对应的处理逻辑;
e)更新驱动文件中记录状态,将其状态置为“C”,表示处理完毕。
CN201210362479.4A 2012-09-25 2012-09-25 一种支持多主机分布式数据处理的批处理方法及系统 Active CN102929585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210362479.4A CN102929585B (zh) 2012-09-25 2012-09-25 一种支持多主机分布式数据处理的批处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210362479.4A CN102929585B (zh) 2012-09-25 2012-09-25 一种支持多主机分布式数据处理的批处理方法及系统

Publications (2)

Publication Number Publication Date
CN102929585A CN102929585A (zh) 2013-02-13
CN102929585B true CN102929585B (zh) 2016-01-13

Family

ID=47644399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210362479.4A Active CN102929585B (zh) 2012-09-25 2012-09-25 一种支持多主机分布式数据处理的批处理方法及系统

Country Status (1)

Country Link
CN (1) CN102929585B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647834B (zh) * 2013-12-16 2017-03-22 上海证券交易所 一种用于处理多阶段分布式任务调度的系统及方法
CN103647669B (zh) * 2013-12-16 2017-04-05 上海证券交易所 一种保证分布式数据处理一致性的系统及方法
CN104199869B (zh) * 2014-08-18 2017-10-10 中国建设银行股份有限公司 一种业务批处理方法、业务服务器以及系统
CN104780220B (zh) * 2015-04-28 2017-12-29 大连商品交易所 面向证券期货行业大型分布式系统的智能监控系统及监控方法
US10754494B2 (en) * 2015-06-23 2020-08-25 Dell Products, L.P. Method and control system providing one-click commissioning and push updates to distributed, large-scale information handling system (LIHS)
CN105303307B (zh) * 2015-10-16 2020-02-14 京北方信息技术股份有限公司 一种分配工作任务的方法及装置
CN106375241B (zh) * 2016-08-29 2020-03-13 中国工商银行股份有限公司 批量数据处理方法、前端系统、主机及批量数据处理系统
CN107391176B (zh) * 2017-06-26 2020-07-07 上交所技术有限责任公司 一种高效的配置数据变更处理方法
CN110019071A (zh) * 2017-11-15 2019-07-16 北大方正集团有限公司 数据处理方法及装置
CN108595156A (zh) * 2018-04-26 2018-09-28 宁波银行股份有限公司 一种基于Impala组件的批处理方法及系统
CN109347922A (zh) * 2018-09-20 2019-02-15 青岛海信网络科技股份有限公司 一种支持轨道交通线网实时数据处理的读取方法及装置
CN111782357A (zh) * 2020-06-19 2020-10-16 北京百度网讯科技有限公司 标签控制方法及装置、电子设备和可读存储介质
CN113407429A (zh) * 2021-06-23 2021-09-17 中国建设银行股份有限公司 一种任务处理方法和装置
CN113570255A (zh) * 2021-07-30 2021-10-29 上海通联金融服务有限公司 批处理文件的质量检测方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184489A (zh) * 2011-05-27 2011-09-14 苏州两江科技有限公司 一种基于知识的工作流管理系统
CN102419831A (zh) * 2010-09-28 2012-04-18 深圳市青铜器软件系统有限公司 流程管理系统及其处理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090241118A1 (en) * 2008-03-20 2009-09-24 American Express Travel Related Services Company, Inc. System and method for processing interface requests in batch

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102419831A (zh) * 2010-09-28 2012-04-18 深圳市青铜器软件系统有限公司 流程管理系统及其处理方法
CN102184489A (zh) * 2011-05-27 2011-09-14 苏州两江科技有限公司 一种基于知识的工作流管理系统

Also Published As

Publication number Publication date
CN102929585A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
CN102929585B (zh) 一种支持多主机分布式数据处理的批处理方法及系统
US7386577B2 (en) Dynamic determination of transaction boundaries in workflow systems
US6834358B2 (en) Restartable database loads using parallel data streams
US20210073085A1 (en) Query Fault Processing Method and Processing Apparatus
CN111400011B (zh) 一种实时任务调度方法、系统、设备及可读存储介质
CN102955737B (zh) 异构处理器体系的程序调试方法和系统
CN103729288A (zh) 一种嵌入式多核环境下应用程序的调试方法
CN101201753A (zh) 一种多状态机管理引擎的配置管理方法
CN105677465B (zh) 应用于银行跑批处理的数据处理方法及装置
CN101639803A (zh) 多线程应用系统的异常处理方法和异常处理装置
US20140089900A1 (en) System and method for providing an implementation accelerator and regression testing framework for use with environments such as fusion applications
CN106126403A (zh) Oracle数据库故障分析方法和装置
CN105843697B (zh) 一种浏览器控件的中断恢复方法及系统
Liu et al. Automating handover in dynamic workflow environments
CN105740139A (zh) 一种基于虚拟环境的嵌入式软件调试方法
CN110147273A (zh) 一种任务执行方法及装置
WO2020253045A1 (zh) 配置化的数据转发异常补处理方法、装置及可读存储介质
CN113157710A (zh) 区块链数据并行写入方法、装置、计算机设备及存储介质
US7185322B2 (en) Method and apparatus for parallel action processing
CN111930589A (zh) 流式任务自动化监控系统及方法
CN103197927B (zh) 一种柔性工作流的实现方法及其系统
CN113485911A (zh) 一种基于银行业务的测试数据生成平台
Jacques-Silva et al. Towards autonomic fault recovery in system-s
CN107704473A (zh) 一种数据处理方法和装置
CN113742043A (zh) 一种服务器后端任务异步拆分方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170711

Address after: 200131 No. 8, Taichung North Road, Pudong New Area free trade experiment zone, Shanghai, Shanghai

Patentee after: Shanghai Stock Exchange Technology Co., Ltd.

Address before: 200120 No. 528 South Pudong Road, Shanghai, Shanghai, Pudong New Area

Patentee before: Shanghai Stock Exchange