一种行情文件转数据流传输的方法及装置与流程

文档序号:25088460发布日期:2021-05-18 21:07阅读:222来源:国知局
一种行情文件转数据流传输的方法及装置与流程

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


背景技术:

2.随着交易所行情的提速,竞价撮合平台fast行情发布频率也由5秒一副调整至3秒一副。同时,为了进一步提速,一些交易所文件行情也逐步升级为流行情传输。而上海fast行情及股转行情等仍然使用文件方式,传统方式下,下游应用系统使用行情通过网络映射的方式读取行情文件,但会占用带宽过高,安全性风险以及不能统一管理等弊端。目前常见的做法是通过行情转发系统同步文件至下游,甚至多级级联转发,但是,此方式在解决映射方式问题的同时,增加了读盘和落盘的次数。


技术实现要素:

3.为克服上述现有技术存在的不足,本发明之目的在于提供一种行情文件转数据流传输的方法及装置,通过将文件行情直接转流行情传输,以减少转发行情中读盘和落盘的消耗,提高行情转发效率。
4.为达上述目的,本发明提出一种行情文件转数据流传输的方法,包括如下步骤:
5.步骤s1,主节点服务端通过扫描行情文件的方式,检测行情变化,于检测到行情变化时,读取行情数据并按证券代码对行情数据分块以及计算相应数据分块的哈希值,并存入相应的缓存队列,当与下级子节点建立连接时,根据发送数据类型读取缓存队列数据,将行情数据通过定期增量和实时全量的方式通过数据流传输至下级子节点;
6.步骤s2,下级子节点于接收到上级节点发送的数据包时,解析数据包组装完整行情文件,或直接转发接收到的数据流至下游应用系统。
7.优选地,步骤s1包括:
8.步骤s10,扫描行情文件,根据行情文件数据接口规范获取所述行情文件中的行情市场时间,并根据获得的行情市场时间检测行情是否变化;
9.步骤s11,若行情市场时间未发生变化,则无需处理,等待下一次扫描检测;
10.步骤s12,若行情市场时间发生变化,则读取行情数据,并按证券代码分块数据,将分块数据存入数据缓存队列,同时,计算每个分块数据的哈希值及对应的序号存入哈希缓存队列;
11.步骤s13,定义数据接口规范,当与下级子节点连接时,根据发送数据类型读取相应缓存队列数据,利用定期增量和实时全量的方式通过数据流传输至下级子节点。
12.优选地,步骤s13包括:
13.步骤s131,初始化等待下级子节点连接,加载各缓存队列;
14.步骤s132,检查当前时间点是否需要发送全量数据;
15.步骤s133,若当前时间点需发送全量数据,则直接遍历读取数据缓存队列中的数
据块,增加全量标识组成新的数据包,并发送至当前所有连接的下级子节点;
16.步骤s134,若发送类型为增量,则读取哈希缓存队列中数据,根据哈希值对比相对前次数据是否发送变化,遍历读取发生变化的行情数据,增加增量标识组成新的数据包发送至所有下级子节点。
17.优选地,步骤s133包括:
18.步骤s133a,读取所述数据缓存队列中的分块数据,增加全量标识组成新的数据包,并发送数据包至下级子节点;
19.步骤s133b,在当前分块数据发送完毕后,继续所述检查数据缓存队列直至完毕,当所有全量发送完毕,发送全量结束标记的数据包,通知下级子节点本次更新完成。
20.优选地,步骤s134包括:
21.步骤s134a,读取当前数据哈希缓存队列,并获取相应数据块的历史哈希值;
22.步骤s134b,根据哈希值对比当前数据块与前次对应的数据块是否一致;
23.步骤s134c,若根据哈希值判断一致则跳过本次检查,继续对比下一个数据块;
24.步骤s134d,若根据哈希值判断当前数据块与前次对应的数据块不一致,则通过序号查找对应的分块数据,从数据缓存队列获取到对应的行情数据,同时增加增量标识和序号组成新的数据包,将其发送给下级子节点;
25.步骤s134e,当数据发送完毕,继续读取哈希缓存队列直至完毕,当所有增量数据发送完毕,则发送增量结束标记的数据包,通知下级子节点本次更新完成。
26.优选地,于步骤s134a中,根据历史哈希缓存队列获取对应数据块的历史哈希值。
27.优选地,于步骤s133a中,当将增加全量标识组成的新的数据包发送给下级子节点后,还将当前分块数据的哈希值及对应的序号更新至所述历史哈希缓存队列中。
28.优选地,于步骤s134d中,当将增加增量标识后的新数据包发送给下级子节点后,将当前分块数据的哈希值及对应的序号更新至历史哈希缓存队列中。
29.优选地,步骤s2进一步包括:
30.步骤s200,连接至上级节点,接收上级节点发送的数据包;
31.步骤s201,解析数据包头信息,根据数据包头信息中全量或增量标识读取数据消息体,若为全量数据包,则按数据包的接收顺序,更新对应行情文件,直至接收到结束标记后关闭文件,若为增量数据包,则根据数据包中的序号,更新对应行情文件指定数据块,直至接收到结束标记后关闭文件。
32.为达到上述目的,本发明还提供一种行情文件转数据流传输的装置,包括:
33.主节点服务端,用于通过扫描行情文件的方式,检测行情变化,于检测到行情变化时,读取行情数据并按证券代码对行情数据分块以及计算相应数据分块的哈希值,并存入相应的缓存队列,当与下级子节点建立连接时,根据发送数据类型读取缓存队列数据,将行情数据通过定期增量和实时全量的方式通过数据流传输至下级子节点;
34.若干子节点,各子节点用于在接收到上级节点发送的数据包时,解析数据包组装完整行情文件,或直接转发接收到的数据流至下游应用系统。
35.与现有技术相比,本发明一种行情文件转数据流的方法及装置通过检测文件更新变化,将行情数据分块计算哈希值,通过哈希值判断当前证券代码对应的行情内容是否更新,从而实现增量传输,减少数据流量,定期执行全量传输为定期执行,确保下游系统中断
或新应用系统接入时,能快速获取到完整行情,同时,本发明端节点还可以选择输出完整行情文件对接老旧系统,或者直接级联转发至下游应用,本发明通过定期全量加实时增量的方式,能有效减少数据的传输,同时能保证下级应用中断的时候保证数据的完整性,给企业特别是证券公司提供行情文件多级级联下高效传输的解决方案。
附图说明
36.图1为本发明一种行情文件转数据流传输的方法的步骤流程图;
37.图2为本发明一种行情文件转数据流传输的系统的系统架构图;
38.图3为本发明实施例所描述的整个发明的架构图;
39.图4为本发明实施例中上级节点的文件检测和处理的具体流程图;
40.图5为本发明实施例中上级节点发送数据流的处理流程图;
41.图6为本发明实施例中增量数据的发送流程图;
42.图7为本发明实施例中全量数据的发送流程图;
43.图8为本发明实施例中下级子节点接收数据更新行情文件的处理流程图。
具体实施方式
44.以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
45.图1为本发明一种行情文件转数据流传输的方法的步骤流程图。如图1所示,本发明一种行情文件转数据流传输的方法,包括如下步骤:
46.步骤s1,主节点服务端通过扫描行情文件的方式,检测行情变化,于检测到行情变化时,读取行情数据并按证券代码对行情数据分块以及计算相应数据分块的哈希值,并存入相应的缓存队列,当与下级子节点建立连接时,根据发送数据类型读取缓存队列数据通过数据流传输至下级子节点。
47.具体地,步骤s1进一步包括:
48.步骤s10,扫描行情文件,根据行情文件数据接口规范获取所述行情文件中的行情市场时间,并根据获得的行情市场时间检测行情是否变化。
49.具体地说,主节点服务端启动扫描功能,扫描指定目录的行情文件,根据行情文件数据接口规范获取行情文件中行情市场时间,并将其与前一次获取的行情市场时间对比,判断行情市场时间是否发生变化。
50.步骤s11,若行情市场时间未发生变化,则说明本次行情无更新,无需处理,等待下一次扫描检测。
51.步骤s12,若行情市场时间发生变化,则读取行情数据,并按证券代码分块数据,将分块数据存入数据缓存队列,同时,计算每个分块数据的哈希值,将哈希值与序号(即分块数据块的序号)存入哈希缓存队列。
52.步骤s13,定义数据接口规范,当与下级子节点连接时,根据发送数据类型读取缓存队列数据通过数据流传输至下级子节点。所述发送数据类型包括全量数据发送和增量数
据发送。
53.具体地,步骤s13进一步包括:
54.步骤s131,初始化服务等待下级连接,加载各缓存队列;
55.步骤s132,检查当前时间点是否需要发送全量数据;
56.步骤s133,若当前时间点需发送全量数据,则直接遍历读取数据缓存队列中数据,增加全量标识组成新的数据包,并发送至当前所有连接的下级子节点。在本发明具体实施例中,可设置定期发送全量数据,则实时检查当前时间点是否为设置的定期发送全量数据的时间点,若当前时间点为全量数据的发送时间点,则直接遍历读取数据缓存队列中数据,并增加全量标识组成新的数据包,发送至当前所有下级连接的子节点客户端,例如可设置每15秒发送一次全量,则根据设置判断当前时间点是否为全量数据发送的时间点,若是,则直接遍历读取数据缓存队列中数据,并增加全量标识组成新的数据包,发送至当前所有下级连接的子节点客户端,否则则实时检测并发送增量变化数据,减少数据传输量。
57.具体地,步骤s133进一步包括:
58.步骤s133a,读取数据缓存队列中的分块数据,增加全量标识组成新的数据包,并发送数据包,将当前分块数据的哈希值及对应的序号更新至历史哈希缓存队列中。这里需说注意的是,本发明中的哈希缓存队列有两个,一个是当前最新数据的当前数据哈希缓存队列,以及前一次数据发送完成后的历史哈希缓存队列。
59.步骤s133b,当前分块数据发送完毕后,继续检查数据缓存队列直至完毕,当所有全量发送完毕,发送全量结束标记的数据包,通知下级子节点本次更新完成。
60.步骤s134,若当前时间点不是全量数据发送的时间点,则表示当前时间点的发送类型为增量数据发送,读取哈希缓存队列,根据读取的哈希值对比相对前次数据是否发送变化,并从数据缓存队列遍历读取发生变化的行情数据,增加增量标识组成新的数据包发送至所有下级子节点客户端。需说明的是,增量数据的发送是实时的,通过实时判断行情数据是否有变化进行增量数据的发送。如果当前与定期全量发送时间重合,则会直接发送全量数据。
61.具体地,步骤s134进一步包括:
62.步骤s134a,读取当前数据哈希缓存队列,并通过序号获取历史哈希缓存队列中对应数据块的历史哈希值。在本发明中,哈希队列有两个,当前最新数据的哈希缓存队列,以及前一次数据发送完成后的历史哈希缓存队列。
63.步骤s134b,根据哈希值对比当前数据块与前次对应的数据块是否一致,即将当前数据块对应的哈希值与其对应的历史哈希值进行比对,以比对两者是否一致,若一致则说明当前数据块即行情数据未发生变化,若不一致则说明当前数据块即行情数据发生变化。
64.步骤s134c,若根据哈希值判断一致则说明当前数据块,也即当前证券代码对应的行情数据没有发生变化,无需发送至下级客户端,跳过本次检查,继续对比下一个数据块。
65.步骤s134d,若根据哈希值判断当前数据块与前次对应的数据块不一致,则说明当前行情数据有更新,则通过序号查找对应的分块数据,从数据缓存队列获取到对应的行情数据,同时增加增量标识和序号后组成新的数据包发送至当前所有连接的下级子节点客户端,并将本次哈希值及对应的数据块序号更新至历史哈希缓存队列中。
66.步骤s134e,当数据发送完毕后,继续读取哈希缓存队列直至完毕,当所有增量数
据发送完毕,则发送增量结束标记的数据包,通知下级子节点本次更新完成。
67.步骤s2,下级子节点于接收到上级节点发送的数据流时,解析数据包组装完整行情文件,或直接转发接收到的数据流至下游应用系统,即作为级联的上级节点。
68.在传统方式下,上级节点的行情文件传输到下级节点时,此时会写入文件,下级节点应用使用行情文件时,则需要读取本地磁盘上的文件,而本发明中,行情数据传输到下级子节点后,不需要写文件,应用可以直接读取流数据使用,从而减少了读盘和落盘消耗。也就是说,如果要兼容旧的应用系统,下级子节点可以选择生产文件,如果新系统,可以直接接收数据流并解析使用,展示行情数据。
69.具体地,步骤s2进一步包括:
70.步骤s200,连接至上级节点,接收上级节点发送的数据包,所述数据包中包含有全量或增量标识。
71.步骤s201,解析数据包头信息,根据数据包头信息中全量或增量标识,读取数据消息体,若为全量数据包,则按数据包的接收顺序,更新对应行情文件,直至接收到结束标记后关闭文件,若为增量数据包,则根据数据包中的序号,更新对应行情文件指定数据块,直至接收到结束标记后关闭文件。
72.优选地,虽然现有技术与本发明在数据传输过程中都是数据流,但传统方式下,上级节点会读取文件所有内容,并全部传输到下级,传输数据没有标准接口供第三方应用使用,下级子节点只有生成文件后才能给第三方应用使用,占用带宽过高,而本发明中上级检查文件更新,通过全量加增量的方式传输数据,下级应用使用本发明定义的接口(上下级规范一致即可,下发数据包安装约定规范,下游解析使用时也遵循相同规范),可直接使用行情数据,占用带宽更低,同时传输效率更高。
73.可见,本发明通过实时检测行情文件的更新,将行情数据通过定期增量加实时全量的方式传输至下级客户端节点或应用,下级子节点客户端可以选择继续级联发送其他应用,或者输出行情文件供老旧应用系统使用。
74.图2为本发明一种行情文件转数据流传输的装置的系统架构图。如图2所示,本发明一种行情文件转数据流传输的装置,包括:
75.主节点服务端20,用于通过扫描行情文件的方式,检测行情变化,于检测到行情变化时,读取行情数据并按证券代码对行情数据分块以及计算相应数据分块的哈希值,并存入相应的缓存队列,当与下级子节点建立连接时,根据发送数据类型读取缓存队列数据通过数据流传输至下级子节点。
76.具体地,如图3所示,主节点服务端20进一步包括:
77.行情市场时间获取单元201,用于扫描行情文件,根据行情文件数据接口规范获取所述行情文件中的行情市场时间。
78.具体地说,上级节点,启动扫描功能,扫描指定目录的行情文件,根据行情文件数据接口规范获取行情文件中行情市场时间,并将其与前一次获取的行情市场时间对比,判断行情市场时间是否发生变化。
79.行情更新判断处理单元202,用于根据获得的行情市场时间检测行情是否变化,若行情市场时间未发生变化,则说明本次行情无更新,无需处理,等待下一次扫描检测,若行情市场时间发生变化,则读取行情数据,并按证券代码分块数据,将分块数据存入数据缓存
队列,同时,计算每个分块数据的哈希值和序号存入哈希缓存队列。
80.连接传输单元203,用于等待下级子节点连接,当与下级子节点建立连接时,根据发送数据类型读取缓存队列数据通过数据流传输至下级子节点。
81.具体地,连接传输单元203进一步包括:
82.数据加载模块2031,用于初始化服务等待下级连接,加载各缓存队列。
83.全量传输处理模块2032,用于在检查到当前时间点为设置的全量数据发送时间点时,直接遍历读取数据缓存队列中数据,增加全量标识组成新的数据包,并发送至当前所有下级连接的客户端。在本发明具体实施例中,设置定期发送全量数据,则实时检查当前时间点是否需要发送全量,若当前时间点为全量数据的发送时间点,则直接遍历读取数据缓存队列中数据,并增加全量标识组成新的数据包,发送至当前所有下级连接的客户端。
84.全量传输处理模块2032具体用于:
85.读取数据队列中的分块数据,增加全量标识组成新的数据包,并发送数据包至下级子节点客户端,同时将当前分块数据的哈希值及序号更新至历史哈希缓存队列中。
86.当当前分块数据发送完毕,继续检查数据缓存队列直至完毕,当所有全量发送完毕,发送全量结束标记的数据包,通知下级子节点本次更新完成。
87.增量传输处理模块2033,用于当前时间点不是设置的全量数据发送时间点进行增量数据发送时,读取哈希缓存队列中数据,根据哈希值对比相对前次数据是否发送变化,遍历读取发生变化的行情数据,增加增量标识组成新的数据包发送至所有下级客户端。
88.增量传输处理模块2033具体用于:
89.读取哈希缓存队列的缓存数据,同时根据序号查找对应数据块的历史哈希值。需说明的是,本发明的哈希缓存队列有两个,一个是当前最新数据的哈希缓存队列,另一个则是前一次数据发送完成后的历史哈希缓存队列。
90.根据哈希值对比当前数据块与前次对应的数据块是否一致,即将当前数据块对应的哈希值与其对应的历史哈希值进行比对,以比对两者是否一致,若一致则说明当前数据块即行情数据未发生变化,若不一致则说明当前数据块即行情数据发生变化。
91.若根据哈希值判断一致则说明当前数据块,也即当前证券代码对应的行情数据,没有发生变化,无需发送至下级子节点客户端,跳过本次检查,继续对比下一个数据块;若根据哈希值判断当前数据块与前次对应的数据块不一致,则说明当前行情数据有更新,则通过序号从数据缓存队列获取对应的分块数据,同时增加增量标识组成新的数据包,并发送数据,并将本次哈希值及对应的序号更新至历史哈希缓存队列中。
92.当数据发送完毕后,继续读取哈希缓存队列直至完毕,当所有增量数据发送完毕,则发送增量结束标记的数据包,通知下级子节点本次更新完成。
93.若干子节点21,各子节点21用于接收上级节点发送的数据包,解析数据包组装完整行情文件,或直接转发接收到的数据流至下游应用系统。。
94.具体地,子节点21进一步包括:
95.数据包接收单元210,用于连接至上级节点,接收上级节点发送的数据包,所述数据包中包含有全量或增量标识。
96.解析处理单元211,用于解析数据包头信息,根据数据包头信息中全量或增量标识,读取数据消息体,若为全量数据包,则按数据包的接收顺序,更新对应行情文件,直至接
收到结束标记后关闭文件,若为增量数据包,则根据数据包中的序号,更新对应行情文件指定数据块,直至接收到结束标记后关闭文件。
97.实施例
98.图3为本发明实施例所描述的整个发明的架构图,描述了本发明系统的层级关系,首先,本系统主节点服务端,通过扫描行情文件的方式,检测行情变化,读取数据通过数据流传输至下级子节点,下级子节点同时具备发送和接收的功能,从上级的服务端接收的数据可以再次发送至下级子节点或应用系统,或者也可以选择输出行情文件兼容老旧系统,实现了文件转数据流并支持多级转发,且中间节点无需落盘的目的。
99.图4为本发明实施例中上级节点的文件检测和处理的具体流程图,过程如下:
100.首先,启动扫描模块服务,扫描指定目录的行情文件,根据行情文件数据接口规范获取文件中行情市场时间。与前一次获取的市场时间对比,判断时间是否发送变化,无变化则说明本次行情无更新,无需处理,等待下一次检测。
101.如果检测到行情发生变化,则读取行情数据,并按证券代码分块数据,将分块数据存入数据缓存队列。同时,将计算每个分块数据的哈希值和序号存入哈希缓存队列。
102.图5为本发明实施例中上级节点发送数据流的处理流程图,其过程如下:
103.第一步,初始化服务等待下级连接,加载各缓存队列。
104.第二步,定期发送全量数据,检查当前时间点是否需要发送全量。如果是全量,则直接遍历读取数据缓存队列中数据,增加全量标识组成新的数据包,并发送至当前所有下级连接的客户端。
105.第三步,如果发送类型为增量,则读取哈希缓存队列中数据,对比前次数据是否发送变化,遍历读取发生变化的行情数据,增加增量标识组成新的数据包发送至下级客户端。
106.图6为本发明实施例中增量数据的发送流程图,增量数据发送过程如下:
107.首先,读取哈希缓存队列缓存数据,同时查找映射关系表中对应数据块的历史哈希值。注意,本实施例中哈希缓存队列有两个,即当前最新数据的哈希队列,以及前一次数据发送完成后的历史哈希队列。
108.对比两个数据是否一致,一致则说明当前数据块,也即当前证券代码对应的行情数据,没有发生变化,无需发送至下级客户端,跳过本次检查,对比下一份数据即可。
109.如果两个数据不一致,则说明当前行情数据有更新,则通过序号从数据缓存队列获取对应的分块数据,同时增加增量标识及数据块序号组成新的数据包,并发送数据。最后,将本次哈希值更新至历史哈希缓存队列中。
110.数据发送完毕后,继续检查队列直至完成,所有增量发送完毕后,发送增量结束标记的数据包,通知下级本次更新完成。
111.图7为本发明实施例中全量数据的发送流程图,与增量数据发送类似,全量数据发送过程如下:
112.首先,读取数据队列中的分块数据,增加全量标识组成新的数据包,并发送数据。最后,将本哈希值更新至历史哈希队列中。
113.数据发送完毕后,继续检查队列直至完成。所有全量发送完毕后,发送全量结束标记的数据包,通知下级本次更新完成。
114.图8为本发明实施例中下级子节点接收数据更新行情文件的处理流程图,其过程
如下:
115.首先,连接至上级服务端,接收数据包。解析数据包头信息。
116.其次,根据包头信息中全量或增量标识,读取数据消息体。如果是全量数据包,则按数据包的接收顺序,更新对应行情文件,直至接收到结束标记后关闭文件。如果是增量数据包,则根据数据包中的序号,更新对应行情文件指定数据块,直至接收到结束标记后关闭文件。
117.至此,以上则为本发明实施例的具体实现步骤,即,实时检测行情文件的更新,将行情数据通过定期增量加实时全量的方式传输至下级客户端节点或应用,下级客户端节点可以选择继续级联发送其他应用,或者输出行情文件供老旧应用系统使用。
118.综上所述,本发明一种行情文件转数据流的方法及装置通过检测文件更新变化,将行情数据分块计算哈希值,通过哈希值判断当前证券代码对应的行情内容是否更新,从而实现增量传输,减少数据流量,定期执行全量传输为定期执行,确保下游系统中断或新应用系统接入时,能快速获取到完整行情,同时,本发明端节点还可以选择输出完整行情文件对接老旧系统,或者直接级联转发至下游应用,本发明通过定期全量加实时增量的方式,能有效减少数据的传输,同时能保证下级应用中断的时候保证数据的完整性,给企业特别是证券公司提供行情文件多级级联下高效传输的解决方案。
119.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1