可左右滑动选省市

行情消息的延时测量方法、装置、设备和存储介质

更新时间:2024-07-01
行情消息的延时测量方法、装置、设备和存储介质 专利申请类型:实用新型专利;
地区:广东-深圳;
源自:深圳高价值专利检索信息库;

专利名称:行情消息的延时测量方法、装置、设备和存储介质

专利类型:实用新型专利

专利申请号:CN202410435379.2

专利申请(专利权)人:深圳华云信息系统科技股份有限公司
权利人地址:广东省深圳市南山区粤海街道高新区社区高新南七道20号深圳国家工程实验室大楼A座9层

专利发明(设计)人:郭国峰,彭冲峰,祝磊,王梅

专利摘要:本申请涉及一种行情消息的延时测量方法、装置、设备和存储介质。该方法包括:根据获取网络结构类型和延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;在目标接收端口抓取接收数据流,在目标发送端口抓取发送数据流;解析接收数据流,在解析后的接收数据流中提取接收行情消息并且为接收行情消息对应设置时间戳;解析发送数据流,在解析后的发送数据流中提取发送行情消息并且为发送行情消息对应设置时间戳;根据代表同一行情消息的接收行情消息和发送行情消息分别对应的时间戳,计算同一行情消息的延时。本申请将延时测量对应到完整的行情消息,使得延时测量结果更加准确,为延时使用者提供更加精准的参考。

主权利要求:
1.一种行情消息的延时测量方法,其特征在于,包括:
获取网络结构类型以及延时测量类型;所述网络结构类型包括:合并式结构和分离式结构;其中,所述合并式结构表示中间设备和辅助客户端被设置在同一主机中,行情网关被设置在另一主机中;所述分离式结构表示行情网关和辅助客户端被设置在同一主机中,中间设备被设置在另一主机中;所述延时测量类型包括:穿透类型和端到端类型;
根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;
在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;
解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;
根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时;
所述根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口,包括:根据所述网络结构类型,在行情消息传输网络中,确定待测量主机;具体为:在所述网络结构类型为合并式结构时,在行情消息传输网络中,将中间设备和辅助客户端所在的主机确定为待测量主机;在所述网络结构类型为分离式结构时,在行情消息传输网络中,将行情网关和辅助客户端所在的主机以及中间设备所在的主机都确定为待测量主机;
根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口;具体为:在所述延时测量类型为穿透类型时,在已确定的待测量主机中,将中间设备中的现场可编程门阵列FPGA单元确定为待测量单元;并且,将所述FPGA单元的接收端口确定为目标接收端口并且将所述FPGA单元的发送端口确定为目标发送端口;在所述延时测量类型为端到端类型时,在已确定的待测量主机中,将行情网关和辅助客户端确定为待测量单元;并且,将所述行情网关的发送端口确定为目标发送端口,将所述辅助客户端的接收端口确定为目标接收端口。
2.根据权利要求1所述的方法,其特征在于,
在所述网络结构类型为合并式结构时,所述FPGA单元的发送端口和所述辅助客户端的接收端口为同一端口;
在所述网络结构类型为分离式结构时,所述辅助客户端仅包括接收端口。
3.根据权利要求1所述的方法,其特征在于,
所述解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳,包括:顺序解析所述接收数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取接收行情消息;其中,所述接收行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;
将针对所述接收行情消息的最后一个数据分片对应的数据包执行第一操作的时间,设置为所述接收行情消息的时间戳;
所述解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳,包括:顺序解析所述发送数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取发送行情消息;其中,所述发送行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;
将针对所述发送行情消息的最后一个数据分片对应的数据包执行第二操作的时间,设置为所述发送行情消息的时间戳;其中,所述第一操作和所述第二操作为相同操作。
4.根据权利要求1所述的方法,其特征在于,所述根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时,包括:在提取出的所述接收行情消息中以及在提取出的所述发送行情消息中,都提取消息来源数据以及消息生成时间;
查询消息来源数据相同并且消息生成时间相同的所述接收行情消息和所述发送行情消息并作为一个消息对;其中,属于同一消息对中的所述接收行情消息和所述发送行情消息代表同一行情消息;
针对每个所述消息对,根据所述消息对中的所述接收行情消息对应的时间戳和所述消息对中的所述发送行情消息对应的时间戳,计算所述同一行情消息的延时。
5.一种行情消息的延时测量装置,其特征在于,所述装置应用于权利要求1所述的行情消息的延时测量方法,所述装置包括:获取模块,用于获取网络结构类型以及延时测量类型;
确定模块,用于根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;
抓取模块,用于在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;
处理模块,用于解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;
计算模块,用于根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,确定所述同一行情消息的延时。
6.一种行情消息的延时测量设备,其特征在于,包括:至少一个通信接口;与所述至少一个通信接口相连接的至少一个总线;与所述至少一个总线相连接的至少一个处理器;与所述至少一个总线相连接的至少一个存储器,其中,所述处理器被配置为:执行所述存储器中存储的行情消息的延时测量程序,以实现权利要求1‑4中任一项所述的行情消息的延时测量方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被执行,以实现权利要求1‑4中任一项所述的行情消息的延时测量方法。 说明书 : 行情消息的延时测量方法、装置、设备和存储介质技术领域[0001] 本申请涉及延时测量技术领域,尤其涉及一种行情消息的延时测量方法、装置、设备和存储介质。背景技术[0002] 在金融领域中,数据是否具有及时性至关重要,所以需要对金融交易所发出的行情消息进行延时测量,根据延时情况调整网络和设备,或者进行链路选择。[0003] 目前,延时测量主要是测量行情网关到交易平台之间的延时。传统的延时测量方法为:行情网关向交易平台发送携带行情消息的测量数据包,在交易平台抓取该测量数据包。其中,行情网关在封装测量数据包时,为该测量数据包添加的发送时间戳,这样,在交易平台就可以根据测量数据包的发送时间戳和时间戳之间的差值,确定行情网关到交易平台之间的延时。[0004] 但是,在实际应用中,采用传统方法测量的延时只能作为粗略参考,其精准度较低,原因如下:第一:传统方法测量的延时仅为行情网关到交易平台的链路延时,并非单个行情消息的整体传输延时;在单条行情消息的传输过程中,不仅在行情网关和交易平台之间存在延时,在交易平台内部以及在交易平台和客户端之前都存在延时,而这些延时都是不容忽视的,所以仅测量行情网关和交易平台之间的延时是远远不够的。第二:传统方法粗略地认为一个数据包仅携带一个行情消息,而且只有这样才能将数据包的收发延时,看作为单条行情消息的收发延时;但是,在实际应用中,在一个数据包中,可能携带多个行情消息,也可能只携带部分行情消息(即一个行情消息被分到至少两个数据包中),针对这种情况,传统方法无法确定每个行情消息对应的延时。发明内容[0005] 本申请提供了一种行情消息的延时测量方法、装置、设备和存储介质,以解决传统方法测量的延时只能作为粗略参考,其精准度较低的问题。[0006] 针对上述技术问题,本申请技术方案是通过如下实施例来解决的:[0007] 本申请实施例提供了一种行情消息的延时测量方法,包括:获取网络结构类型以及延时测量类型;根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时。[0008] 其中,所述根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口,包括:根据所述网络结构类型,在行情消息传输网络中,确定待测量主机;其中,所述待测量主机的数量为至少一个;根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口;其中,所述待测量单元的数量为至少一个;所述目标接收端口和所述目标发送端口属于相同或者不同的待测量单元。[0009] 其中,所述网络结构类型包括:合并式结构和分离式结构;其中,所述合并式结构表示中间设备和辅助客户端被设置在同一主机中,行情网关被设置在另一主机中;所述分离式结构表示行情网关和辅助客户端被设置在同一主机中,中间设备被设置在另一主机中;所述根据所述网络结构类型,在行情消息传输网络中,确定待测量主机,包括:在所述网络结构类型为合并式结构时,在行情消息传输网络中,将中间设备和辅助客户端所在的主机确定为待测量主机;在所述网络结构类型为分离式结构时,在行情消息传输网络中,将行情网关和辅助客户端所在的主机以及中间设备所在的主机都确定为待测量主机。[0010] 其中,所述延时测量类型包括:穿透类型和端到端类型;所述根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口,包括:在所述延时测量类型为穿透类型时,在已确定的待测量主机中,将中间设备中的现场可编程门阵列FPGA单元确定为待测量单元;并且,将所述FPGA单元的接收端口确定为目标接收端口并且将所述FPGA单元的发送端口确定为目标发送端口;在所述延时测量类型为端到端类型时,在已确定的待测量主机中,将行情网关和辅助客户端确定为待测量单元;并且,将所述行情网关的发送端口确定为目标发送端口,将所述辅助客户端的接收端口确定为目标接收端口。[0011] 其中,在所述网络结构类型为合并式结构时,所述FPGA单元的发送端口和所述辅助客户端的接收端口为同一端口;在所述网络结构类型为分离式结构时,所述辅助客户端仅包括接收端口。[0012] 其中,所述解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳,包括:顺序解析所述接收数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取接收行情消息;其中,所述接收行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述接收行情消息的最后一个数据分片对应的数据包执行第一操作的时间,设置为所述接收行情消息的时间戳;所述解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳,包括:顺序解析所述发送数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取发送行情消息;其中,所述发送行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述发送行情消息的最后一个数据分片对应的数据包执行第二操作的时间,设置为所述发送行情消息的时间戳;其中,所述第一操作和所述第二操作为相同操作。[0013] 其中,所述根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时,包括:在提取出的所述接收行情消息中以及在提取出的所述发送行情消息中,都提取消息来源数据以及消息生成时间;查询消息来源数据相同并且消息生成时间相同的所述接收行情消息和所述发送行情消息并作为一个消息对;其中,属于同一消息对中的所述接收行情消息和所述发送行情消息代表同一行情消息;针对每个所述消息对,根据所述消息对中的所述接收行情消息对应的时间戳和所述消息对中的所述发送行情消息对应的时间戳,计算所述同一行情消息的延时。[0014] 本申请实施例还提供了一种行情消息的延时测量装置,包括:获取模块,用于获取网络结构类型以及延时测量类型;确定模块,用于根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;抓取模块,用于在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;处理模块,用于解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;计算模块,用于根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,确定所述同一行情消息的延时。[0015] 本申请实施例还提供了一种行情消息的延时测量设备,包括:至少一个通信接口;与所述至少一个通信接口相连接的至少一个总线;与所述至少一个总线相连接的至少一个处理器;与所述至少一个总线相连接的至少一个存储器,其中,所述处理器被配置为:执行所述存储器中存储的行情消息的延时测量程序,以实现上述任一项所述的行情消息的延时测量方法。[0016] 本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被执行,以实现上述任一项所述的行情消息的延时测量方法。[0017] 本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的方法可以获取网络结构类型以及延时测量类型;根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时。通过本申请实施例的方式,可以按照延时测量需求,确定待测量的目标发送端口和目标接收端口,并且在目标发送端口和目标接收端口分别抓取数据流并进行完整行情消息的提取,并且根据完整的行情消息在目标发送端口和目标接收端口分别对应的时间戳确定延时,将延时测量对应到完整的行情消息,使得延时测量结果更加准确,可以为延时使用者提供更加精准的参考。附图说明[0018] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。[0019] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0020] 一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。[0021] 图1为根据本申请一实施例的行情消息的延时测量方法的流程图;[0022] 图2为根据本申请一实施例的合并式结构的行情消息传输网络的结构图;[0023] 图3为根据本申请一实施例的分离式结构的行情消息传输网络的结构图;[0024] 图4为根据本申请一实施例的目标接收端口和目标发送端口的确定步骤流程图;[0025] 图5为根据本申请一实施例的行情消息的延时测量装置的结构图;[0026] 图6为根据本申请一实施例的行情消息的延时测量设备的结构图。具体实施方式[0027] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。[0028] 下文的公开提供了许多不同的实施例或例子用来实现本申请的不同结构。为了简化本申请的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。[0029] 本申请实施例提供了一种行情消息的延时测量方法。如图1所示,为根据本申请一实施例的行情消息的延时测量方法的流程图。[0030] 步骤S110,获取网络结构类型以及延时测量类型。[0031] 网络结构类型,用于指示行情消息传输网络中各个设备的主机的设置位置。其中,行情消息传输网络中的设备包括:行情网关,中间设备和辅助客户端。行情网关用于将行情源生成的行情消息向客户端发送。中间设备位于行情网关和客户端之间,用于消息转发。辅助客户端为多个客户端中的一个,用于由接收行情网关发送并且由中间设备转发的行情消息。根据测试需求的不同,辅助客户端被设置在不同位置。行情网关,中间设备和辅助客户端可以设置在相同或者不同的主机中,也即是说,一个主机中可以设置至少一个设备。[0032] 延时测量类型,用于指示待测量的延时类型。其中,延时测量类型包括:端到端类型和穿透类型。[0033] 端到端类型是指需要测量行情消息从行情网关发出,到辅助客户端接收之间存在的延时。[0034] 穿透类型是指需要测量行情消息从中间设备接收,到中间设备发送之间存在的延时,即在中间设备转发行情消息时的内部延时。[0035] 行情消息传输网络为预先设置。网络结构类型可以为预先设置也可以由延时需求者选择。延时测量类型可以由延时需求者选择。[0036] 步骤S120,根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口。[0037] 根据网络结构类型,可以确定各个设备所在的主机,进而确定测量延时的时候需要针对的主机,即待测量主机。[0038] 根据延时测量类型,可以在待测量主机中,确定测量延时的时候需要针对的端口,即目标端口。目标端口的数量为两个,包括:目标接收端口和目标发送端口。[0039] 根据网络结构类型,在行情消息传输网络中,确定待测量的主机;根据延时测量类型,在待测量主机中,确定待测量的目标接收端口和目标发送端口。具体确定目标接收端口和目标发送端口的方式将在后面详细介绍,在此不做赘述。[0040] 步骤S130,在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流。[0041] 接收数据流为目标接收端口所接收的数据流。[0042] 发送数据流为目标发送端口所发出的数据流。[0043] 这样,接收数据流和发送数据流都为数据流。在数据流中包括多个数据包。抓取数据流即为抓取数据包。数据流用于承载一个或者多个行情消息。根据数据包可携带的数据量,可以将一个行情消息划分为至少一个数据分片,每个数据分片被一个数据包携带。也即是说,在每个数据包中,可能携带行情消息的一个数据分片(即部分行情消息),可能携带至少一个完整的行情消息,可能携带至少一个完整的行情消息以及一个行情消息的一个数据分片(即至少一个完整行情消息以及一个部分行情消息)。进一步地,数据包的种类可以是PCAP(PacketCapture)数据包。[0044] 步骤S140,解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳。[0045] 接收行情消息是指在接收数据流中提取的行情消息。[0046] 发送行情消息是指在发送数据流中提取的行情消息。[0047] 在抓取到数据流之后,解码数据流,解析数据流,进而提取出数据流中承载的每一个完整的行情消息并且为每一个完整的行情消息设置时间戳。其中,时间戳为针对数据流中的数据包执行预设操作的时间;为所述接收行情消息设置的时间戳所对应的操作和为所述发送行情消息设置的时间戳所对应的操作相同。这样可以使时间戳的设置具有一致性,使时间戳之间具有可比性。例如:时间戳都采用解析时间或者都采用抓取时间。[0048] 如果设置将抓取时间作为时间戳,则在一个数据包中解析并提取出的完整的行情消息,将该数据包的抓取时间设置为该完整的行情消息的时间戳;在多个数据包中解析并提取出的完整的行情消息时,即解析多个数据包并且由多个数据包中提取出的数据分片拼接出一个完整的行情消息,将最后一个数据分片对应的数据包的抓取时间,设置为该完整的行情消息的时间戳。[0049] 如果设置将解析时间作为时间戳,则在一个数据包中解析并提取出的完整的行情消息,将该数据包的解析时间设置为该完整的行情消息的时间戳;在多个数据包中解析并提取出的完整的行情消息时,即解析多个数据包并且由多个数据包中提取出的数据分片拼接出一个完整的行情消息,将最后一个数据分片对应的数据包的解析时间,设置为该完整的行情消息的时间戳。[0050] 步骤S150,根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时。[0051] 同一行情消息的消息来源数据和消息生成时间相同。[0052] 消息来源数据的类型包括但不限于:证券代码。[0053] 消息生成时间是指:行情消息在行情源的生成时间。[0054] 具体而言,消息来源数据和消息生成时间都相同的行情消息为同一个行情消息。由此,本实施例在提取出的所述接收行情消息中以及在提取出的所述发送行情消息中,都提取消息来源数据以及消息生成时间;查询消息来源数据相同并且消息生成时间相同的所述接收行情消息和所述发送行情消息并作为一个消息对;其中,属于同一消息对中的所述接收行情消息和所述发送行情消息代表同一行情消息;针对每个所述消息对,根据所述消息对中的所述接收行情消息对应的时间戳和所述消息对中的所述发送行情消息对应的时间戳,计算所述同一行情消息的延时。[0055] 在本申请实施例中,除了可以计算行情消息的延时,还可以确定预设类型的行情消息的延时。进一步地,在提取出的所述接收行情消息中以及在提取出的所述发送行情消息中,都提取行情消息类型、消息来源数据以及消息生成时间;查询行情消息类型相同、消息来源数据相同并且消息生成时间相同的所述接收行情消息和所述发送行情消息并作为一个消息对;针对每个所述消息对,根据所述消息对中的所述接收行情消息对应的时间戳和所述消息对中的所述发送行情消息对应的时间戳,计算所述行情消息类型的行情消息的延时。行情消息类型包括但不限于:指数快照行情、十档快照行情、期权快照行情、逐笔合并行情。[0056] 在本申请实施例中,获取网络结构类型以及延时测量类型;根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时。通过本申请实施例的方式,可以按照延时测量需求,确定待测量的目标发送端口和目标接收端口,并且在目标发送端口和目标接收端口分别抓取数据流并进行完整行情消息的提取,并且根据完整的行情消息在目标发送端口和目标接收端口分别对应的时间戳确定延时,将延时测量对应到完整的行情消息,使得延时测量结果更加准确,可以为延时使用者提供更加精准的参考。[0057] 为了使本申请实施例更加容易理解,下面将对时延测量方法进行进一步地描述。[0058] 下面针对行情消息的传输网络进行进一步地描述。[0059] 行情消息的传输网络包括但不限于:行情网关,至少一个中间设备以及多个客户端。行情网关连接每个中间设备。每个中间设备连接多个客户端。在本实施例中,中间设备可以是交易平台设备。例如:交易平台对应的交换机。[0060] 行情网关的位置一般与行情源的位置相同,故未示出行情源。行情源顺序生成行情消息之后,顺序将生成的行情消息发送给行情网关。行情网关根据顺序接收的行情消息,生成数据包,并向中间设备发送,继而在行情网关和中间设备之间形成数据流。进一步地,根据行情网关和中间设备之间采用的第一传输协议,确定行情网关和中间设备之间待传输的数据包可携带的第一数据量;行情网关根据第一数据量的大小,将行情消息划分为至少一个数据分片并封装在至少一个数据包中。其中,行情网关和中间设备之间采用的第一传输协议可以是TCP协议(TransmissionControlProtocol,传输控制协议)。[0061] 中间设备中的FPGA(FieldProgrammableGateArray,现场可编程门阵列)接收并向客户端转发来自行情网关的数据包。进一步地,由于中间设备和客户端之间采用的第二传输协议与第一传输协议可能不同,使得中间设备和客户端之间传输的数据包可携带的第二数据量与第一数据量不同,所以,中间设备中的FPGA需要按照数据包的接收顺序,顺序解码并解析数据包,在数据包中提取数据,按照第二数据量将提取出的数据封装为数据包,并以组播的方式向中间设备连接的各个客户端发送。其中,中间设备和客户端之间采用的第二传输协议可以是UDP协议(UserDatagramProtocol,用户数据报协议)。[0062] 例如:行情网关根据第一传输协议将行情消息划分为3个数据分片,并使用3个数据包分别传输每个数据分片;中间设备在顺次接收到这3个数据包之后,顺次解码、解析这3个数据包,并在每个数据包中提取数据分片;中间设备按照第二传输协议,将这3个数据分片重新进行切片划分,如划分为4个数据分片,并使用4个数据包分别传输每个数据分片。[0063] 各个客户端在接收到中间设备发送的数据包之后,完成解码、解析之后,可以提取数据分片并拼接出完整的行情消息,用户可以参考行情消息完成线上交易。[0064] 正是由于中间设备的重新封装操作,使得中间设备两端的数据包携带的数据可能是不同的,而且,中间设备不间断的接收数据流,发送数据流,导致接收的数据流和发送的数据流之间没有对应关系,也即是说,中间设备发送的数据包具体对应哪些接收的数据包是无法确定的,所以在现实应用中,如果仅是根据数据包的发送时间和数据包的接收时间来确定延时情况将是不准确的,延时结果无法精准地对应到每个行情消息。[0065] 为此,本申请实施例在行情消息的传输网络中设置辅助客户端,辅助客户端可以在功能上与正常客户端相同,或者,仅具有正常客户端的部分功能或者部分端口。辅助客户端在设置位置上与正常的客户端有所区别。正常客户端设置在用户设备侧,由正常用户使用。辅助客户端的位置根据需求而定。[0066] 具体而言,在各个设备的位置设置上,网络结构类型包括:合并式结构和分离式结构。[0067] 所述合并式结构表示中间设备和辅助客户端被设置在同一主机中,行情网关被设置在另一主机中。如图2所示,为根据本申请一实施例的合并式结构的行情消息传输网络的结构图。中间设备和辅助客户端位于主机1,行情网关位于主机2。[0068] 所述分离式结构表示行情网关和辅助客户端被设置在同一主机中,中间设备被设置在另一主机中。如图3所示,为根据本申请一实施例的分离式结构的行情消息传输网络的结构图。中间设备位于主机3,行情网关和辅助客户端位于主机4。[0069] 在本申请实施例中,在进行延时测量时,可以针对每个中间设备执行本申请实施例,进而针对每个中间设备,确定网络的穿透类型和端到端类型的延时。由于图2和图3用于描述行情网关、中间设备和辅助客户端的设置位置,所以图2和图3中仅示出一个中间设备并且均未示出其他客户端。其中,在图2和图3中,圆圈内的标号表示端口的标号。[0070] 下面针对目标接收端口和目标发送端口的确定方式进行描述。[0071] 如图4所示,为根据本申请一实施例的目标接收端口和目标发送端口的确定步骤流程图。[0072] 步骤S410,根据所述网络结构类型,在行情消息传输网络中,确定待测量主机;其中,所述待测量主机的数量为至少一个。[0073] 在所述网络结构类型为合并式结构时,在行情消息传输网络中,将中间设备和辅助客户端所在的主机确定为待测量主机。例如:在网络结构类型为合并式结构时,将图2中的主机1确定为待测量主机,此时,涉及的待测量主机的数量为一个。进一步地,为了执行方便,本申请实施例在中间设备和辅助客户端所在的主机执行,因此,将中间设备和辅助客户端所在的主机确定为待测量主机。如果本申请实施例可以在多端执行,则除了将中间设备和辅助客户端所在的主机确定为待测量主机,还可以将行情网关所在的主机也确定为待测量主机。[0074] 在所述网络结构类型为分离式结构时,在行情消息传输网络中,将行情网关和辅助客户端所在的主机以及中间设备所在的主机都确定为待测量主机。进一步地,如果需求为测量端到端的延时,那么本申请实施例将在行情网关和辅助客户端所在的主机执行;如果需求为测量穿透类型的延时,那么本申请实施例将在中间设备所在的主机执行;所以,在未确定延时测量需求时,将行情网关和辅助客户端所在的主机以及中间设备所在的主机都确定为待测量主机。例如:在网络结构类型为分离式结构时,将图3中的主机3和主机4都确定为待测量主机,此时,涉及的待测量主机的数量为两个。[0075] 步骤S420,根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口;其中,所述待测量单元的数量为至少一个;所述目标接收端口和所述目标发送端口属于相同或者不同的待测量单元。[0076] 所述延时测量类型包括:穿透类型和端到端类型。[0077] 在所述延时测量类型为穿透类型时,在已确定的待测量主机中,将中间设备中的FPGA单元确定为待测量单元;并且,将所述FPGA单元的接收端口确定为目标接收端口并且将所述FPGA单元的发送端口确定为目标发送端口。例如:在图2中,目标接收端口为端口2,目标发送端口为端口3,以便测量端口2和端口3之间的穿透类型的延时。在图3中,目标接收端口为端口6,目标发送端口为端口7,以便确定端口6和端口7之间的穿透类型的延时。[0078] 在所述延时测量类型为端到端类型时,在已确定的待测量主机中,将行情网关和辅助客户端确定为待测量单元;并且,将所述行情网关的发送端口确定为目标发送端口,将所述辅助客户端的接收端口确定为目标接收端口。例如:在本申请实施例可以多端执行的情况下,在图2中,目标发送端口为端口1,目标接收端口为端口4,以便确定端口1和端口4之间的端到端类型的延时。在图3中,目标发送端口为端口5,目标接收端口为端口8,以便确定端口5和端口8之间的端到端类型的延时。[0079] 在本申请实施例中,在所述网络结构类型为合并式结构时,所述FPGA单元的发送端口和所述辅助客户端的接收端口为同一端口。进一步地,为了节约主机资源,针对处于同一主机的中间设备和辅助客户端,两者相连接的端口可以确定为是一个端口,并不设置具有完全功能的辅助客户端。也可以认为辅助客户端不涉及真正的业务服务,所以辅助客户端仅包括接收端口,该接收端口与中间设备的发送端口为同一端口。例如:图2中的端口3和端口4可以认为是同一端口,该端口既要作为FPGA的发送端口,也要作为辅助客户端的接收端口。在这种情况下,认为数据包在FPGA单元的发送时间、数据包在辅助客户端的接收时间以及数据包的抓取时间相同。[0080] 在本申请实施例中,在所述网络结构类型为分离式结构时,所述辅助客户端仅包括接收端口。进一步地,为了节省主机资源,针对行情网关和辅助客户端处于同一主机的情况,辅助客户端不涉及真正的业务服务,所以辅助客户端可以仅包括接收端口,不设置具有完全功能的辅助客户端。例如:在图3中,辅助客户端仅包括端口8。在这种情况下,数据包在该接收端口的接收时间与数据包的抓取时间相同。[0081] 由于中间设备如何处理接收的数据流是未知的,所以,本申请实施例在目标接收端口和目标发送端口分别抓取数据流,根据分别抓取的数据流,确定同一个行情消息在目标接收端口和目标发送端口分别对应的时间戳,并据此确定延时。进一步地,本申请实施例在目标接收端口进行tcpdump抓包,在目标发送端口进行tcpdoump抓包。[0082] 由于在所述网络结构类型为合并式结构时,所述FPGA单元的发送端口和所述辅助客户端的接收端口为同一端口。所以,在延时测量类型为端到端类型时,本申请实施例可以在行情网关的发送端口抓取发送数据流,在FPGA单元的发送端口抓取接收数据流。当然,在这种情况下,本申请实施例需要在行情网关所在主机以及辅助客户端所在的主机分别抓取数据,并将数据汇聚在一处,进行延时计算。进一步地,可以调用中间设备和辅助客户端所在主机的API(ApplicationProgrammingInterface,应用程序编程接口),利用该API读取内存地址中的时间戳,该时间戳为FPGA单元发送数据包的时间,进而获得数据包在FPGA单元的发送时间,将该发送时间作为数据包的抓取时间。[0083] 由于在所述网络结构类型为分离式结构时,所述辅助客户端仅包括接收端口。所以本申请实施例可以在行情网关所在主机的预设接收端口抓取接收数据流。该预设接收端口为辅助客户端对应的接收端口。进一步地,可以调用行情网关所在主机的API,利用该API读取内存地址中的时间戳,该时间戳为主机的预设接收端口接收到数据包的时间,进而获得数据包在该预设接收端口的接收时间,将该接收时间作为数据包的抓取时间。[0084] 下面针对如何解析数据流,如何提取行情消息以及如何设置时间戳的方式进行描述。[0085] 针对接收数据流,顺序解析所述接收数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取接收行情消息;其中,所述接收行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述接收行情消息的最后一个数据分片对应的数据包执行第一操作的时间,设置为所述接收行情消息的时间戳。进一步地,当接收行情消息仅包括一个数据分片时,该数据分片就是接收行情消息本身。[0086] 针对发送数据流,顺序解析所述发送数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取发送行情消息;其中,所述发送行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述发送行情消息的最后一个数据分片对应的数据包执行第二操作的时间,设置为所述发送行情消息的时间戳。其中,第一操作和第二操作为相同操作。进一步地,当发送行情消息仅包括一个数据分片时,该数据分片就是发送行情消息本身。[0087] 时间戳为执行预设操作的时间,即在抓取、解码、解析数据包并且在数据包中提取数据的过程中,记录执行预设操作的时间,根据记录的时间(如:抓取时间),为行情消息设置时间戳。这样,提取接收行情消息时需要记录执行时间的第一操作和提取发送行情消息时需要记录执行时间的第二操作相同,可以使时间戳的设置具有一致性,使时间戳之间具有可比性。例如:时间戳采用解析时间或者抓取时间。[0088] 例如:在数据包1中包括3个完整的行情消息和1个数据分片1,在数据包2中包括1个数据分片2,而且数据分片1和数据分片2可以拼接为一个完整的行情消息,那么可以将数据包1的抓取时间设置为3个完整的行情消息的时间戳,将数据包2的抓取时间设置为数据分片1和数据分片2组成的完整的行情消息的时间戳。[0089] 在解析数据包的过程中,可以从数据包的头部读取到数据包携带的行情消息个数以及每个行情消息的长度,根据行情消息个数以及每个行情消息的长度,在数据包中提取数据,得到行情消息。进一步地,从行情消息的起始位置开始提取数据,根据行情消息的长度,校验是否已经提取到行情消息的尾部,如果已经到达尾部,则缓存尾部的分片数据,并且缓存尾部所在数据包的抓取时间,开始提取下一个行情消息;如果尚未到达尾部,则缓存当前数据分片。[0090] 其中,由于来自不同行情源的行情消息的编码方式不同,所以根据行情消息的来源不同,需要使用不同的解码和解析方式,以便在数据包中正确解析出分片数据。例如:沪市的行情消息为step‑fast行情消息,深市的行情消息为binary行情消息,两种来源的行情消息在数据包中的数据结构是有差异的,在解码和解析时,需要识别数据包的来源,使用该来源对应的解码和解析方式,正确解码和解析数据包。进一步地,可以在数据包的包头中携带该数据包的来源信息。[0091] 本申请实施例将延时测量聚焦到完整的行情消息上,可以准确地测量每条行情消息对应的延时,可以单独测量端到端类型的延时,也可以测量穿透类型的延时,这样既可以测量行情网关到中间设备的链路延时,又可以测量中间设备内部的穿透延时,还可以测量行情网关到辅助客户端之间的传输延时,延时测量的类型更能满足延时需求方的需求,而且延时测量的准确性更高。[0092] 本申请实施例可以针对step‑fast行情消息,mddp行情消息和binary行情消息进行延时测量,虽然step‑fast行情消息,mddp行情消息和binary行情消息的消息结构不同,但是本申请实施例仅需配置相应协议的编解码方式以及解析方式,就可以准确测量step‑fast行情消息,mddp行情消息和binary行情消息的延时,操作相对简单。[0093] 本申请实施例还提供了一种行情消息的延时测量装置。如图5所示,为根据本申请一实施例的行情消息的延时测量装置的结构图。[0094] 该行情消息的延时测量装置,包括:[0095] 获取模块510,用于获取网络结构类型以及延时测量类型。[0096] 确定模块520,用于根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口。[0097] 抓取模块530,用于在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流。[0098] 处理模块540,用于解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳。[0099] 计算模块550,用于根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,确定所述同一行情消息的延时。[0100] 本申请实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。[0101] 本申请实施例还提供了一种行情消息的延时测量设备,如图6所示,为根据本申请一实施例的行情消息的延时测量设备的结构图。[0102] 该行情消息的延时测量设备包括:处理器610、通信接口620、存储器630和通信总线640。其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。[0103] 存储器630,用于存放计算机程序。[0104] 在本申请一个实施例中,处理器610,用于执行存储器630上所存放的程序时,实现前述任意一个方法实施例提供的行情消息的延时测量方法,包括:获取网络结构类型以及延时测量类型;根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口;在所述目标接收端口抓取接收数据流并且在所述目标发送端口抓取发送数据流;解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳;并且,解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳;根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时。[0105] 其中,所述根据所述网络结构类型和所述延时测量类型,在行情消息传输网络中,确定待延时测量的目标接收端口和目标发送端口,包括:根据所述网络结构类型,在行情消息传输网络中,确定待测量主机;其中,所述待测量主机的数量为至少一个;根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口;其中,所述待测量单元的数量为至少一个;所述目标接收端口和所述目标发送端口属于相同或者不同的待测量单元。[0106] 其中,所述网络结构类型包括:合并式结构和分离式结构;其中,所述合并式结构表示中间设备和辅助客户端被设置在同一主机中,行情网关被设置在另一主机中;所述分离式结构表示行情网关和辅助客户端被设置在同一主机中,中间设备被设置在另一主机中;所述根据所述网络结构类型,在行情消息传输网络中,确定待测量主机,包括:在所述网络结构类型为合并式结构时,在行情消息传输网络中,将中间设备和辅助客户端所在的主机确定为待测量主机;在所述网络结构类型为分离式结构时,在行情消息传输网络中,将行情网关和辅助客户端所在的主机以及中间设备所在的主机都确定为待测量主机。[0107] 其中,所述延时测量类型包括:穿透类型和端到端类型;所述根据所述延时测量类型,在已确定的待测量主机中,确定待测量单元,并且在已确定的待测量单元中,确定目标接收端口和目标发送端口,包括:在所述延时测量类型为穿透类型时,在已确定的待测量主机中,将中间设备中的现场可编程门阵列FPGA单元确定为待测量单元;并且,将所述FPGA单元的接收端口确定为目标接收端口并且将所述FPGA单元的发送端口确定为目标发送端口;在所述延时测量类型为端到端类型时,在已确定的待测量主机中,将行情网关和辅助客户端确定为待测量单元;并且,将所述行情网关的发送端口确定为目标发送端口,将所述辅助客户端的接收端口确定为目标接收端口。[0108] 其中,在所述网络结构类型为合并式结构时,所述FPGA单元的发送端口和所述辅助客户端的接收端口为同一端口;在所述网络结构类型为分离式结构时,所述辅助客户端仅包括接收端口。[0109] 其中,所述解析所述接收数据流,在解析后的所述接收数据流中提取接收行情消息并且为所述接收行情消息对应设置时间戳,包括:顺序解析所述接收数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取接收行情消息;其中,所述接收行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述接收行情消息的最后一个数据分片对应的数据包执行第一操作的时间,设置为所述接收行情消息的时间戳;所述解析所述发送数据流,在解析后的所述发送数据流中提取发送行情消息并且为所述发送行情消息对应设置时间戳,包括:顺序解析所述发送数据流中的各个数据包,并且,在顺序解析的所述各个数据包中,提取发送行情消息;其中,所述发送行情消息为至少一个数据分片,每个所述数据分片由一个所述数据包携带;将针对所述发送行情消息的最后一个数据分片对应的数据包执行第二操作的时间,设置为所述发送行情消息的时间戳;其中,所述第一操作和所述第二操作为相同操作。[0110] 其中,所述根据代表同一行情消息的所述接收行情消息和所述发送行情消息分别对应的时间戳,计算所述同一行情消息的延时,包括:在提取出的所述接收行情消息中以及在提取出的所述发送行情消息中,都提取消息来源数据以及消息生成时间;查询消息来源数据相同并且消息生成时间相同的所述接收行情消息和所述发送行情消息并作为一个消息对;其中,属于同一消息对中的所述接收行情消息和所述发送行情消息代表同一行情消息;针对每个所述消息对,根据所述消息对中的所述接收行情消息对应的时间戳和所述消息对中的所述发送行情消息对应的时间戳,计算所述同一行情消息的延时。[0111] 本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的行情消息的延时测量方法的步骤。由于上面已经对行情消息的延时测量方法进行了详细描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。[0112] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0113] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。[0114] 应理解的是,文中使用的术语仅出于描述特定示例实施方式的目的,而无意于进行限制。除非上下文另外明确地指出,否则如文中使用的单数形式“一”、“一个”以及“所述”也可以表示包括复数形式。术语“包括”、“包含”、“含有”以及“具有”是包含性的,并且因此指明所陈述的特征、步骤、操作、元件和/或部件的存在,但并不排除存在或者添加一个或多个其它特征、步骤、操作、元件、部件、和/或它们的组合。文中描述的方法步骤、过程、以及操作不解释为必须要求它们以所描述或说明的特定顺序执行,除非明确指出执行顺序。还应当理解,可以使用另外或者替代的步骤。[0115] 以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

专利地区:广东

专利申请日期:2024-04-11

专利公开日期:2024-06-18

专利公告号:CN118041831B

电话咨询
读内容
搜本页
回顶部