一种行情数据的回放装置及方法与流程

文档序号:21887596发布日期:2020-08-18 17:28阅读:400来源:国知局
一种行情数据的回放装置及方法与流程

本发明涉及计算机数据分析及传输技术领域,特别是涉及一种行情数据的回放装置及方法。



背景技术:

随着信息技术快速发展,各行各业的信息化建设要求逐步提高,而数据分析及传输领域的实时性及性能要求也越来越高。

以行情数据为例,随着各交易所行情提速,原单向行情小站、行情vde合并为行情网关mdgw,原文件方式的行情改造为数据流行情模式,为用户提供更快的速度。各证券公司、基金公司接入高速数据流行情后,对应下游系统均有相应的支持,理想情况下,从网关程序、转发程序、解码程序到最终展示程序等都正常稳定工作。但一些系统的联调测试及行情演练,也是需要定期执行,目前只能依靠交易所仿真行情测试环境,并于固定时间联合测试。因而,对于内部各系统的测试周期,测试压力等都不能有效的控制,有诸多不便。



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种行情数据的回放装置及方法,以使券商或应用系统供应商,可以随时通过回放生产环境录制的真实行情数据来进行回放演练和测试。

为达上述目的,本发明提出一种行情数据的回放装置,包括:

行情数据录制单元,用于连接上级行情网关,从上级行情网关接收行情数据,解析所接收的行情数据包,记录标识信息后组装成新数据包,并将新数据包压缩处理后写入磁盘文件;

回放控制单元,用于根据配置的回放模式,选择录制好的行情数据文件,解析压缩数据,于普通回放模式下,根据行情录制时间与当前系统时间比较结果读取行情数据包至发送队列,以控制回放与历史生产环境行情发布频率一致,于实时回放模式下,以当前系统时间修改当前行情数据包的行情市场时间并组装成新数据包,加入发送队列,以实现任意时段任意日期的接入回放测试;

发送单元,用于等待下级客户端连接,并于下级客户端连接后,读取发送队列中的行情数据包,将行情数据包发送至下级客户端。

优选地,所述行情数据录制单元进一步包括:

行情数据接收单元,用于连接上级行情网关,接收行情数据;

行情数据解析单元,用于对接收的行情数据的数据包进行解析,检验所接收的行情数据的有效性;

数据包重组单元,用于将当前系统时间与该行情数据数据包重组形成新数据包,并将重组后的新数据包放入接收队列。

优选地,所述行情数据解析单元对接收的行情数据数据包进行解析,校验行情数据的有效性,若校验失败,则关闭当前连接,重新向上级行情网关发起连接以获取最新数据;若校验正常,则将该行情数据的数据包传送至所述数据包重组单元以重组数据包。

优选地,对于普通回放模式,所述回放控制单元选择录制好的行情数据文件,读取压缩数据长度的数据并进行解压,获得解压数据包;获取当前系统时间,与解压获得的录制时的系统时间的时分秒值对比计算差值,根据对比结果读取行情数据包并加入所述发送队列。

优选地,若时间差值等于零,则读取完整行情数据包,并加入到所述发送队列中;若时间差值小于零,则等待并于到达录制时的系统时间的时分秒值后,再开始读取完整行情数据包,并加入所述发送队列;若时间差值大于零,则跳过开始行情数据,直到找到行情数据包中的当前系统时间一致的时间点,从该时间点开始读取行情数据包,并加入所述发送队列。

优选地,对于实时回放模式,所述回放控制单元首先选择录制好的行情数据文件,读取压缩数据长度的数据并进行解压获得解压数据包;然后,获取解压后的数据中完整的行情数据包,并解析该行情数据包,获得行情市场时间,对比前一个行情数据包中的行情市场时间,计算时间差值,并于等待差值时间后,将当前行情数据包中行情市场时间修改为当前系统时间,并重新计算校验码,设置到行情数据包包尾,将生成的新行情数据包加入到所述发送队列。

优选地,若当前实时回放模式设置有加速回放,则将计算获得的差值时间除以预设的倍数,等待除以预设的倍数的差值时间后,将当前行情数据包中市场时间修改为当前系统时间,重新计算校验码,并设置到行情数据包包尾,将生成的新行情数据包加入到所述发送队列。

优选地,所述发送单元与多个下级客户端连接,于建立连接后,遍历发送任务,将所述发送队列的行情数据包从对应连接上发送出去,以将每个数据包发送给每个下级客户端。

为达到上述目的,本发明还提供一种行情数据的回放方法,包括如下步骤:

步骤s1,连接上级行情网关,从上级行情网关接收行情数据,解析所接收的行情数据包,记录标识信息后组装成新数据包,对新数据包压缩处理后写入磁盘文件;

步骤s2,根据配置的回放模式,选择录制好的行情数据文件,解析压缩数据,于普通回放模式下,根据行情录制时间与当前系统时间比较结果读取行情数据包至发送队列,以控制回放与历史生产环境行情发布频率一致,于实时回放模式下,以当前系统时间修改当前行情数据包的行情市场时间并组装成新数据包,加入发送队列,以实现任意时段任意日期的接入回放测试;

步骤s3,等待下级客户端连接,并于下级客户端连接后,读取发送队列中的行情数据包,将行情数据包逐个发送至下级客户端。

优选地,于步骤s3中,与多个下级客户端建立连接,并于多个下级客户端建立连接后,遍历发送任务,将所述发送队列的行情数据包从对应连接上发送出去,以将每个数据包发送给每个下级客户端。

与现有技术相比,本发明一种行情数据的回放装置及方法通过将真实生产环境中实时行情变化的数据录制到本地磁盘文件保存,并于指定时间进行行情回放演练及测试,回放要求与生产环境变化频率一致,或者增加压力回放,并将回放行情数据快速转发至下级节点,而数据传输过程中不允许丢包乱序,且需要确保传输过程的高效及稳定可靠,本发明通过给下游应用系统提供一个模拟的行情网关,确保压力测试或演练测试的可靠效果,另外,本发明选择tcp数据传输协议,对行情数据的存储采用压缩方式存储节省磁盘空间。

附图说明

图1为本发明一种行情数据的回放装置的系统架构图;

图2为本发明一种行情数据的回放方法的步骤流程图;

图3为本发明实施例的架构拓扑结构图;

图4为本发明实施例中行情数据录制的具体流程图;

图5为本发明实施例中普通回放模式的流程图;

图6为实时回放行情的流程图;

图7为本发明实施例中回放数据发送的流程图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

图1为本发明一种行情数据的回放装置的系统架构图。如图1所示,本发明一种行情数据的回放装置,包括:

行情数据录制单元10,用于连接上级行情网关,从上级行情网关接收行情数据,解析所接收的行情数据包,记录标识信息后组装成新数据包,对新数据包压缩处理后写入磁盘文件。所述标识信息包括但不限于当前系统时间,记录标识信息后组装成的新数据包则包括新包长度、系统时间以及原数据包。

具体地,行情数据录制单元10进一步包括:

行情数据接收单元101,用于连接上级行情网关,接收行情数据。

具体地,行情数据接收单元101向上级行情网关发起连接,以与上级行情网关建立连接,在与上级行情网关建立连接后,从上级行情网关接收行情数据。

行情数据解析单元102,用于对接收的行情数据的数据包进行解析,检验所接收的行情数据的有效性。

在本发明具体实施例中,行情数据解析单元102对接收的行情数据数据包进行解析,校验行情数据的有效性;若校验失败,则说明当前上级的行情网关发送异常,则关闭当前连接,重新向上级行情网关发起连接以获取最新数据;若校验正常,则将该行情数据的数据包传送至数据包重组单元103,重组新数据包。在本发明具体实施例中,数据规范由上下级约定一致,从上级行情网关接收的行情数据包包括但不限于数据包长度、数据(数据中包含行情市场时间)以及结尾的数据校验码,行情数据解析单元102对接收的行情数据数据包进行解析的方法如下:取所述行情数据数据包的数据包头部长度,如果当前接收到的数据长度大于等于该数据包头部长度,则说明接收到一个完整数据包,根据数据包长度取出行情数据包,然后将该行情数据包包体各字节的数据相加取后三位数据,与数据包结尾校验码比较,若一致,则说明数据包正确,数据包校验正常,否则则校验失败。

数据包重组单元103,用于将当前系统时间与该行情数据数据包重组形成新数据包,并将重组后的新数据包放入接收队列。具体地说,数据包重组单元103将当前系统时间加入包头并对该行情数据数据包重新组包处理,同时设置好新的数据包长度。在本发明中,于原行情数据包中加入当前系统时间的目的,主要是为了控制回放频率。

压缩录制处理单元104,用于从接收队列获取新数据包,并对获得的数据包进行压缩处理,将压缩数据及其长度存入一录制文件中。

回放控制单元20,用于根据配置的回放模式,选择录制好的行情数据文件,解析压缩数据,于普通回放模式下,根据行情录制时间与当前系统时间比较结果读取行情数据包至发送队列,于实时回放模式下,以当前系统时间修改所选行情数据文件中的行情市场时间并组装成新数据包,加入发送队列。

在本发明具体实施例中,回放模式包括普通回放模式与实时回放模式(一般预先配置),所述普通模式表示回放系统时间与行情录制时间完全一致,如周六九点开始回放周五九点的行情(也就是说行情回放的时间点相同,例如周末演练也是按照股市时间段,九点到下午三点),所述实时回放模式表示任意时间点可以回放数据,且可以设置回放速度。

对于普通回放模式,所述回放控制单元20选择录制好的行情数据文件(录制文件),打开文件,读取压缩数据长度的数据并进行解压,获得解压数据包,解压后的数据包含完整的行情数据包及录制时存入的系统时间;然后获取当前系统时间,与解压获得的录制时的系统时间的时分秒值对比计算差值,如果等于零,则表示行情时间与当前系统时间一致,则读取完整行情数据包,并加入到发送队列中,开始发送;如果时间差值小于零,表示当前系统时间未到开市行情播放时间,需要等待到达时间后,再开始读取完整行情数据包,并加入发送队列;如果时间差值大于零,则说明当前时间已经处于盘中,需要跳过开始行情数据,直到找到录制数据中的一致时间点与当前时间一致,从该时间点开始读取数据包,并加入发送队列。

对于实时回放模式,实时就是指按照原始数据包里的行情市场时间间隔,动态设置和当前系统时间一致,然后提供给下游应用使用,具体地,在实时回放模式下,所述回放控制单元20首先选择录制好的行情数据文件(本发明中,录制的文件采用日期作为文件名区分,每天对应一个行情数据文件,回放的时候,选择对应日期的文件即可),打开文件,读取压缩数据长度的数据,进行解压,获得解压数据包;然后,获取解压后的数据中完整的行情数据包,并解析此行情数据包,获得行情数据包中的行情市场时间,若不是第一个数据包,则对比前一个数据包中的行情市场时间,计算时间差值,并于等待差值时间后,将当前行情数据包中行情市场时间修改为当前系统时间,并重新计算校验码(因为行情市场时间改变则行情数据的数据包体数据,则需重新计算包尾的数据校验码,具体可根据上下级规范约定,将数据包体数据按字节累加,最后取后三位作为校验码,以保证行情数据实时,同时数据包格式正确,这样保证下级客户端接收后,能检查出完整和正确的数据包),设置到行情数据包包尾,然后将新数据包加入到发送队列,若是第一个数据包,则直接将当前行情数据包中行情市场时间修改为当前系统时间,并重新计算校验码。也就是说,实时就是以当前系统的时间作为行情市场时间,实时回放启动后立即回放录制的行情数据,且数据包中的行情市场时间也和当前系统时间一致,例如当前系统时间为13:00,录制的数据是10:00开始的,假设实时回放10:00开始的数据,将数据包中的行情市场时间自动修改为13:00开始,回放频率可以和源录制文件一致。因为数据是连续的,本发明中计算两个数据包之间的间隔,是为了保持生产数据的发送频率,同时不能直接将当前行情数据包发送出去,而需将当前行情数据包中行情市场时间修改为当前系统时间,如本实施例中不能直接将将10点数据发送出去,而需将数据包中的行情市场时间10:00自动修改为13:00,因为行情数据市场时间和当前时间差异太大,一般应用都会报警,无法作为行情演练来使用。

优选地,若当前实时回放模式设置有加速回放,则将计算获得的差值时间除以预设的倍数,等待除以预设的倍数的差值时间后,将当前行情数据包中市场时间修改为当前系统时间,并重新计算校验码,设置到行情数据包包尾,然后将新数据包加入到发送队列,这样等待时间相应减少,实现了加速回放的目的。

在实时回放模式下,做行情演练和测试时,比如下游股票软件,看到的股市行情的变化就和当前时间是一致的,各个相关系统能做很完整的联调和演练。

发送单元30,用于等待下级客户端连接,并于下级客户端连接后,读取发送队列中的行情数据包,将行情数据包逐个发送至下级客户端。

具体地说,当开启发送服务后,发送单元30监听端口等待下级客户端应用连接,当与下级客户端连接完成后,读取发送队列中的行情数据包,将行情数据包逐个发送至下级,发送完毕后,关闭与下级客户端的连接。

优选地,为提高性能,本发明可使用多线程处理发送队列中行情数据,即发送单元30可以与多个下级客户端连接,于建立连接后,遍历发送任务,将数据包从对应连接上发送出去,即将每个数据包发送给每个下级客户端,具体地为遍历下级客户端连接,逐个发送,例如,将每个数据包关联至所有连接,记录引用计数,组装发送任务,发送任务执行完毕后,释放资源。

图2为本发明一种行情数据的回放方法的步骤流程图。如图2所示,本发明一种行情数据的回放方法,包括如下步骤:

步骤s1,连接上级行情网关,从上级行情网关接收行情数据,解析所接收的行情数据包,记录标识信息后组装成新数据包,对新数据包压缩处理后写入磁盘文件。

具体地,步骤s1进一步包括:

步骤s100,连接上级行情网关,接收行情数据。

具体地,向上级行情网关发起连接,以与上级行情网关建立连接,在与上级行情网关建立连接后,从上级行情网关接收行情数据。

步骤s101,对接收的行情数据的数据包进行解析,检验所接收的行情数据的有效性。

在本发明具体实施例中,对接收的行情数据数据包进行解析,校验行情数据的有效性,若校验失败,则说明当前上级的行情网关发送异常,则关闭当前连接,重新向上级行情网关发起连接以获取最新数据;若校验正常,则进入步骤s102。

步骤s102,将当前系统时间与该行情数据数据包重组形成新数据包,并将重组后的新数据包放入接收队列。具体地说,于步骤s102中,将当前系统时间加入包头并对该行情数据数据包重新组包处理。

步骤s103,从接收队列获取新数据包,并对获得的数据包进行压缩处理,将压缩数据及其长度存入一录制文件中。

步骤s2,根据配置的回放模式,选择录制好的行情数据文件,解析压缩数据,于普通回放模式下,根据行情录制时间与当前系统时间比较结果读取行情数据包至发送队列,于实时回放模式下,以当前系统时间修改行情市场时间并组装成新数据包,加入发送队列。

在本发明具体实施例中,回放模式包括普通回放模式与实时回放模式,所述普通模式表示回放系统时间与行情录制时间完全一致,如周六九点开始回放周五九点的行情,所述实时回放模式表示任意时间点可以回放数据,且可以设置回放速度。

对于普通回放模式,选择录制好的行情数据文件(录制文件),打开文件,读取压缩数据长度的数据并进行解压,获得解压数据包,解压后的数据包含完整的行情数据包及录制时存入的系统时间;然后获取当前系统时间,与解压获得的录制时的系统时间的时分秒值对比计算差值,如果等于零,则表示行情时间与当前系统时间一致,则读取完整行情数据包,并加入到发送队列中,开始发送;如果时间差值小于零,表示当前时间未到开市行情播放时间,需要等待到达时间后,再开始读取完整行情数据包,并加入发送队列;如果时间差值大于零,则说明当前时间已经处于盘中,需要跳过开始行情数据,直到找到录制数据中的一致时间点与当前时间一致,从该时间点开始读取数据包,并加入发送队列。

对于实时回放模式,首先选择录制好的行情数据文件,打开文件,读取压缩数据长度的数据,进行解压,获得解压数据包;然后,获取解压后的数据中完整的行情数据包,并解析此行情数据包,获得行情市场时间,对比前一个数据包中的行情市场时间,计算时间差值,并于等待差值时间后,将当前行情数据包中行情市场时间修改为当前系统时间,并重新计算校验码,设置到行情数据包包尾,然后将新数据包加入到发送队列。

优选地,若当前实时回放模式设置有加速回放,则将计算获得的差值时间除以预设的倍数,等待除以预设的倍数的差值时间后,将当前行情数据包中市场时间修改为当前系统时间,并重新计算校验码,设置到行情数据包包尾,然后将新数据包加入到发送队列,这样等待时间相应减少,实现了加速回放的目的。

步骤s3,等待下级客户端连接,并于下级客户端连接后,读取发送队列中的行情数据包,将行情数据包逐个发送至下级客户端。

具体地说,当开启发送服务后,监听端口等待下级客户端应用连接,当与下级客户端连接完成后,读取发送队列中的行情数据包,将行情数据包逐个发送至下级,发送完毕后,关闭与下级客户端的连接。

优选地,为提高性能,于本发明中,可使用多线程处理发送队列中行情数据,即于步骤s3中,可与多个下级客户端连接,于多个下级客户端建立连接后,遍历发送任务,将数据包从对应连接上发送出去。

实施例

图3为本发明实施例的架构拓扑结构,其描述了三个主要的层级,图3中最上部分为上级行情网关或者上级应用,即行情数据源端。中间为本发明之行情回放装置,其接收到行情数据后录制保存到本地存储,根据选择录制数据及配置,将行情数据发送至下级应用。最下部分为下级应用,即下级客户端,其可以接收行情数据并解码展示,或者转发到其他应用系统。

本实施例可以实现从上级行情网关录制数据,并在非交易或者非工作日回放行情,供第三方系统或者应用演练测试。

图4为本发明实施例中行情数据录制的具体流程图,其过程如下:

首先,本发明之回放装置发起连接与上级行情网关建立连接,接收行情数据。

然后,解析接收的行情数据,校验数据的有效性,校验失败,则说明当前网关发送异常,关闭当前连接,重连接网关获取最新数据。

如果校验正常,则重组新数据包,将当前系统时间及数据包长度及原始行情数据包存入新数据包,然后将新数据包放入压缩队列。

最后,从接收队列获取新数据包,通过压缩处理,将压缩数据及长度存入录制文件中。

图5为本发明实施例中普通回放模式的流程图,普通模式表示,回放系统时间与行情录制时间完全一致,如周六九点开始回放周五九点的行情。回放过程如下:

首先,选择录制好的行情数据文件,打开文件,读取压缩数据长度的数据,进行解压,获得解压数据包,解压后的数据包含完整的行情数据包及录制时存入的系统时间。

然后,获取当前系统时间,与录制时的系统时间的时分秒值对比计算差值,如果等于零,表示行情时间与当前时间一致,则读取完整行情数据包,并加入到发送队列中,开始发送。如果时间差值小于零,表示当前时间未到开市行情播放时间,需要等待到达时间后,开始读取行情数据,并加入发送队列。如果时间差值大于零,则说明当前时间已经处于盘中,需要跳过开始行情数据,直到找到录制数据中的一致时间点,开始读取完整数据包,并加入发送队列。

最后,判断录制数据是否已回放完毕,回放完毕则停止。

图6为实时回放行情的流程图。在本发明中,实时回放表示,任意时间点可以回放数据,且可以设置回放速度。其回放过程如下:

首先,选择录制好的行情数据文件,打开文件,读取压缩数据长度的数据,进行解压,获得解压数据包。

然后,获取解压后的数据中完整的行情数据包,并解析此行情数据包,获得行情市场时间。对比前一个数据包中的行情市场时间,计算时间差值。

如果当前未设置加速回放,则等待差值时间后,将当前行情数据包中行情市场时间修改为当前系统时间,并重新计算校验码,设置到行情数据包包尾。然后将新数据包加入到发送队列。

如果当前设置有加速回放,则将差值时间除以设置的倍数,等待时间相应减少,然后同上一步,修改行情数据包市场时间和校验码,加入到发送队列。

最后,判断录制数据是否已回放完毕,未回放完毕,则继续读取下一个数据包直至完毕。

图7为本发明实施例中回放数据发送的流程图,其过程如下:

首先,开启发送服务,监听端口等待下级客户端应用连接。

然后,下级客户端连接完成后,开始读取发送队列中的行情数据包,将行情数据包逐个发送至下级,发送完毕后,关闭连接。

至此,以上步骤实现了行情数据从接收到录制,从回放到发送至下级客户端节点的目的。

在本发明中,通过行情数据录制单元录制的行情数据,可以在任意时间点回放,且可以设置回放速度模拟不同行情压力,可以一比一播放(与实际生产环境的行情变化频率一致,压力相同)历史生产的行情数据等,给企业特别是证券公司提供更灵活,更全面的行情演练和行情应用的测试方案

综上所述,本发明一种行情数据的回放装置及方法通过将真实生产环境中实时行情变化的数据录制到本地磁盘文件保存,并于指定时间进行行情回放演练及测试,回放要求与生产环境变化频率一致,或者增加压力回放,并将回放行情数据快速转发至下级节点,而数据传输过程中不允许丢包乱序,且需要确保传输过程的高效及稳定可靠(1.使用tcp协议,2.使用缓存,3.内部处理上做到完全保序),本发明通过给下游应用系统提供一个模拟的行情网关,确保压力测试或演练测试的可靠效果,另外,本发明选择tcp数据传输协议,对行情数据的存储采用压缩方式存储节省磁盘空间。

与现有技术相比,本发明具有如下优点:

1、本发明提供压缩方式存储行情数据,压缩率高,占用磁盘空间低。

2、本发明通过将行情市场时间自动修改为当前系统时间,实现对下游应用提供实时行情。

3、本发明支持普通模式回放,与历史生产环境行情发布频率完全一致。

4、本发明支持倍速回放,提供不同压力的行情数据。

5、本发明支持任意时段任意日期的接入测试。

6、本发明支持行情循环回放。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

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