一种多路行情数据源自动择优的方法及装置与流程

文档序号:24346589发布日期:2021-03-19 12:30阅读:256来源:国知局
一种多路行情数据源自动择优的方法及装置与流程

本发明涉及计算机数据传输及分析技术领域,特别是涉及一种多路行情数据源自动择优的方法及装置。



背景技术:

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

以行情数据为例,随着各交易所行情提速,原文件行情逐步切换到流式行情方式,行情数据不落地转发使用,减少行情读写磁盘的耗时,极大地提高了传输及使用效率,使得证券基金等公司及终端使用者对行情的使用变得更加实时高效。

现有技术中,对于多个行情网关数据源,各证券和基金公司往往都是指定一个主用,在主用源网络或服务异常的时候切换到备用,不会对行情网管数据源自动择优。但随着基于流行情数据的普及推广,各证券和基金公司对于行情的提速也越来越重视,而不同的行情网关数据源也会因为传输线路或硬件条件的差异而有速度的不同,这种不同往往因为资源使用率或其他原因而出现动态差异。

因此,为满足而行情提速的迫切需求,实有必要提出一种对多个行情数据源自动择优的技术手段,以便各券商或者应用系统供应商择优选择行情数据源为客户提供最优质的行情服务。



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种多路行情数据源自动择优的方法及装置,通过对多路行情数据源下发的数据精确对比,实时计算统计出最优行情数据源,并自动切换至最优数据源,同时保证数据无丢失,对下游应用透明无感知。

为达上述目的,本发明提出一种多路行情数据源自动择优的方法,包括如下步骤:

步骤s1,选择并连接多路上级行情数据源,以利用多个链路分别接收各路上级行情数据源的行情数据,并从中初始确定一主用行情数据源;

步骤s2,获取各上级行情数据源链路对应的切换标记,根据各链路对应的切换标记的状态及从各链路获取的行情市场时间确定最优行情数据源链路,并更新主用行情数据源链路及最优行情数据源链路的切换标记;

步骤s3,对处于待切换状态的最优行情数据源链路,获取其当前接收的第一个数据包,保存缓存作为切换时间点标记,并将其接收当前与后续数据包依次接收至待切换队列;

步骤s4,检测主用行情数据源链路的切换标记,于检测到其切换标记为待切换状态时,对所述主用行情数据源链路接收的行情数据包,将其与步骤s3的切换时间点标记的数据包进行比对,于比对结果一致时,将所述待切换队列数据移送至发送队列,并将所述最优行情数据源链路更换为主用行情数据源链路,并更新相应链路的切换标记;

步骤s5,将从切换后的主用行情数据源接收的行情数据包存入发送队列,从而将发送队列的数据发送至下级客户端节点或应用系统。

优选地,每路上级行情数据源链路设置有各自的切换标记,所述切换标记的状态包括普通状态、待切换状态以及切换状态,各路上级行情数据源链路对应的切换标记初始设置为普通状态。

优选地,步骤s2进一步包括:

步骤s200,当获取各上级行情数据源链路对应的切换标记后,判断各链路对应的各切换标记的状态,若各切换标记的状态不全部为普通状态,直接进入步骤s3;

步骤s201,若各切换标记的状态全部为普通状态,则获取各行情数据源链路对应的行情市场时间,将各行情数据源链路对应的行情市场时间进行对比,确定其中最新行情市场时间对应的行情数据源链路为最优行情数据源链路;

步骤s202,判断所述最优行情数据源链路与当前主用行情数据源链路是否一致,若一致,则无需处理,否则修改当前主用行情数据源链路与所述最优行情数据源链路上的切换标记为待切换状态。

优选地,于步骤s201中,对各链路接收的数据包解析包头,获取当前行情市场时间,保存作为择优比较依据,并丢弃非主用行情数据源链路当前接收的行情数据包,对各路上级行情数据源链路对应的行情市场时间进行对比,确定最新行情市场时间,从而获得最新行情市场时间对应的上级行情数据源链路作为所述最优行情数据源链路。

优选地,于步骤s3中,若当前待切换队列长度超过最大限制,则将所述最优行情数据源链路的切换标记设置为普通状态,并清空所述待切换队列的数据,返回步骤s2。

优选地,于步骤s4中,若当前主用行情数据源链路接收的数据包与步骤s3中切换时间点标记的数据包一致时,将当前主用行情源链路与处于待切换状态的最优行情数据源链路的切换标记修改为切换状态,并停止将当前主用行情源链路接收的行情数据包放入发送队列,同时将所述待切换队列的数据移送到发送队列,将当前的主用行情数据源设为普通行情数据源,将所述最优行情数据源链路对应的数据源设置为主用行情数据源,完成数据源的切换,切换完成后,将各数据源链路的切换标记都置回普通状态。

优选地,若当前主用行情数据源链路接收的数据包与步骤s3中切换时间点标记的数据包不一致时,则继续检测当前主用行情数据源链路的下一个数据包,与步骤s3中切换时间点标记的数据包进行比对判断。

为达到上述目的,本发明还提供一种多路行情数据源自动择优的装置,包括:

接收模块,用于选择并连接多路行情数据源,利用多个数据链路接收各路行情数据源的行情数据,并从中初始确定一主用行情数据源;

择优比较模块,用于获取各上级行情数据源链路对应的切换标记,根据各链路对应的切换标记的状态及从各链路获取的行情市场时间确定最优行情数据源链路,并更新主用行情数据源链路及最优行情数据源链路的切换标记;

最优行情数据源链路处理模块,用于对处于待切换状态的最优行情数据源链路,获取其当前接收的第一个数据包,保存缓存作为切换时间点标记,并将其接收当前与后续数据包依次接收至待切换队列;

切换处理模块,用于检测主用行情数据源链路的切换标记,于检测到其切换标记为待切换状态时,对所述主用行情数据源链路接收的行情数据包,将其与所述最优行情数据源链路处理模块的切换时间点标记的数据包进行比对,于比对结果一致时,将所述待切换队列数据移送至发送队列,并将所述最优行情数据源链路更换为主用行情数据源链路,,并更新相应链路的切换标记;

发送模块,用于将发送队列的数据发送给下级客户端节点或应用系统。

优选地,所述择优比较模块具体用于:

当获取各上级行情数据源链路对应的切换标记后,判断各链路对应的各切换标记的状态,若各切换标记的状态不全部为普通状态,直接进入所述最优行情数据源链路处理模块;

若各切换标记的状态全部为普通状态,则获取各行情数据源链路对应的行情市场时间,将各行情数据源链路对应的行情市场时间进行对比,确定其中最新行情市场时间对应的行情数据源链路为最优行情数据源链路;

判断所述最优行情数据源链路与当前主用行情数据源链路是否一致,若一致,则无需处理,否则修改当前主用行情数据源链路与所述最优行情数据源链路上的切换标记为待切换状态。

优选地,若当前待切换队列长度超过最大限制,最优行情数据源链路处理模块则将所述最优行情数据源链路的切换标记设置为普通状态,并清空所述待切换队列的数据,返回所述择优比较模块。

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

1、本发明支持同时接入多路数据源;2、主用行情线路正常提供行情转发服务,择优比较模块并行检测,且检测服务动态实时运行;3、本发明根据行情数据包进行行情市场时间对比时,数据统计精确;4、本发明对行情数据包只解析头部信息,解析速度快;5、本发明的切换动作无需停止或重启服务,对下游应用透明无感知;6、本发明的最优线路切换后,数据完整不丢包,保证数据的连续可靠。

附图说明

图1为本发明一种多路行情数据源自动择优的方法的步骤流程图;

图2为本发明一种多路行情数据源自动择优的装置的系统架构图;

图3为本发明实施例所应用的系统的层次结构示意图;

图4为本发明实施例中对非主用行情数据源链路处理的具体流程图;

图5为本发明实施例中对主用行情数据源链路处理的具体流程图;

图6为本发明实施例中择优比较模块处理的具体流程图。

具体实施方式

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

图1为本发明一种多路行情数据源自动择优的方法的步骤流程图。如图1所示,本发明一种多路行情数据源自动择优的方法,包括:

步骤s1,选择并连接多路行情数据源,以利用多个链路分别接收各路上级行情数据源的行情数据,并从中初始确定一主用行情数据源。也就是说,本发明中的每路行情数据源对应一行情数据源链路,对每路行情数据源通过其对应的行情数据源链路接收其行情数据。

在本发明中,首先选择多路上级行情数据源,发起连接与各上级行情数据源建立连接,接收行情数据,对于每个上级行情数据源创建一个连接通道,即多个行情数据源创建对应的多个连接通道。在本发明具体实施例中,使用tcp协议连接各上级行情数据源。

于步骤s1中,需从所述多路行情数据源中初始确定一主用行情数据源,其对应的连接通道则为主用行情数据源链路,以用于初始对从主用行情数据源通道接收的数据转发下级使用。在本发明具体实施例中,可默认设置第一路行情数据源为主用行情数据源,默认对主用行情数据源通道接收的数据转发给下级使用。

步骤s2,获取各上级行情数据源链路对应的切换标记,根据各上级行情数据源链路对应的切换标记的状态及从各上级行情数据源链路获取的行情市场时间确定最优行情数据源链路,并更新主用行情数据源链路及最优行情数据源链路的切换标记。

在本发明中,对每路上级行情数据源链路都设置有各自的切换标记,切换标记的状态包括普通状态、待切换状态以及切换状态,在本发明具体实施例中,各路上级行情数据源链路对应的切换标记初始设置为普通状态,只有检测到需要切换时,切换标记才开始变更状态。

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

步骤s200,当获取到各上级行情数据源链路对应的切换标记后,判断各上级行情数据源链路对应的各切换标记的状态,若各切换标记的状态不全部为普通状态时,说明此时已经有某个上级行情数据源的数据源链路处于待切换状态或切换状态,即已经确定了最优行情数据源通道,表明此时段正处于待切换或切换阶段,直接进入步骤s3;

步骤s201,若各切换标记的状态全部为普通状态,则获取各行情数据源链路对应的行情市场时间,将获得各行情数据源链路对应的行情市场时间进行对比,确定其中最新行情市场时间对应的行情数据源链路为最优行情数据源通道。具体地,若各切换标记的状态全为普通状态,则针对各路上级行情数据源接收的行情数据,对接收的数据包进行解析包头处理,获取当前行情市场时间,保存作为择优比较依据,并丢弃非主用行情数据源链路当前接收的行情数据包(因为主用行情数据源链路接收的数据包不会丢弃,需存入到发送队列已发送给下级应用),对各路上级行情数据源链路对应的行情市场时间进行对比,确定最新行情市场时间,从而获得该最新行情市场时间对应的上级行情数据源链路作为最优行情数据源通道。

步骤s202,判断最优行情数据源通道与当前主用行情数据源通道是否一致,若一致,则无需处理,否则修改主用行情数据源链路与所述最优行情数据源链路上的切换标记为待切换状态。

步骤s3,对处于待切换状态的最优行情数据源链路,获取其当前接收的第一个数据包,保存缓存作为切换时间点标记,并将其接收的当前与后续数据包依次接收至待切换队列。优选地,若当前该待切换队列长度超限制,则将该最优行情数据源链路的切换标记设置为普通状态,并清空该待切换队列的数据,返回步骤s2。

也就是说,经步骤s2确定了最优行情数据源链路,其切换标记为待切换状态,对于待切换状态的最优行情数据源链路,获取进入到该状态时从该行情数据源链路接收的第一个数据包,保存作为切换标记的时间点数据,同时将当前数据包及后续数据包存入待切换队列,作为正式切换前的缓存,如果当前切换队列长度超限制时,表示此时已满,则说明未匹配到切换点,当前不能做无缝切换,需将该最优行情数据源链路对应的切换标记设置回普通状态,并清空待切换队列的数据,同时返回步骤s2继续重新确定最优行情数据源链路,即本次切换超时取消,等待下一次切换。

步骤s4,检测主用行情源链路的切换标记,于其切换标记为待切换状态时,对主用行情源链路接收的行情数据包,将其与步骤s3的切换时间点标记的数据包进行比对,根据比对结果判断是否将待切换队列数据移送至发送队列及更换主用行情数据源。

具体地,主用行情源链路接收行情时,检测切换标记,若不是待切换状态,即普通状态,则返回步骤s2,即解析行情数据包头获取行情市场时间,加入到待比较缓存,将接收的数据包加入发送队列,若为待切换状态,则对比判断当前接收的数据包与步骤s3中切换时间点标记的数据包是否一致,如果一致,则表示找到一致性切换的切换点,将主用行情源链路与处于待切换状态的最优行情数据源链路的切换标记修改为切换状态,并停止将当前主用行情源链路接收的数据包放入发送队列,同时将步骤s3的待切换队列数据移送到发送队列,将当前的主用行情数据源设为普通行情数据源,将被标记的最优行情数据源链路对应的数据源设置为主用行情数据源,完成数据源的切换,切换完成后,各数据源链路的切换标记都置回普通状态;如果不一致,则继续检测下一个数据包,即继续将主用行情源链路接收到的下一个数据包与步骤s3中切换时间点标记的数据包判断是否一致。

步骤s5,将从切换后的主用行情数据源接收的行情数据包存入发送队列,从而将发送队列的数据发送至下级客户端节点或应用系统。也就是说,当最优行情数据源链路的数据源设置为主用行情数据源后,则其作为主用行情数据源,将从其接收的行情数据包存入发送队列,由发送模块将发送队列的数据发送至下级客户端节点或应用系统。在步骤s5完成后,则返回步骤s2继续监测。

图2为本发明一种多路行情数据源自动择优的装置的系统架构图。如图2所示,本发明一种多路行情数据源自动择优的装置,包括:

接收模块201,用于选择并连接多路行情数据源,利用多个数据链路接收各路行情数据源的行情数据,并从中初始确定一主用行情数据源。在本发明中,每路行情数据源对应一数据源链路,对每路行情数据源通过其对应的数据源链路接收其行情数据。

在本发明中,首先选择多路上级行情数据源,接收模块201发起连接与各上级数据源建立连接,接收行情数据,对于每个上级行情数据源创建一个连接通道,即多个行情数据源创建对应的多个连接通道。在本发明具体实施例中,接收模块201使用tcp协议连接各上级行情数据源。

接收模块201会从所述多路行情数据源中初始确定一主用行情数据源,其对应的连接通道则为主用行情数据源通道,以用于初始对从主用行情数据源通道接收的数据转发下级使用。在本发明具体实施例中,可默认设置第一路行情数据源为主用行情数据源,默认对从该主用行情数据源通道接收的数据转发下级使用,即将从该主用行情数据源通道接收的数据包加入发送队列,通过发送模块205转发至下级客户端或应用。

择优比较模块202,用于获取各上级数据源链路对应的切换标记,根据各上级行情数据源链路对应的切换标记的状态及从各上级行情数据源链路获取的行情市场时间确定最优行情数据源链路,并更新主用行情数据源链路及最优行情数据源链路的切换标记。

在本发明中,对每路上级行情数据源链路都设置有各自的切换标记,切换标记的状态包括普通状态、待切换状态以及切换状态,在本发明具体实施例中,各路上级行情数据源链路对应的切换标记初始设置为普通状态。

择优比较模块202具体用于:

当获取各上级行情数据源链路对应的切换标记后,判断各上级行情数据源链路对应的各切换标记的状态,若各切换标记的状态不全部为普通状态时,说明此时已经有某个上级行情数据源的数据源链路处于待切换状态或切换状态,即已经确定了最优行情数据源通道,此时段正处于待切换或切换阶段,直接进入最优行情数据源链路处理模块203;

若各切换标记的状态全部为普通状态,则获取各行情数据源链路对应的行情市场时间,将各行情数据源链路对应的行情市场时间进行对比,确定其中最新行情市场时间对应的行情数据源链路为最优行情数据源通道。具体地说,若各路上级行情数据源链路的切换标记的状态全为普通状态,则针对各路上级行情数据源接收的行情数据,对接收的数据包进行解析包头处理,获取当前行情市场时间,保存作为择优比较依据,并丢弃非主用行情数据源链路当前接收的行情数据包,同时对各路上级行情数据源链路对应的行情市场时间进行对比,确定最新行情市场时间,从而获得该最新行情市场时间对应的上级行情数据源链路作为最优行情数据源通道。

判断最优行情数据源通道与当前主用行情数据源通道是否一致,若一致,则表示当前主用行情数据源就是最优行情数据源,则无需处理,否则修改主用行情数据源链路与所述最优行情数据源链路上的切换标记为待切换状态。

最优行情数据源链路处理模块203,用于对处于待切换状态的最优行情数据源链路,获取当前接收的第一个数据包,保存缓存作为切换时间点标记,并将当前与后续数据包依次接收至待切换队列。优选地,若当前该待切换队列长度超限制,最优行情数据源链路处理模块203则将该最优行情数据源链路的切换标记设置为普通状态,并清空该待切换队列的数据,返回择优比较模块202。

也就是说,经择优比较模块202确定了最优行情数据源链路,其切换标记为待切换状态,对于待切换状态的最优行情数据源链路,获取进入到该状态时从该行情数据源链路接收的第一个数据包,保存作为切换标记的时间点数据,同时将当前数据包及后续数据包存入待切换队列,作为正式切换前的缓存,如果当前切换队列长度超限制时,表示此时已满,则说明未匹配到切换点,当前不能做无缝切换,需将该最优行情数据源链路对应的切换标记设置回普通状态,并清空待切换队列的数据,同时返回择优比较模块202继续重新择优确定最优行情数据源链路,即本次切换超时取消,等待下一次切换。

切换处理模块204,用于检测主用行情源链路的切换标记,于其切换标记为待切换状态时,对主用行情源链路接收的行情数据包,将其与最优行情数据源链路处理模块203保存的切换时间点标记的数据包进行比对,根据比对结果判断是否将待切换队列数据移送至发送队列及更换主用行情数据源。

具体地,切换处理模块204对主用行情源链路检测切换标记,若为待切换状态,则对比判断其当前接收的数据包与最优行情数据源链路处理模块203中切换时间点标记的数据包是否一致,如果一致,则表示找到一致性切换的切换点,将主用行情源链路与处于待切换状态的最优行情数据源链路的切换标记修改为切换状态,并停止将当前主用行情源链路接收的数据包放入发送队列,同时将最优行情数据源链路处理模块203的待切换队列数据移送到发送队列,并将当前的主用行情数据源设为普通行情数据源,将被标记的最优行情数据源链路对应的数据源设置为主用行情数据源,从而完成数据源的切换,后续切换后的主用行情数据源接收的行情数据包将存入发送队列,切换完成后,并将各数据源链路的切换标记都置回普通状态;如果不一致,则继续检测下一个数据包。

发送模块205,用于将发送队列的数据发送给下级客户端节点或应用系统。当最优行情数据源链路的数据源设置为主用行情数据源后,则其作为主用行情数据源,将从其接收的行情数据包存入发送队列,由发送模块将发送队列的数据发送至下级客户端节点或应用系统。

实施例

图3为本发明实施例所应用的系统的层次结构示意图,图中最上部分为上级行情数据源或者上级应用,下部分为本发明,上级行情数据源允许多个,对应的本发明的连接通道也有多个,即本发明根据不同连接通道接收数据,解析各连接通道的数据包后获取对应的行情市场时间,通过最新行情市场时间确定最优行情数据源。默认启用第一个数据源作为主用数据源,解析接收数据的同时,将接收的数据包加入发送队列,通过发送模块转发至下级客户端或应用,非主用行情数据源接收行情数据包后,解析数据包获取市场时间后,立即丢弃数据包,只有在择优比较模块通知切换时,才开始收集数据准备切换。

图4为本发明实施例中对非主用行情数据源链路处理的具体流程图。本实施例中,对非主用行情数据源链路处理的具体过程如下:

首先,发起连接与上级行情数据源建立连接,接收行情数据。多个行情数据源创建对应的多个连接通道。

然后,判断当前链路的切换标记状态(在本发明中,每个行情数据源链路都设置有各自的切换标记),如果当前链路的切换标记状态为普通状态,则对其接收的数据包进行解析包头处理,获取当前行情市场时间,保存作为择优比较依据,并丢弃当前接收的数据包;如果当前链路的切换标记状态为待切换状态(即被标记为最优数据源通道),则获取进入到该状态时的第一个数据包,保存作为切换标记的时间点数据,同时将当前数据包及后续数据包存入待切换队列,作为正式切换前的缓存,如果切换队列此时已满,则说明未匹配到切换点,当前不能做无缝切换,将本次切换标记设置回普通状态,清空待切换队列的数据,同时通知择优比较模块继续工作,本次切换超时取消,等待下一次切换。

如果当前链路的切换标记状态为切换状态,则将待切换队列数据移至发送队列,并将当前数据源设置为主用行情数据源,同时更改切换标记为普通状态。后续接收的数据直接加入发送队列,完成切换。

图5为本发明实施例中对主用行情数据源链路处理的具体流程图。在本实施例中,其过程如下:

首先,从主用行情数据源接收行情数据包,判断当前切换标记是否为待切换状态,如果为普通状态,则解析行情数据包头获取市场时间,加入到待比较缓存,同时数据包加入发送队列,等待发送模块发送数据至下级客户端或应用系统。根据行情网关源类别,解码协议一般分为fix(financialinformationexchangeprotocol金融信息交换协议)、fast(fixadaptedforstreaming面向流的信息交换协议)、step(securitytradeexchangeprotocol证券交易数据交换协议)、binary(二进制格式的协议)。

如果切换标记为待切换状态,则判断当前接收的行情数据包与被标记为切换时间点的最优行情数据源链路的数据包是否一致,如果不一致则说明未找到切换点,继续转发当前数据数据包,等待下一个数据包检测;如果检测到一致,则停止将当前主用行情源链路接收的数据包放入发送队列,并将主用行情源链路与处于待切换状态的最优行情数据源链路的切换标记修改为切换状态,开始切换,将当前主用行情数据源设置为普通数据源链路,同时将最优行情数据源链路的待切换队列数据移送至发送队列,将最优行情数据源设置为主用行情数据源,完成切换,并在切换完成后,将各数据源链路的切换标记都置回普通状态。

图6为本发明实施例中择优比较模块处理的具体流程图。在本实施例中,所述择优比较模块的处理过程如下:

首先,获取各行情数据源链路对应的切换标记,如果当前各切换标记不全为普通状态时,说明此时段正处于待切换或切换阶段,当前择优比较模块无需执行,等待下一次检测工作。

如果当前各切换标记都为普通状态,则获取各行情数据源链路对应的行情市场时间,对比判断最新行情市场时间对应的行情数据源通道为最优,若最优行情数据源通道与当前主用行情数据源通道不一致,则修改主用行情数据源链路与待切换的最优行情数据源链路上的切换标记为待切换状态,否则无需处理。

综上所述,本发明一种多路行情数据源自动择优的方法及装置通过对行情数据包从不同行情数据源接收后,经过解析数据包,获取行情市场时间,利用择优对比模块对比行情市场时间,检测到需要切换数据源时,标记最优数据通道,并找到一个切换点来完成切换,从而保证行情数据的连续性好完整性,对下游提供最优行情数据,本发明可以同时连接多个行情数据源,自动判断最优数据源,并切换最优数据源接收行情数据。本发明可以给用户特别是证券公司运营部提供更智能和更可靠的行情线路,为用户行情提速和优化提供可靠的保障,达到用户行情择优的目的。

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

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