CN113190481B - 数据传输方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据传输方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113190481B CN113190481B CN202110749081.5A CN202110749081A CN113190481B CN 113190481 B CN113190481 B CN 113190481B CN 202110749081 A CN202110749081 A CN 202110749081A CN 113190481 B CN113190481 B CN 113190481B
- Authority
- CN
- China
- Prior art keywords
- data
- market data
- currently
- market
- message
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 173
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000015654 memory Effects 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 description 32
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及一种数据传输方法、装置、电子设备及计算机可读存储介质,所述方法包括:当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件;当确定当前满足数据传输条件时,确定当前是否缓存有来自任意通路的行情数据;若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的行情数据;若否,则将当前接收到的行情数据确定为目标数据;向数据接收方发送目标数据。由此,实现了在数据发送方通过多路传输方式向数据接收方发送行情数据时,能够从多个通路上传输的数据中选择出最优、最可靠的行情数据发送给数据接收方,提高了数据传输效率,以及数据传输的可靠性。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据传输方法、装置、电子设备及计算机可读存储介质。
背景技术
交易系统可接收来自交易所的行情数据,并通过解析行情数据,提供全息行情、灵活的自定义格式行情、行情增值应用等功能,还为量化投资者、程序化投资者、专业机构及大户提供极低延时的行情服务。
目前,交易系统向交易所提供多种网络接入方式,例如TCP接入方式、镜像接入方式等。在实践中,对于同一交易所,其既可以通过单路输入模式接入交易系统,也可以通过多路输入模式接入交易系统。在交易所通过多路输入模式接入交易系统的场景下,现有技术中,交易所通过在每一通路上设置消息计数器的方式,从多个通路上传输的行情数据中选择可靠通路上传输的行情数据。具体的,消息计数器的值越大,则意味着此通路上传输的消息越多,此通路的数据传输速率越快,因此,交易所将消息计数器值最大的通路确定为可靠通路。
然而,上述方式仅仅适用于理想情况下,也即网络不出现任何问题的情况,一旦网络出现问题,就有可能导致行情数据丢失,而且不能够通过通路间的数据互补来纠正,同时,如果发生通路切换,还有可能导致重复数据的出现。极大降低了交易系统所接收到的行情数据的可靠性。
发明内容
鉴于此,为解决的技术问题,本发明实施例提供一种数据传输方法、装置、电子设备及计算机可读存储介质。
第一方面,本发明实施例提供一种数据传输方法,所述方法包括:
当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的所述行情数据;若否,则将当前接收到的所述行情数据确定为所述目标数据;
向所述数据接收方发送所述目标数据。
第二方面,本发明实施例提供一种数据传输装置,所述装置包括:
第一确定模块,用于当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
第二确定模块,用于当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
第三确定模块,用于若确定当前缓存有来自任意所述通路的行情数据,则选择最早缓存的行情数据确定为待传输的目标数据;
缓存模块,用于若确定当前缓存有来自任意所述通路的行情数据,则缓存当前接收到的所述行情数据;
第四确定模块,用于若确定当前未缓存有来自任意所述通路的行情数据,则将当前接收到的所述行情数据确定为所述目标数据;
数据发送模块,用于向所述数据接收方发送所述目标数据。
第三方面,本发明实施例提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述第一方面任一所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述第一方面任一所述的方法。
本发明实施例提供的技术方案,通过当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意通路的行情数据,若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的行情数据,若否,则将当前接收到的行情数据确定为目标数据,向数据接收方发送目标数据,实现了在数据发送方通过多路传输方式向数据接收方发送行情数据时,能够从多个通路上传输的数据中选择出最优、最可靠的行情数据发送给数据接收方,提高了数据传输效率,以及能够实现多通路之间的数据互补,从而提高了数据传输的可靠性。
附图说明
图1为本发明实施例提供的一种数据传输方法的应用场景示意图;
图2为本发明实施例提供的一种数据传输方法的实施例流程图;
图3A为本发明实施例提供的另一种数据传输方法的实施例流程图;
图3B为本发明实施例提供的另一种数据传输方法的实施例流程图;
图4为本申请实施例提供的数据传输状态的切换机制示意图;
图5为本发明实施例提供的一种数据传输装置的实施例框图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明实施例提供的一种数据传输方法的应用场景示意图。图1所示应用场景中包括数据发送方11、数据接收方12,以及数据传输系统13。
进一步的,数据发送方11与数据接收方12之间具有3个通路,分别记为通路1、通路2、通路3,且数据发送方11采用多路传输方式向数据接收方12发送数据,这也就意味着,正常情况下,不同通路上传输的数据在数据内容上是保持一致的。数据传输系统13包括网络接入模块130~132、解析模块133~135,以及多路数据优选模块16。
在此基础上,多路数据优选模块16可应用本申请实施例提供的数据传输方法,从多个通路上传输的数据中选择出最优、最可靠的数据发送给数据接收方12,这也就是说,针对待发送的每一数据,尽管数据发送方11采用的多路传输方式,多路数据优选模块16也只是从中选择一路上的数据发送给数据接收方12,这不仅能够提高数据传输效率,还能够使得数据接收方12尽可能地接收到数据发送方11发送的完整数据,而且不存在数据接收方12重复接收同一数据的情况。
需要说明的是,图1中数据发送方11与数据接收方12之间具有3个通路仅仅是一种示例性说明,在实践中,数据发送方11与数据接收方12之间可具有多个通路,本申请实施例对具体的路数不做限制。
此外可以理解的是,数据发送方11采用多路传输方式向数据接收方12发送数据,相较于采用单路传输方式向数据接收方12发送数据而言,能够提高数据传输的可靠性,例如,在其中一个通路发生数据丢包时,数据接收方12也能通过其他通路接收来自数据发送方11的数据。
再进一步的,如图1所示,多路数据优选模块16包括:仲裁模块161、传输模块162~164、消息队列165、第一缓存队列166~168、第二缓存队列169~171。其中,网络接入模块130、解析模块133、传输模块162、第一缓存队列166、第二缓存队列169对应通路1;网络接入模块131、解析模块134、传输模块163、第一缓存队列167、第二缓存队列170对应通路2;网络接入模块132、解析模块135、传输模块164、第一缓存队列168、第二缓存队列171对应通路3;仲裁模块161和消息队列165则对应每一通路。这里,对应是指:上述各模块/队列用于传输来自其对应通路上的数据。
例如,对于数据发送方11通过通路1发送给数据接收方12的数据,该数据首先通过网络接入模块130传输至解析模块133,解析模块133对该数据进行解析,将解析后的数据发送至多路数据优选模块16。在多路数据优选模块16中,由仲裁模块161采集该数据的数据信息,根据数据信息对该数据做出仲裁结果,并将做出的仲裁结果发送至传输模块162。之后,传输模块162则依据仲裁模块161对该数据做出的仲裁结果,对该数据做出处理,这里所说的处理包括但不限于:丢弃、缓存至第一缓存队列、缓存至第二缓存队列、直接传输至数据接收方、从第一缓存队列中取出数据传输至数据接收方、从第二缓存队列中取出数据传输至数据接收方。
在实践中,多路数据优选模块16可通过FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现。至于上述多路数据优选模块16的详细工作流程,在下文中通过具体实施例进行说明,这里先不详述。
下面将通过具体实施例对本发明提供的数据传输方法做详细的解释说明,实施例并不构成对本发明实施例的限定。
参见图2,为本发明实施例提供的一种数据传输方法的实施例流程图。作为一个实施例,该方法可应用于图1所示应用场景中的多路数据优选模块16,以及在图1所示应用场景中,数据发送方11可以为交易所(例如上海交易所、深圳交易所等)、数据接收方12可以为交易系统,数据发送方11向数据接收方12发送的数据为行情数据。如图2所示,该方法可包括以下步骤:
步骤201、当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件。
由图1所示应用场景的相关描述可知,数据发送方通过每一通路向数据接收方发送的行情数据,在经过解析后,都将先到达本申请实施例提供的多路数据优选模块,然后,再由多路数据优选模块从多个通路上传输的数据中选择出最优、最可靠的数据发送给数据接收方。
本申请实施例中,多路数据优选模块接收到数据发送方通过任一通路向数据接收方发送的行情数据时,先确定当前是否满足设定的数据传输条件。以下以沪市行情为例,对多路数据优选模块在接收到数据发送方通过任一通路向数据接收方发送的行情数据时,如何确定当前是否满足设定的数据传输条件进行说明:
首先说明,交易所通常采用step协议或binary协议封装行情数据,在step协议或binary协议中,行情数据包括产品类型(记为ctgID)以及消息序号(记为seqID),且规定同一产品类型下行情数据的消息序号从1(或0)开始依次递增,基于此,多路数据优选模块可根据行情数据的ctgID和seqID确定已接收到的行情数据是否连续,并根据行情数据的ctgID和seqID确保发送给数据接收方的行情数据的唯一性。可以理解的是,当确定接收到的行情数据连续、不重复时,可以将接收到的行情数据发送给数据接收方,也即,多路数据优选模块可根据行情数据的ctgID和seqID确定当前是否满足设定的数据传输条件。
具体的,本申请实施例提出,多路数据优选模块接收到数据发送方通过任一通路向数据接收方发送的行情数据时,仲裁模块采集该行情数据的ctgID和seqID(即上述描述的数据信息)。以某一产品类型(以下称第一产品类型)的行情数据为例,当多路数据优选模块首次接收到数据发送方通过任一通路向数据接收方发送的第一产品类型的行情数据时,也即,仲裁模块首次采集到第一产品类型的行情数据的ctgID和seqID时,将当前采集到的行情数据(也即多路数据优选模块当前接收到的行情数据)的seqID记录为与第一产品类型对应的第一消息标识,当非首次接收到数据发送方通过任一通路向数据接收方发送的第一产品类型的行情数据时,也即仲裁模块非首次采集到第一产品类型的行情数据的ctgID和seqID时,将当前采集到的行情数据(也即多路数据优选模块当前接收到的行情数据)的seqID与N进行比较,这里,N为当前的第一消息标识与1之和。若比较出当前接收到的行情数据的seqID等于N,则将当前的第一消息标识更新为当前接收到的行情数据的seqID;反之,若比较出当前接收到的行情数据的seqID大于或小于N,则保持当前的第一消息标识不变。由此可见,第一消息标识表征的是,对于第一产品类型的行情数据而言,多路数据优选模块当前已接收到的行情数据中,与其他行情数据的seqID连续且最大的seqID。
举例来说,假设多路数据优选模块先后接收到数据发送方向数据接收方发送的第一产品类型的5个行情数据,该5个行情数据的seqID依次为1、2、5、3、4。按照上述描述,当接收到数据发送方向数据接收方发送的该消息序号为1的行情消息时,第一消息标识为1,当接收到数据发送方向数据接收方发送的该消息序号为2的行情消息时,由于2等于当前的第一消息标识1与1之和,因此,将第一消息标识从1更新为2,当接收到数据发送方向数据接收方发送的该消息序号为5的行情消息时,由于5大于当前的第一消息标识2与1之和,因此,保持第一消息标识为2不变,当接收到数据发送方向数据接收方发送的该消息序号为3的行情消息时,由于3等于当前的第一消息标识2与1之和,因此,将第一消息标识从2更新为3,当接收到数据发送方向数据接收方发送的该消息序号为4的行情消息时,由于4等于当前的第一消息标识3与1之和,因此,将第一消息标识从3更新为4。
进一步的,基于上述描述可以得到,若比较出当前接收到的行情数据的消息序号等于N,则意味着多路数据优选模块是首次接收到该行情数据,这也就意味着当前通路的传输速度最快,这里,当前通路是指传输当前接收到的行情数据的通路。可以理解的是,通过将来自传输速度最快的通路的行情数据,也即最早接收到的行情数据传输给数据接收方,能够提高数据传输速度。
若比较出当前接收到的行情数据的消息序号小于N,则意味着多路优选系统是非首次接收到该行情数据,此时,为避免重复传输,仲裁模块可做出丢弃该行情数据的仲裁结果,并将该仲裁结果发送给当前通路对应的选择器,该选择器则基于该仲裁结果,丢弃该行情数据。
若比较出当前接收到的行情数据的消息序号大于N,则意味着多路数据优选模块是首次接收到该行情数据,但是接收到的行情数据不是连续的,并且当前通路上发生丢包。在该种情况下,若将当前接收到的行情数据发送给数据接收方,将导致数据接收方接收到的行情数据不是连续的,因此,在该种情况下,不适宜将当前接收到的行情数据发送给数据接收方。
由上述描述可知,在当前接收到的行情数据与之前接收到的行情数据连续时,可确定当前满足设定的数据传输条件。基于此,在实践中,仲裁模块可根据当前接收到的行情数据的消息序号与对应的N,确定当前是否满足设定的数据传输条件。具体的,仲裁模块将当前接收到的行情数据的消息序号与对应的N进行比较,若比较出当前接收到的行情数据的消息序号等于N时,则确定当前满足设定的数据传输条件;若比较出当前接收到的行情数据的消息序号小于或大于对应的N,则确定当前不满足设定的数据传输条件。这里,行情数据对应的N是指:行情数据所属产品类型对应的N。
步骤202、当确定当前满足数据传输条件时,确定当前是否缓存有来自任意通路的行情数据;若是,则执行步骤203,若否,则执行步骤204。
步骤203、选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的行情数据;执行步骤205。
步骤204、将当前接收到的行情数据确定为目标数据。
步骤205、向数据接收方发送目标数据。
以下对步骤202~204进行统一说明:
本申请实施例中,当确定当前满足数据传输条件时,先确定当前是否缓存有来自任意通路的行情数据,若是,则选择最早缓存的行情数据确定为待传输的目标数据,并缓存当前接收到的行情数据。由此可见,当前已缓存的行情数据都早于当前接收到的行情数据,基于此,为实现按序传输行情数据,选择最早缓存的行情数据确定为当前待传输的目标数据。反之,若确定当前未缓存有来自任意通路的行情数据,则可直接将当前接收到的数据作为待传输的目标数据。
结合图1所示例的多路数据优选模块,本申请实施例中,缓存当前接收到的行情数据包括:将当前接收到的行情数据存入当前通路对应的第一缓存队列中,以及将当前通路的通路标识存入设定的消息队列中。例如,当前接收到数据发送方通过通路1发送的行情数据,则仲裁模块161控制传输模块162将该行情数据存入通路1对应的第一缓存队列166中,将通路1的通路标识存入消息队列165。
在此基础上,确定当前是否缓存有来自任意通路的行情数据,包括:确定消息队列是否为空,若确定消息队列为空,则确定当前未缓存有来自任意通路的行情数据;若确定消息队列不为空,则确定当前缓存有来自任意通路的行情数据。
进一步地,选择最早缓存的行情数据确定为待传输的目标数据,包括:从消息队列中读取排在首位的通路标识,从目标通路对应的第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,这里,目标通路指读取到的通路标识所对应的通路。
再结合图1所示例的多路数据优选模块来说,仲裁模块在确定当前满足数据传输条件,且确定当前缓存有来自任意通路的行情数据时,做出缓存当前接收到的行情数据的仲裁结果,并将该仲裁结果发送给当前通路对应的传输模块。传输模块则基于该仲裁结果,将当前接收到的行情数据存入对应的第一缓存队列中,并将当前通路的通路标识存入消息队列。在该种情况下,仲裁模块还从消息队列中读取排在首位的通路标识,然后控制目标通路对应的传输模块,从目标通路对应的第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,将目标数据发送给数据接收方。
仲裁模块在确定当前满足数据传输条件,且确定当前未缓存有来自任意通路的行情数据时,做出直接向数据接收方发送行情数据的仲裁结果,并将该仲裁结果发送给当前通路对应的传输模块。传输模块则基于该仲裁结果,将当前接收到的行情数据确定为待传输的目标数据,将目标数据发送给数据接收方。
本发明实施例提供的技术方案,通过当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意通路的行情数据,若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的行情数据,若否,则将当前接收到的行情数据确定为目标数据,向数据接收方发送目标数据,实现了在数据发送方通过多路传输方式向数据接收方发送行情数据时,能够从多个通路上传输的数据中选择出最优、最可靠的行情数据发送给数据接收方,提高了数据传输效率,以及能够实现多通路之间的数据互补,从而提高了数据传输的可靠性。
参见图3A和图3B,为本发明实施例提供的另一种数据传输方法的实施例流程图,该图3A和图3B所示流程在上述图2所示流程的基础上,可包括以下步骤:
步骤301、当首次接收到数据发送方通过任一通路向数据接收方发送的第一产品类型的行情数据时,将当前接收到的行情数据的消息序号记录为与第一产品类型对应的第一消息标识。
步骤302、当非首次接收到数据发送方通过任一通路向数据接收方发送的第一产品类型的行情数据时,将当前接收到的行情数据的消息序号与N进行比较,N为当前的第一消息标识与1之和;若比较出当前接收到的行情数据的消息序号小于或大于N,则执行步骤303;若比较出当前接收到的行情数据的消息序号等于N,则执行步骤304。
步骤303、保持当前的第一消息标识不变;执行步骤305。
步骤304、将当前的第一消息标识更新为当前接收到的行情数据的消息序号。
步骤305、将当前接收到的行情数据的消息序号与对应的N进行比较,若比较出当前接收到的行情数据的消息序号等于对应的N,则执行步骤306;若比较出当前接收到的行情数据的消息序号小于对应的N,则执行步骤315;若比较出当前接收到的行情数据的消息序号大于对应的N,则执行步骤316。
步骤306、确定当前满足设定的数据传输条件。
步骤307、确定消息队列是否为空;若确定消息队列为空,则执行步骤308;若确定消息队列不为空,则执行步骤312。
步骤308、确定当前未缓存有来自任意通路的行情数据。
以上步骤301~308的详细描述可参见图2所示流程中的相关描述,这里不再赘述。
步骤309、确定当前的数据传输状态;若确定当前的数据传输状态为空闲状态,则执行步骤310;若确定当前的数据传输状态为直通状态,则执行步骤311。
首先说明,本申请实施例中,定义有空闲状态、直通状态、缓存输出状态。其中,空闲状态表征多路数据优选模块当前未向数据接收方发送行情数据;直通状态表征多路数据优选模块当前正向数据接收方发送当前接收到的行情数据;缓存输出状态表征多路数据优选模块当前正向数据接收方发送任一第一缓存队列中缓存的行情数据。至于上述三种状态的切换机制,在下文中会有说明,这里先不详述。
步骤310、将当前接收到的行情数据确定为目标数据,以及将当前的数据传输状态由空闲状态切换为直通状态;执行步骤314。
由上述描述可见,若确定当前的数据传输状态为空闲状态,则可将当前接收到的行情数据确定为目标数据,进而执行步骤314,以将目标数据发送给数据接收方。同时,将当前的数据传输状态由空闲状态切换为直通状态,以表征多路数据优选模块当前正向数据接收方发送当前接收到的行情数据。
步骤311、将当前接收到的行情数据存入当前通路对应的第一缓存队列中,以及将当前通路的通路标识存入设定的消息队列中。
由上述描述可见,若确定当前的数据传输状态为直通状态,则意味着多路数据优选模块当前正向数据接收方发送行情数据,因此,此时可先暂缓向数据接收方发送当前接收到的行情数据,具体的,将当前接收到的行情数据存入当前通路对应的第一缓存队列中,以及将当前通路的通路标识存入设定的消息队列中。
步骤312、确定当前缓存有来自任意通路的行情数据。
步骤313、从消息队列中读取排在首位的通路标识,从目标通路对应的第一缓存队列中读取排在首位的行情数据作为待传输的目标数据。
步骤314、向数据接收方发送目标数据;结束流程。
步骤315、丢弃当前接收到的行情数据;结束流程。
以上步骤312至步骤315的详细描述可参见图2所示流程中的相关描述,这里不再赘述。
步骤316、将当前接收到的行情数据存入当前通路对应的第二缓存队列中。
基于上述步骤305中的描述可知,在比较出当前接收到的行情数据的消息序号大于对应的N时,执行本步骤316,而在比较出当前接收到的行情数据的消息序号大于对应的N时,则意味着当前接收到的行情数据与之前接收到的行情数据不连续,此时,则可暂缓向数据接收方发送当前接收到的行情数据。具体的,将当前接收到的行情数据存入当前通路对应的第二缓存队列中。
步骤317、控制上一级设备在接收到数据发送方通过当前通路向数据接收方发送的行情数据时,缓存接收到的行情数据,以停止向本设备发送数据发送方通过当前通路向数据接收方发送的行情数据。
本申请实施例中,在比较出当前接收到的行情数据的消息序号大于对应的N时,除执行步骤316以外,还执行步骤317,以控制上一级设备停止向本申请发送数据发送方通过当前通路向数据接收方发送的行情数据。
结合图1所示例的应用场景,本设备指多路数据优选模块,上一级设备指解析模块。
进一步的,解析模块可以具有缓存,因此,本步骤317中,控制上一级设备在接收到数据发送方通过当前通路向数据接收方发送的行情数据时,缓存接收到的行情数据。
步骤318、将当前接收到的行情数据的消息序号记录为与第一产品类型对应的第二消息标识。
举例来说,假设多路数据优选模块先后接收到数据发送方向数据接收方发送的第一产品类型的5个行情数据,该5个行情数据的seqID依次为1、2、5、3、4。按照上述描述,当接收到数据发送方向数据接收方发送的该消息序号为5的行情消息时,由于5大于当前的第一消息标识2与1之和,因此,将消息序号5记录为与第一产品类型对应的第二消息标识。
步骤319、当确定满足设定的缓存释放条件时,从第二缓存队列中读取行情数据。
作为一个实施例,确定满足设定的缓存释放条件,包括:当检测到向数据接收方发送的目标数据的消息序号为第二消息标识与1之间的差值时,确定满足设定的缓存释放条件。例如,在上述举例中,当检测到向数据接收方发送的目标数据的消息序号为4时,则意味着满足设定的缓存释放条件。
由此可见,在某一通路发生数据丢包时,也能够通过其他通路上的行情数据进行数据补足,以使得数据接收方能够接收到完整的行情数据。
作为另一个实施例,如果网络速率过大,那么有可能存在以下情况:在向数据接收方发送消息序号为第二消息标识与1之间的差值的目标数据之前,上一级设备的缓存已满,或者已达到第三设定阈值,在该种情况下,未避免上一级设备的缓存溢出,导致数据丢失,则可立即释放第二缓存队列。也即,当检测到上一级设备上缓存的行情数据的数据量达到第三设定阈值时,确定满足设定的缓存释放条件。
此外,在该种情况下,还可记录下丢失的行情消息的消息序号,以供后续调试使用。这里,丢失的行情消息的消息序号可以只在确定满足设定的缓存释放条件时,向数据接收方发送完成的最后一个目标数据的消息序号,与第二消息标识之间的消息序号。
步骤320、将从第二缓存队列中读取到的行情数据作为当前接收到的行情数据,返回执行步骤305。
本申请实施例提供的技术方案,通过在当前接收到的行情数据与之前接收到的行情数据不连续时,暂缓向数据接收方发送当前接收到的行情数据,并且在此期间,继续向数据接收方发送来自其他通路的行情数据,实现了多个通路间的消息互补,有效减少了网络丢包,使得数据接收方能够接收到完整数据。
此外,由图3A和图3B所示流程中的相关描述可知,在确定当前的数据传输状态为直通状态的情况下,若接收到新的行情数据,将暂缓向数据接收方发送当前接收到的行情数据,而是将当前接收到的行情数据存入当前通路对应的第一缓存队列中,以待后续发送。
然而,在实践中,有可能存在网络速率过慢,或者其他异常情况,导致数据传输状态长时间处于直通状态,而长时间处于直通状态下,很可能出现上述第一缓存队列/消息队列溢出或者数据量达到设定阈值的情况。据此,本申请实施例提出数据传输超时机制。所谓的数据传输超时机制是指:
当确定发生数据传输超时时,停止向数据接收方发送当前正传输的行情数据,从消息队列中读取排在首位的通路标识,从目标通路对应的第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,进而向数据接收方发送该新确定的目标数据。这里,目标通路指读取到的通路标识所对应的通路。
进一步的,基于上述描述,确定发生数据传输超时可包括:当检测到任一通路的第一缓存队列中的数据量达到第一设定阈值时,确定发生数据传输超时;或者,当检测到消息队列中的数据量达到第二设定阈值时,确定发生数据传输超时。
参见图4,为本申请实施例提供的数据传输状态的切换机制示意图。
如图4所示,数据传输状态可由空闲状态S0切换为直通状态(S1、S2、S3)、可由直通状态(S1、S2、S3)切换为空闲状态S0、可由直通状态(S1、S2、S3)切换为缓存输出状态(S4、S5、S6),以及可由缓存输出状态(S4、S5、S6)切换为空闲状态S0。其中,S1表示通路1处于直通状态,S2表示通路2处于直通状态,S3表示通路3处于直通状态;S4表示通路1处于缓存输出状态,S5表示通路2处于缓存输出状态,S6表示通路3处于缓存输出状态。
具体的,由空闲状态切换为直通状态的切换条件为:将当前接收到的行情数据确定为目标数据,并向数据接收方发送该目标数据。
由直通状态切换为空闲状态的切换条件为:当前行情数据发送完毕,且消息队列为空。也即,在当前的数据传输状态为直通状态的情况下,监测当前正向数据接收方发送的行情数据是否发送完成,当监测到发送完成时,确定消息队列是否为空;若确定消息队列为空,则将当前的数据传输状态由直通状态切换为空闲状态。
此外,若确定消息队列不为空,则将当前的数据传输状态由直通状态切换为缓存输出状态。也即,由直通状态切换为缓存输出状态的切换条件为:当前行情数据发送完毕,且消息队列不为空。
由缓存输出状态切换为空闲状态的切换条件为:当前行情数据发送完毕,且消息队列为空。也即,在当前的数据传输状态为缓存输出状态的情况下,监测当前正向数据接收方发送的行情数据是否发送完成,当监测到发送完成时,确定消息队列是否为空,若确定消息队列为空,则将当前的数据传输状态由缓存输出状态切换为空闲状态。
此外,若确定消息队列不为空,则保持当前的数据传输状态为缓存输出状态不变。
进一步的,基于上述描述,本申请实施例中还提出,在当前的数据传输状态为所述缓存输出状态的情况下,按照设定周期执行以下步骤:从消息队列中读取排在首位的通路标识,从目标通路对应的第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,这里,目标通路指读取到的所述通路标识所对应的通路。由此,则可实现当前行情数据发送完毕,且消息队列为空的情况下,将数据传输状态由缓存输出状态切换为空闲状态。
与前述数据传输方法的实施例相对应,本发明还提供数据传输装置的实施例。
参见图5,为本发明实施例提供的一种数据传输装置的实施例框图。如图5所示,该装置包括:
第一确定模块51,用于当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
第二确定模块52,用于当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
第三确定模块53,用于若确定当前缓存有来自任意所述通路的行情数据,则选择最早缓存的行情数据确定为待传输的目标数据;
缓存模块54,用于若确定当前缓存有来自任意所述通路的行情数据,则缓存当前接收到的所述行情数据;
第四确定模块55,用于若确定当前未缓存有来自任意所述通路的行情数据,则将当前接收到的所述行情数据确定为所述目标数据;
数据发送模块56,用于向所述数据接收方发送所述目标数据。
在一可能的实施方式中,所述装置还包括(图中未示出):
第一记录模块,用于当首次接收到所述数据发送方通过任一所述通路向所述数据接收方发送的第一产品类型的行情数据时,将当前接收到的所述行情数据的消息序号记录为与所述第一产品类型对应的第一消息标识;
第一比较模块,用于当非首次接收到所述数据发送方通过任一所述通路向所述数据接收方发送的所述第一产品类型的行情数据时,将当前接收到的所述行情数据的消息序号与N进行比较,所述N为当前的所述第一消息标识与1之和;
第二记录模块,用于若比较出当前接收到的所述行情数据的消息序号等于所述N,则将当前的所述第一消息标识更新为当前接收到的所述行情数据的消息序号;若比较出当前接收到的所述行情数据的消息序号小于或大于所述N,则保持当前的所述第一消息标识不变;
所述第一确定模块51确定当前是否满足设定的数据传输条件,包括:
根据当前接收到的所述行情数据的消息序号与对应的所述N,确定当前是否满足设定的数据传输条件。
在一可能的实施方式中,所述第一确定模块51根据当前接收到的所述行情数据的消息序号与对应的所述N,确定当前是否满足设定的数据传输条件,包括:
将当前接收到的所述行情数据的消息序号与对应的所述N进行比较;
若比较出当前接收到的所述行情数据的消息序号等于对应的所述N,则确定当前满足设定的数据传输条件。
在一可能的实施方式中,所述缓存模块54缓存当前接收到的所述行情数据,包括:
将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中;
所述第二确定模块52确定当前是否缓存有来自任意所述通路的行情数据,包括:
确定所述消息队列是否为空;
若确定所述消息队列为空,则确定当前未缓存有来自任意所述通路的行情数据;若确定所述消息队列不为空,则确定当前缓存有来自任意所述通路的行情数据。
在一可能的实施方式中,所述第三确定模块53选择最早缓存的行情数据确定为待传输的目标数据,包括:
从所述消息队列中读取排在首位的所述通路标识;
从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路。
在一可能的实施方式中,所述第四确定模块55将当前接收到的所述行情数据确定为所述目标数据,包括:
确定当前的数据传输状态;
若确定所述当前的数据传输状态为空闲状态,则将当前接收到的所述行情数据确定为所述目标数据,所述空闲状态表征当前未向所述数据接收方发送行情数据。
在一可能的实施方式中,所述装置还包括(图中未示出):
第二缓存模块,用于若确定所述当前的数据传输状态为直通状态,则将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中,所述直通状态表征当前正向所述数据接收方发送当前接收到的所述行情数据;
超时处理模块,用于当确定发生数据传输超时时,从所述消息队列中读取排在首位的所述通路标识;从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路。
在一可能的实施方式中,所述超时处理模块确定发生数据传输超时,包括:
当检测到任一所述通路的第一缓存队列中的数据量达到第一设定阈值时,确定发生数据传输超时;或者,当检测到所述消息队列中的数据量达到第二设定阈值时,确定发生数据传输超时。
在一可能的实施方式中,在所述若确定所述当前的数据传输状态为空闲状态,则将当前接收到的所述行情数据确定为所述目标数据的情况下,所述装置还包括:
状态切换模块,用于将当前的数据传输状态由所述空闲状态切换为所述直通状态。
在一可能的实施方式中,在当前的数据传输状态为所述直通状态的情况下,所述装置还包括(图中未示出):
监测模块,用于监测当前正向所述数据接收方发送的行情数据是否发送完成;
第五确定模块,用于当监测到发送完成时,确定所述消息队列是否为空;
所述状态切换模块,还用于若确定所述消息队列为空,则将当前的数据传输状态由所述直通状态切换为所述空闲状态;若确定所述消息队列不为空,则将当前的数据传输状态由所述直通状态切换为缓存输出状态,所述缓存输出状态表征当前正向所述数据接收方发送任一所述第一缓存队列中缓存的所述行情数据。
在一可能的实施方式中,在当前的数据传输状态为所述缓存输出状态的情况下,所述监测模块还用于:监测当前正向所述数据接收方发送的行情数据是否发送完成;
所述第五确定模块还用于:当监测到发送完成时,确定所述消息队列是否为空;
所述状态切换模块还用于:若确定所述消息队列为空,则将当前的数据传输状态由所述缓存输出状态切换为所述空闲状态;若确定所述消息队列不为空,则保持当前的数据传输状态为所述缓存输出状态不变。
在一可能的实施方式中,在当前的数据传输状态为所述缓存输出状态的情况下,所述装置还包括(图中未示出):
读取模块,用于按照设定周期执行以下步骤:从所述消息队列中读取排在首位的所述通路标识;从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路。
在一可能的实施方式中,所述装置还包括(图中未示出):
丢弃模块,用于若比较出当前接收到的所述行情数据的消息序号小于对应的所述N;则丢弃当前接收到的所述行情数据。
在一可能的实施方式中,所述装置还包括(图中未示出):
挂起模块,用于若比较出当前接收到的所述行情数据的消息序号大于对应的所述N,则将当前接收到的所述行情数据存入所述任一通路对应的第二缓存队列中,以及控制上一级设备在接收到所述数据发送方通过所述任一通路向所述数据接收方发送的行情数据时,缓存接收到的所述行情数据,以停止向本设备发送所述数据发送方通过所述任一通路向所述数据接收方发送的行情数据。
在一可能的实施方式中,所述装置还包括(图中未示出):
缓存释放模块,用于当确定满足设定的缓存释放条件时,从所述第二缓存队列中读取行情数据;将从所述第二缓存队列中读取到的所述行情数据作为当前接收到的所述行情数据,执行所述确定当前是否满足设定的数据传输条件以及之后的所有步骤。
在一可能的实施方式中,所述装置还包括(图中未示出):
第二记录模块,用于若比较出当前接收到的所述行情数据的消息序号大于对应的所述N,则将当前接收到的所述行情数据的消息序号记录为与所述第一产品类型对应的第二消息标识;
所述缓存释放模块确定满足设定的缓存释放条件,包括:
当检测到向所述数据接收方发送的所述目标数据的消息序号为所述第二消息标识与1之间的差值时,确定满足设定的缓存释放条件;
或者,
当检测到所述上一级设备上缓存的所述行情数据的数据量达到第三设定阈值时,确定满足设定的缓存释放条件。
图6为本发明实施例提供的一种电子设备的结构示意图,图6所示的电子设备600包括:至少一个处理器601、存储器602、至少一个网络接口604和其他用户接口603。电子设备600中的各个组件通过总线系统605耦合在一起。可理解,总线系统605用于实现这些组件之间的连接通信。总线系统605除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统605。
其中,用户接口603可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器 (ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器 (DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。本文描述的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器602存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统6021和应用程序6022。
其中,操作系统6021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序6022,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序6022中。
在本发明实施例中,通过调用存储器602存储的程序或指令,具体的,可以是应用程序6022中存储的程序或指令,处理器601用于执行各方法实施例所提供的方法步骤,例如包括:
当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的所述行情数据;若否,则将当前接收到的所述行情数据确定为所述目标数据;
向所述数据接收方发送所述目标数据。
上述本发明实施例揭示的方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecific IntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray, FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecificIntegratedCircuits,ASIC)、数字信号处理器(DigitalSignalProcessing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(ProgrammableLogicDevice,PLD)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的电子设备可以是如图6中所示的电子设备,可执行如图2、图3A以及图3B中数据传输方法的所有步骤,进而实现图2、图3A以及图3B所示数据传输方法的技术效果,具体请参照图2、图3A以及图3B相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种计算机可读存储介质。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的数据传输方法。
所述处理器用于执行存储器中存储的数据传输程序,以实现以下在电子设备侧执行的数据传输方法的步骤:
当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的所述行情数据;若否,则将当前接收到的所述行情数据确定为所述目标数据;
向所述数据接收方发送所述目标数据。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据传输方法,其特征在于,所述方法包括:
当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据;
若是,则选择最早缓存的行情数据确定为待传输的目标数据,以及缓存当前接收到的所述行情数据;若否,则将当前接收到的所述行情数据确定为所述目标数据,其中,所述缓存当前接收到的所述行情数据,包括:将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中;所述确定当前是否缓存有来自任意所述通路的行情数据,包括:确定所述消息队列是否为空;若确定所述消息队列为空,则确定当前未缓存有来自任意所述通路的行情数据;若确定所述消息队列不为空,则确定当前缓存有来自任意所述通路的行情数据;所述将当前接收到的所述行情数据确定为所述目标数据,包括:确定当前的数据传输状态;若确定所述当前的数据传输状态为空闲状态,则将当前接收到的所述行情数据确定为所述目标数据,所述空闲状态表征当前未向所述数据接收方发送行情数据;所述方法还包括:若确定所述当前的数据传输状态为直通状态,则将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中,所述直通状态表征当前正向所述数据接收方发送当前接收到的所述行情数据;当确定发生数据传输超时时,从所述消息队列中读取排在首位的所述通路标识;从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路;
向所述数据接收方发送所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当首次接收到所述数据发送方通过任一所述通路向所述数据接收方发送的第一产品类型的行情数据时,将当前接收到的所述行情数据的消息序号记录为与所述第一产品类型对应的第一消息标识;
当非首次接收到所述数据发送方通过任一所述通路向所述数据接收方发送的所述第一产品类型的行情数据时,将当前接收到的所述行情数据的消息序号与N进行比较,所述N为当前的所述第一消息标识与1之和;
若比较出当前接收到的所述行情数据的消息序号等于所述N,则将当前的所述第一消息标识更新为当前接收到的所述行情数据的消息序号;若比较出当前接收到的所述行情数据的消息序号小于或大于所述N,则保持当前的所述第一消息标识不变;
所述确定当前是否满足设定的数据传输条件,包括:
根据当前接收到的所述行情数据的消息序号与对应的所述N,确定当前是否满足设定的数据传输条件。
3.根据权利要求2所述的方法,其特征在于,所述根据当前接收到的所述行情数据的消息序号与对应的所述N,确定当前是否满足设定的数据传输条件,包括:
将当前接收到的所述行情数据的消息序号与对应的所述N进行比较;
若比较出当前接收到的所述行情数据的消息序号等于对应的所述N,则确定当前满足设定的数据传输条件。
4.根据权利要求1所述的方法,其特征在于,所述选择最早缓存的行情数据确定为待传输的目标数据,包括:
从所述消息队列中读取排在首位的所述通路标识;
从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路。
5.根据权利要求1所述的方法,其特征在于,所述确定发生数据传输超时,包括:
当检测到任一所述通路的第一缓存队列中的数据量达到第一设定阈值时,确定发生数据传输超时;或者,
当检测到所述消息队列中的数据量达到第二设定阈值时,确定发生数据传输超时。
6.根据权利要求1所述的方法,其特征在于,在所述若确定所述当前的数据传输状态为空闲状态,则将当前接收到的所述行情数据确定为所述目标数据的情况下,所述方法还包括:
将当前的数据传输状态由所述空闲状态切换为所述直通状态。
7.根据权利要求1或6所述的方法,其特征在于,在当前的数据传输状态为所述直通状态的情况下,所述方法还包括:
监测当前正向所述数据接收方发送的行情数据是否发送完成;
当监测到发送完成时,确定所述消息队列是否为空;
若确定所述消息队列为空,则将当前的数据传输状态由所述直通状态切换为所述空闲状态;
若确定所述消息队列不为空,则将当前的数据传输状态由所述直通状态切换为缓存输出状态,所述缓存输出状态表征当前正向所述数据接收方发送任一所述第一缓存队列中缓存的所述行情数据。
8.根据权利要求7所述的方法,其特征在于,在当前的数据传输状态为所述缓存输出状态的情况下,所述方法还包括:
监测当前正向所述数据接收方发送的行情数据是否发送完成;
当监测到发送完成时,确定所述消息队列是否为空;
若确定所述消息队列为空,则将当前的数据传输状态由所述缓存输出状态切换为所述空闲状态;
若确定所述消息队列不为空,则保持当前的数据传输状态为所述缓存输出状态不变。
9.根据权利要求7所述的方法,其特征在于,在当前的数据传输状态为所述缓存输出状态的情况下,所述方法还包括:
按照设定周期执行以下步骤:
从所述消息队列中读取排在首位的所述通路标识;
从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路。
10.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若比较出当前接收到的所述行情数据的消息序号小于对应的所述N,则丢弃当前接收到的所述行情数据。
11.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若比较出当前接收到的所述行情数据的消息序号大于对应的所述N,则将当前接收到的所述行情数据存入所述任一通路对应的第二缓存队列中,以及控制上一级设备在接收到所述数据发送方通过所述任一通路向所述数据接收方发送的行情数据时,缓存接收到的所述行情数据,以停止向本设备发送所述数据发送方通过所述任一通路向所述数据接收方发送的行情数据。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
当确定满足设定的缓存释放条件时,从所述第二缓存队列中读取行情数据;
将从所述第二缓存队列中读取到的所述行情数据作为当前接收到的所述行情数据,执行所述确定当前是否满足设定的数据传输条件以及之后的所有步骤。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
若比较出当前接收到的所述行情数据的消息序号大于对应的所述N,则将当前接收到的所述行情数据的消息序号记录为与所述第一产品类型对应的第二消息标识;
所述确定满足设定的缓存释放条件,包括:
当检测到向所述数据接收方发送的所述目标数据的消息序号为所述第二消息标识与1之间的差值时,确定满足设定的缓存释放条件;
或者,
当检测到所述上一级设备上缓存的所述行情数据的数据量达到第三设定阈值时,确定满足设定的缓存释放条件。
14.一种数据传输装置,其特征在于,所述装置包括:
第一确定模块,用于当接收到数据发送方通过任一通路向数据接收方发送的行情数据时,确定当前是否满足设定的数据传输条件,所述数据发送方与所述数据接收方之间具有多个所述通路,所述数据发送方采用多路传输方式向所述数据接收方发送所述行情数据;
第二确定模块,用于当确定当前满足所述数据传输条件时,确定当前是否缓存有来自任意所述通路的行情数据,其中,所述确定当前是否缓存有来自任意所述通路的行情数据,包括:确定消息队列是否为空;若确定所述消息队列为空,则确定当前未缓存有来自任意所述通路的行情数据;若确定所述消息队列不为空,则确定当前缓存有来自任意所述通路的行情数据;
第三确定模块,用于若确定当前缓存有来自任意所述通路的行情数据,则选择最早缓存的行情数据确定为待传输的目标数据;
缓存模块,用于若确定当前缓存有来自任意所述通路的行情数据,则缓存当前接收到的所述行情数据,其中,所述缓存当前接收到的所述行情数据,包括:将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中;
第四确定模块,用于若确定当前未缓存有来自任意所述通路的行情数据,则将当前接收到的所述行情数据确定为所述目标数据,其中,所述将当前接收到的所述行情数据确定为所述目标数据,包括:确定当前的数据传输状态;若确定所述当前的数据传输状态为空闲状态,则将当前接收到的所述行情数据确定为所述目标数据,所述空闲状态表征当前未向所述数据接收方发送行情数据;若确定所述当前的数据传输状态为直通状态,则将当前接收到的所述行情数据存入所述任一通路对应的第一缓存队列中,以及将所述任一通路的通路标识存入设定的消息队列中,所述直通状态表征当前正向所述数据接收方发送当前接收到的所述行情数据;当确定发生数据传输超时时,从所述消息队列中读取排在首位的所述通路标识;从目标通路对应的所述第一缓存队列中读取排在首位的行情数据作为待传输的目标数据,所述目标通路指读取到的所述通路标识所对应的通路;
数据发送模块,用于向所述数据接收方发送所述目标数据。
15.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述权利要求1-13任一所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-13任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110749081.5A CN113190481B (zh) | 2021-07-02 | 2021-07-02 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110749081.5A CN113190481B (zh) | 2021-07-02 | 2021-07-02 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190481A CN113190481A (zh) | 2021-07-30 |
CN113190481B true CN113190481B (zh) | 2021-10-29 |
Family
ID=76976962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110749081.5A Active CN113190481B (zh) | 2021-07-02 | 2021-07-02 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190481B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449045B (zh) * | 2021-12-29 | 2024-07-19 | 深圳达实智能股份有限公司 | 一种物联网边缘网关数据缓存方法和装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5819943A (ja) * | 1981-07-30 | 1983-02-05 | Kokusai Electric Co Ltd | 時系列情報の分類表示装置 |
CN105654383A (zh) * | 2016-01-07 | 2016-06-08 | 中国科学院信息工程研究所 | 基于流水线架构的低时延fast行情解码装置和方法 |
CN106296397A (zh) * | 2015-05-26 | 2017-01-04 | 南京艾科朗克信息科技有限公司 | 期货行情加速系统及加速方法 |
CN108768983A (zh) * | 2018-05-17 | 2018-11-06 | 上海金融期货信息技术有限公司 | 基于fpga的海量网络突发数据分发系统 |
CN108769141A (zh) * | 2018-05-09 | 2018-11-06 | 深圳市深弈科技有限公司 | 一种多源实时交易行情数据接收与归并处理的方法 |
CN109413139A (zh) * | 2018-09-06 | 2019-03-01 | 高盈量化云科技(深圳)有限公司 | 一种分布式多路行情系统 |
CN110278260A (zh) * | 2019-06-17 | 2019-09-24 | 武汉灯塔之光科技有限公司 | 一种不同证券行情数据的转发录播方法、系统和装置 |
CN111107165A (zh) * | 2019-12-30 | 2020-05-05 | 深圳市其乐游戏科技有限公司 | 断线重连方法、装置及计算机可读存储介质 |
CN111966486A (zh) * | 2020-07-01 | 2020-11-20 | 深圳华云信息系统有限公司 | 一种获取数据的方法、fpga系统以及可读存储介质 |
CN111970092A (zh) * | 2020-08-12 | 2020-11-20 | 北京工业大学 | 一种支持可靠性调节的多协议冗余网络异步通信方法 |
CN112486888A (zh) * | 2020-12-11 | 2021-03-12 | 盛立金融软件开发(杭州)有限公司 | 一种行情数据传输方法、装置、设备及介质 |
CN112532731A (zh) * | 2020-12-02 | 2021-03-19 | 上海英方软件股份有限公司 | 一种多路行情数据源自动择优的方法及装置 |
CN112565430A (zh) * | 2020-12-08 | 2021-03-26 | 上证所信息网络有限公司 | 一种多市场行情数据在广域网的低时延可靠传输方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036965B1 (en) * | 2007-03-26 | 2011-10-11 | Trading Technologies International, Inc. | Distribution of electronic market data |
CN112087470A (zh) * | 2020-09-27 | 2020-12-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种行情数据传输方法及相关装置 |
CN112822256B (zh) * | 2020-12-31 | 2023-01-17 | 上海英方软件股份有限公司 | 一种行情文件转数据流传输的方法及装置 |
-
2021
- 2021-07-02 CN CN202110749081.5A patent/CN113190481B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5819943A (ja) * | 1981-07-30 | 1983-02-05 | Kokusai Electric Co Ltd | 時系列情報の分類表示装置 |
CN106296397A (zh) * | 2015-05-26 | 2017-01-04 | 南京艾科朗克信息科技有限公司 | 期货行情加速系统及加速方法 |
CN105654383A (zh) * | 2016-01-07 | 2016-06-08 | 中国科学院信息工程研究所 | 基于流水线架构的低时延fast行情解码装置和方法 |
CN108769141A (zh) * | 2018-05-09 | 2018-11-06 | 深圳市深弈科技有限公司 | 一种多源实时交易行情数据接收与归并处理的方法 |
CN108768983A (zh) * | 2018-05-17 | 2018-11-06 | 上海金融期货信息技术有限公司 | 基于fpga的海量网络突发数据分发系统 |
CN109413139A (zh) * | 2018-09-06 | 2019-03-01 | 高盈量化云科技(深圳)有限公司 | 一种分布式多路行情系统 |
CN110278260A (zh) * | 2019-06-17 | 2019-09-24 | 武汉灯塔之光科技有限公司 | 一种不同证券行情数据的转发录播方法、系统和装置 |
CN111107165A (zh) * | 2019-12-30 | 2020-05-05 | 深圳市其乐游戏科技有限公司 | 断线重连方法、装置及计算机可读存储介质 |
CN111966486A (zh) * | 2020-07-01 | 2020-11-20 | 深圳华云信息系统有限公司 | 一种获取数据的方法、fpga系统以及可读存储介质 |
CN111970092A (zh) * | 2020-08-12 | 2020-11-20 | 北京工业大学 | 一种支持可靠性调节的多协议冗余网络异步通信方法 |
CN112532731A (zh) * | 2020-12-02 | 2021-03-19 | 上海英方软件股份有限公司 | 一种多路行情数据源自动择优的方法及装置 |
CN112565430A (zh) * | 2020-12-08 | 2021-03-26 | 上证所信息网络有限公司 | 一种多市场行情数据在广域网的低时延可靠传输方法 |
CN112486888A (zh) * | 2020-12-11 | 2021-03-12 | 盛立金融软件开发(杭州)有限公司 | 一种行情数据传输方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
Level_2证券行情数据分析系统的设计与实现;程磊;《中国优秀硕士学位论文全文数据库》;20090831;第6-8、38-39页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113190481A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10868767B2 (en) | Data transmission method and apparatus in optoelectronic hybrid network | |
CN113711551A (zh) | 促进网络接口控制器(nic)中的动态命令管理的系统和方法 | |
CN1910868B (zh) | 用于控制队列缓冲器的方法及装置 | |
CN112492033A (zh) | 文件传输方法、系统及计算机可读存储介质 | |
US9588799B1 (en) | Managing test services in a distributed production service environment | |
CN113190481B (zh) | 数据传输方法、装置、电子设备及计算机可读存储介质 | |
WO2021197128A1 (zh) | 流量限速方法及装置 | |
US20230283578A1 (en) | Method for forwarding data packet, electronic device, and storage medium for the same | |
JP4786354B2 (ja) | iSCSI通信制御方法とそれを用いた記憶システム | |
WO2020100581A1 (ja) | 評価装置、評価方法および評価プログラム | |
US7870257B2 (en) | Enhancing real-time performance for java application serving | |
JP2005115600A (ja) | 情報処理装置及び方法 | |
CN115037700A (zh) | 一种复杂网络数据包传送方法、系统、终端及存储介质 | |
EP3826244B1 (en) | Congestion control method and related device | |
WO2018023966A1 (zh) | 一种缓存策略的确定方法及装置 | |
CN116248699B (zh) | 多副本场景下的数据读取方法、装置、设备及存储介质 | |
CN114490458B (zh) | 数据传输方法、芯片、服务器以及存储介质 | |
CN111596864A (zh) | 一种数据延时删除的方法、装置、服务器及存储介质 | |
CN113297117B (zh) | 数据传输方法、设备、网络系统及存储介质 | |
CN114500544B (zh) | 一种节点间负载均衡方法、系统、设备以及介质 | |
CN113992609B (zh) | 一种处理多链路业务数据乱序的方法及系统 | |
CN115941615A (zh) | 数据处理方法、装置、车辆及存储介质 | |
CN112073325B (zh) | 数据拥塞控制及带宽预估方法 | |
US20120102086A1 (en) | Processing node selection system, information processing node, processing execution method and program | |
CN105099912A (zh) | 一种多路径的数据调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 9th Floor, Block A, Shenzhen National Engineering Laboratory Building, No. 20, Gaoxin South 7th Road, High-tech Zone Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong 518000 Patentee after: Shenzhen Huayun Information System Technology Co.,Ltd. Address before: No. 904, block a, national engineering laboratory building, Gaoxin South 7th road digital technology park, Yuehai street, Nanshan District, Shenzhen, Guangdong 518000 Patentee before: Shenzhen Huayun Information System Co.,Ltd. |
|
CP03 | Change of name, title or address |