CN103152287B - 一种实时数据的可靠接收方法及装置 - Google Patents
一种实时数据的可靠接收方法及装置 Download PDFInfo
- Publication number
- CN103152287B CN103152287B CN201310103572.8A CN201310103572A CN103152287B CN 103152287 B CN103152287 B CN 103152287B CN 201310103572 A CN201310103572 A CN 201310103572A CN 103152287 B CN103152287 B CN 103152287B
- Authority
- CN
- China
- Prior art keywords
- data
- real time
- time data
- sequence number
- bag
- 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
Abstract
本申请实施例公开了一种实时数据的可靠接收方法。方法包括:数据接收节点接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点链路连接,所述实时数据包具有数据类别标识;数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,数据接收节点按照数据类别标识接受各自对应的实时数据包。本申请还公开了一种实时数据的可靠接收装置。本申请实施例提高了实时数据的及时性和连续性。
Description
技术领域
本申请涉及信息处理技术领域,特别涉及一种实时数据的可靠接收方法及其对应的装置。
背景技术
在数据处理系统中存在多个数据节点,这些数据节点可划分为两类:一是将自身产生或获得的数据向外发送(转发)的数据源节点,二是接收来自数据源节点的数据并进行一定处理的数据接收节点。数据源节点和数据接收节点之间交互的数据可以是实时的,也可以是非实时的。在数据源节点和数据接收节点间传输的实时数据具有两个基本特点:及时性和连续性,及时性要求从数据源节点出发的数据到达数据接收节点的时间在所处系统环境下不能漫长得不可忍受,过度(不当)延迟将丧失实时数据的及时性特点;连续性要求数据接收节点在相邻的两个数据之间具有关联性,前后不相关联的数据将使实时数据变得毫无意义。
为了保证实时数据传输的及时性和连续性,在实时数据的传输过程中,数据源节点的机器硬件、数据源节点与数据接收节点间的网络等均不能出现故障,否则将导致实时数据不能正常传输。现有技术解决上述故障保证实时数据正常传输的通常方式是采用主备链路机制,该机制设置多条链路,其中当前在线的链路为主链路,其他链路为备用链路,且在数据接收节点设置数据接收间隔阀值,如果在该间隔阀值之内没有接收到来自数据源节点的实时数据,则认为数据源节点与数据接收节点之间出现故障(该故障可以体现为两个节点之间的通信链路断开,或者虽然通信链路没有断开但由于网络阻塞等原因导致数据传输极度延迟),数据接收节点尝试重新建立主链路,如果在预设时间内无法再度建立起主链路,将切换到多个“备而不用”的备用链路中的一个备用链路进行实时数据传输。
然而,由于主备链路机制或者采用主链路,或者采用备用链路实现实时数据传输方式,当网络出现阻塞等情况时,将延长实时数据到达数据接收节点的时间,破坏实时数据的及时性特点。此外,由于主备链路机制需要发起重连接、链路切换等操作,这些操作将耗费时间,使主备切换过程中出现时间窗口,导致在时间窗口内产生的实时数据丢失,破坏了实时数据传输的连续性。
发明内容
为解决上述技术问题,本申请实施例提供了一种实时数据的可靠接收方法及其对应的装置,以在数据源节点与数据接收节点之间出现故障的情况下实现实时数据的及时性传输。
本申请提供的实时数据的可靠接收方法包括:
数据接收节点接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点间的链路处于连接状态,所述实时数据包具有数据类别标识;
当数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,数据接收节点按照数据类别标识接受各自对应的实时数据包作为实时数据。
优选地,所述实时数据包还具有数据序号信息,所述数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据具体包括:
对多个实时数据包的数据序号信息进行判断,将数据序号信息满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
进一步优选地,所述实时数据包还具有数据源节点发送数据包时产生的时间戳信息,所述数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据具体包括:
对多个实时数据包的数据序号信息和时间戳信息进行判断,将数据序号信息和时间戳信息同时满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
进一步优选地,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断具体包括:
根据具有相同数据类别标识的实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
选取具有相同数据类别标识实时数据包中的一个实时数据包作为第二数据;
比较第二数据的数据序号与第一数据的数据序号之间的大小关系,
如果第二数据的数据序号大于第一数据的数据序号,则用第二数据更新所述第一数据,并从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤;
如果第二数据的数据序号小于第一数据的数据序号,则从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤;
如果第二数据的数据序号等于第一数据的数据序号,则判断第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则用第二数据更新所述第一数据,并从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤。
进一步优选地,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断具体包括:
比较具有相同数据类别标识的实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
比较第三数据的数据序号与第一数据的数据序号之间的大小关系,
如果第三数据的数据序号大于第一数据的序号,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据;
如果第三数据的数据序号等于第一数据的数据序号,则比较第三数据的时间戳信息是否大于第一数据的时间戳信息,若是,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据。
本申请实施例还提供了一种实时数据的可靠接收装置,该装置包括:实时数据接收单元和实时数据接受单元,其中:
所述实时数据接收单元,用于接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点间的链路处于连接状态,所述实时数据包具有数据类别标识;
所述实时数据接受单元,用于在数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,按照数据类别标识接受各自对应的实时数据包作为实时数据。
优选地,所述实时数据包还具有数据序号信息,所述实时数据接受单元包括:判断子单元和确定子单元,其中:
所述判断子单元,用于对具有相同数据类别标识的实时数据包的数据序号信息进行判断;
所述确定子单元,用于将数据序号信息满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
进一步优选地,所述实时数据包还具有数据源节点发送数据包时产生的时间戳信息,所述判断子单元具体用于对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断,所述确定子单元具体用于将数据序号信息和时间戳信息同时满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
进一步优选地,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述判断子单元具体包括:第一读取子单元、数据包选取子单元、第一比较子单元、第二比较子单元和第一更新子单元,其中:
所述第一读取子单元,用于根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
所述数据包选取子单元,用于选取具有相同数据类别标识的实时数据包中的一个实时数据包作为第二数据;
所述第一比较子单元,用于比较第二数据的数据序号与第一数据的数据序号之间的大小关系,在第二数据的数据序号大于第一数据的数据序号时,触发第一更新子单元,在第二数据的数据序号小于第一数据的数据序号时,触发数据包选取子单元从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断,在第二数据的数据序号等于第一数据的数据序号时,触发第二比较子单元;
所述第一更新子单元,用于用第二数据更新所述第一数据,并触发数据包选取子单元从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断;
所述第二比较子单元,用于判断第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发第一更新子单元。
进一步优选地,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述判断子单元具体包括:第三比较子单元、第二读取子单元、第四比较子单元、第二更新子单元和第五比较子单元,其中:
所述第三比较子单元,用于比较多个实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
所述第二读取子单元,用于根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
所述第四比较子单元,用于比较第三数据的数据序号与第一数据的数据序号之间的大小关系,在第三数据的数据序号大于第一数据的序号时,触发第二更新子单元,在第三数据的数据序号等于第一数据的数据序号时,触发第五比较子单元;
所述第二更新子单元,用于用第三数据更新所述第一数据,并触发确定子单元将所述第三数据确定为数据接收节点可接受的实时数据;
所述第五比较子单元,用于比较第三数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发第二更新子单元。
本申请实施例的数据接收节点接收来自数据源节点族内的数据源节点发送的实时数据包,当数据接收节点接收到具有相同数据类别标识的多个实时数据包时,数据接收节点仅接受其中一个实时数据包作为实时数据。与现有技术相比,由于本申请的数据源节点族内的至少两个数据源节点与数据接收节点处于正常连接,使实时数据包具有多条达到数据接收节点的路径,数据源到数据接收点的稳定性整体得以提高,当网络出现阻塞等情况时,从概率上增强了数据接收节点接收实时数据包的及时性。此外,由于数据源节点族的概念取代了单个数据源节点,在数据源节点族内的一个数据源节点或数据源节点与数据接收节点之间的链路出现故障时,实时数据包可通过数据源节点族内其他的链路达到数据接收节点,这种“零切换”机制使实时数据传输过程中不再出现时间窗,避免了实时数据的丢失,确保了实时数据传输的连续性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的实时数据的可靠接收方法的一个实施例的流程图;
图2为本申请从具有相同数据类别标识的实时数据包中确定可接受的实时数据的实现方式之一;
图3为本申请的实时数据的可靠接收方法的一个具体应用实例的流程图;
图4为本申请的实时数据的可靠接收装置的一个实施例的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在详细介绍本申请的各种实施例之前,先对本申请涉及到的个别概念予以简要解释:本申请提及的“实时数据”是指随着时间推移不断产生更新的数据,该数据在数据源节点产生后,通过各种传输方式达到数据接收节点,在传输过程中以实时数据包的形式存在,比如,某个交通路口的每日车流量,每时每刻均存在着变化,这里的以时间为函数的车流量值即是一种实时数据,该实时数据在监控探头(数据源节点)获取到后通常需要以数据包的形式传递给交通控制中心或调度平台(数据接收节点),进而据此作出限流、封闭道路等决策。
本申请提及的“数据源节点族”是指多个数据源节点的集合,该族内的数据源节点之间可以存在某种程度上的耦合特性。比如,均具有相同的功能,数据源节点族内的各个数据源节点可以是对其中一个数据源节点进行复制而产生,也可以是根据一定的预设规则将多个独立数据源节点划归为某个数据源节点族内。
本申请提及的“接收”与“接受”不同,接收是数据接收节点收到实时数据包的“事实”,但这些数据包可以包含有数据接收节点并不真正需要的数据包,而接受则是数据接收节点根据自己的要求有选择性的确认某个实时数据包,这里可将“接受”视为“可靠接收”。比如,数据接收节点同时接收到来自数据源节点族的3个数据包,但这三个数据包可能是具有相同数据类别的、包含有相同数据内容的数据包,那么对于数据接收节点而言,仅需要接收其他一个即可,其他两个均为冗余数据包。
参见图1,该图示出了本申请的实时数据的可靠接收方法的一个实施例的流程。该实施例包括:
步骤S101:数据接收节点接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点链路连接,所述实时数据包具有数据类别标识;
数据源节点族内包含多个数据源节点,这些数据源节点中至少两个数据源节点同时与数据接收节点存在正常的链路连接,数据接收节点从这些处于正常状态的链路中选择一条或者多条链路传输实时数据。这里的实时数据包的数据类别标识主要用于标识实时数据的类别,之所以对实时数据包的类别进行区分,其目的在于在实际应用过程中接受下来针对不同类别的数据后,对它们的各自处理方式可能存在差别。
步骤S102:当数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,数据接收节点按照数据类别标识接受各自对应的实时数据包。
数据接收节点接收来自数据源节点族的实时数据包的情况与主备链路机制相比更为多样。在主备链路机制中,由于在一个时间点上或者是主链路正处于工作状态,或者是备用链路正处于工作状态,无论数据接收节点通过主链路还是备用链路接收实时数据包,其接收的情况通常仅为一种,即在一个时刻接收一个实时数据包(注:如果数据接收节点存在多个并行的数据接收接口,本实施例提及的“数据接收”是仅针对其中的一个数据接口而言)。然而,在本实施例中,数据接收节点接收数据的情况则可能存在多种:
先说明数据接收的基本类别,数据接收节点接收实时数据包的基本类别根据不同区分标准存在不同划分,比如,以实时数据接收的时间为准,既可能在一个时间点仅接收到一个实时数据包,也可能在一个时间点同时接收到多个实时数据包;以实时数据接收的数据类别(该类别区别于数据接收的基本类别)为准,对接收的多个实时数据包而言,既可能均为相同数据类别标识的实时数据包,也可能为不同数据类别标识的实时数据包。将上述这两种划分标准结合在一起,则可以将接收数据的情况划分为三类:
一类是在一个时间点接收到的实时数据包有且仅为1个,这种情况下,该仅有的实时数据包将被接受为数据接收节点当前可靠接收的实时数据。这类似于现有技术中的主备链路机制的情况。
另一类是在一个时间节点接收到多个实时数据包但这些数据包属于不同的数据类别,这种情况下,每个数据类别的实时数据包将被接受为数据接收节点针对其自身数据类别的当前可靠接收的实时数据。这相当于在现有技术中的主备链路机制基础上增加了类别辨识功能。
再一类是在一个时间节点接收到多个实时数据包且这些数据包均属于相同的数据类别,这种情况下,说明采用数据源节点族的机制产生了数据冗余,对于数据接收节点而言,接受多个实时数据包中的一个即可达到接收实时数据的目的。本实施例即仅接受多个实时数据包中的一个实时数据包作为实时数据。
需要说明的是:上述将数据接收节点到多个数据包的情况划分为两类(第二类和第三类),这是从基本类别的角度上所作的划分,实际上,完整而言在多个数据包的情形下存在三种性质的集合:一是多个数据包的数据类别标识均相同的集合,二是多个数据包的数据类别标识均不相同集合,第三个集合是多个数据包的数据类别标识既存在相同的数据包,也存在与相同数据类别标识不同的其他数据类别的数据包。但是,对于第三种集合而言,其本质上可以划归在前两个集合之中,即将具有相同数据类别标识的数据包的子集合划分在第一个集合,将与相同数据类别标识不同的其他数据类别的数据包的子集合划分为第二个集合。举例而言,第一种性质的集合可以是这样的例子:{1,1,1,1,1},这里以数字代表数据类别标识,第二种性质的集合可以是:{1,2,3,4,5},第三种性子的集合可以是:{1,1,1,2,3},对于第三种性质的集合而言,其可以分为两个子集合,即{1,1,1}、{2,3},前一个子集合可归入第一种性质的集合之中,后一个子集合可归入第二种性质的集合之中。
本实施例的数据接收节点接收来自数据源节点族内的数据源节点发送的实时数据包,当数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,数据接收节点按照数据类别标识接受各自对应的实时数据包。与现有技术相比,本实施例至少可以取得如下技术效果:
(1)由于本实施例的数据源节点族内的至少两个数据源节点与数据接收节点处于正常连接,使实时数据包具有多条达到数据接收节点的路径,数据源到数据接收点的稳定性整体得以提高,当网络出现阻塞等情况时,从概率上增强了数据接收节点接收实时数据包的及时性。举例而言,假设在数据源节点产生了实时数据包A,如果采用现有技术的主备链路机制,当前处于正常工作状态的链路为主链路(或备用链路),实时数据包A通过主链路(或备用链路)向数据接收节点传输,在实时数据包A传输过程中遭遇网络堵塞,由于有且仅有这一条到达数据接收节点的链路,那么数据接收节点只有在网络阻塞解除后才可能将实时数据包A传送到数据接收节点,导致实时数据出现滞后;如果采用本实施例的数据源节点族的机制,当前处于正常工作状态的链路包括至少两条,实时数据包A由两条链路同时向数据接收节点传输,这样既然其他一条链路出现网络阻塞,实时数据包A也可以通过另一条链路正常到达数据接收节点,而两条链路同时出现网络堵塞的概率比一条链路出现网络堵塞的概率要小得多,从而提高了实时数据包A传输的及时性。
(2)由于数据源节点族的概念取代了单个数据源节点,在数据源节点族内的一个数据源节点或数据源节点与数据接收节点之间的链路出现故障时,实时数据包可通过数据源节点族内其他的链路达到数据接收节点,这种“零切换”机制使实时数据传输过程中不再出现时间窗,避免了实时数据的丢失,确保了实时数据传输的连续性。举例而言,假设数据源节点在第1时刻、第2时刻分别产生了实时数据包B、C,如果采用现有技术的主备链路机制,当前处于正常工作状态的链路为主链路,实时数据包B已通过该链路正常传输到数据接收节点,但在传输实时数据包C时主链路出现故障,这时,数据接收节点尝试重新连接到数据源节点,在一定时间内未能成功,于是启用备用链路,在启用备用链路后的第3时刻数据源节点产生了实时数据包D,实时数据包D通过备用链路传输到数据接收节点,综合起来,数据接收节点收到了实时数据包B、D,丢失了实时数据包C,破坏了B-C-D之间的连续性。如果采用本实施例的数据源节点族的机制,在传输实时数据包C时的一条链路出现故障时,其他条链路可以照样传输,无需等待链路切换的时间,数据接收节点在收到实时数据包B时,可随之收到C,再收到D,从而确保了B-C-D之间的连续性。
上述实施例中提到对于具有相同数据类别标识的实时数据包,数据接收节点仅接受其中一个实时数据包作为实时数据。在实际应用过程中,具体采用哪种方式来实现从具有相同数据类别标识的多个实时数据包中过滤出一个合适的实时数据包作为数据接收节点可接受的实时数据包,这取决于应用目的,不同的应用目的可以具有不同的实现方式。比如,可以在实时数据包中设置某些属性字段,依据这些属性字段是否满足预设条件的方式来实现对多个实时数据包的取舍,不同的属性字段对于的预设条件可能存在差别。比如,如果实时数据属于随着时间推移不断变大的类型,则可在实时数据包中包含数据序号字段,预设条件可以设置为数据序号越大实时性越强,越符合数据接收节点对实时数据包的接收要求。
作为例子,假设在实时数据包中设置数据序号信息或者发送实时数据时产生的时间戳,该数据序号或时间戳反映数据的实时性,通过对这些具有相同数据类别标识的多个实时数据包的数据序号信息进行判断,来确定数据接收节点可接受的实时数据。下面说明如何从多个实时数据包中确定可接受的实时数据,这里提供两者具体的实现方式:
方式之一:通过将多个实时数据包与数据接收点本地存储的数据进行逐一比较的方式确定数据接收节点可接受的实时数据包。参见图2,该图示出了本方式的流程,在该流程中假设数据接收节点接收到的实时数据包包括N个,N为大于2的自然数。该流程包括:
步骤S200:i=1,i表示具有相同数据类别标识的N个实时数据包中的第i个实时数据包;
步骤S201:根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
步骤S202:判断i是否大于N,如果否,则执行步骤S203;
步骤S203:从具有相同数据类别标识的N个实时数据包中选取第i个实时数据包;
步骤S204:比较第i个实时数据的数据序号与第一数据的数据序号之间的大小关系,如果第i个实时数据包的数据序号大于第一数据的数据序号,则执行步骤S206:如果第i个实时数据包的数据序号小于第一数据的数据序号,则执行步骤S207;如果第i个实时数据包的数据序号等于第一数据的数据序号,则执行步骤S205;
步骤S205:判断第i个实时数据包的时间戳信息是否大于第一数据的时间戳信息,如果是,则执行步骤S206;
步骤S206:用第i个实时数据包更新所述第一数据,执行步骤S207;
步骤S207:i=i+1,返回步骤S202。
需要说明的是:在实际应用过程中,可能会在数据接收节点端建立实时数据包队列(堆栈),用于先将数据接收节点接收到的多个实时数据包依次存入该队列(堆栈),在实现上述步骤S203时,从该队列中逐个读取待比较的实时数据包。
方式之二:先将多个实时数据两两之间进行比较,找出它们中的一个实时数据包,然后再将这个实时数据包与数据接收节点本地存储的数据进行比较,以此确定数据接收节点可接受的实时数据包。具体而言:
比较具有相同数据类别标识的实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
比较第三数据的数据序号与第一数据的数据序号之间的大小关系,如果第三数据的数据序号大于第一数据的序号,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据;如果第三数据的数据序号等于第一数据的数据序号,则比较第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据。
为了便于理解本申请的技术方案,下面以一个具体应用场景为实例对上述实施例作进一步阐释。该应用场景为证券实时行情数据处理系统,在该系统中用户需要不断接收证券交易服务器每时刻的证券交易总量,以便观察交易总量的趋势,从而对投资进行正确的决策。实时数据包中包含证券标识(股票代码)、总成交量和时间戳。参见图3,该图示出了该实例的流程图:
步骤S301:用户应用程序接收到证券交易服务器发送的包含证券标识、总成交量和时间戳的实时数据包;
步骤S302:用户应用程序根据实时数据包中的证券标识找出上次存储的本地关于该证券标识的信息;
步骤S303:用户应用程序判断实时数据包中的总成交量是否大于本地的总成交量,如果是,则执行步骤S306;如果否,则执行步骤S304;
步骤S304:用户应用程序判断实时数据包中的总成交量是否等于本地的总成交量,如果是,则执行步骤S305:如果否,则执行步骤S307;
步骤S305:用户应用程序判断实时数据包的时间戳是否大于本地的时间戳,如果是,则执行步骤S306;如果否,则执行步骤S307;
步骤S306:用户应用程序用实时数据包更新本地存储的关于该证券标识的信息,返回步骤S301;
步骤S307:丢弃该实时数据包,返回步骤S301。
上述内容详细叙述了本申请的实时数据的可靠接收方法的实施例,相应地,本申请还提供了一种实时数据的可靠接收装置实施例。参见图4,该图示出了本申请的实时数据的可靠接收装置实施例的结构框图。该装置包括:实时数据接收单元401和实时数据接受单元402,其中:
实时数据接收单元401,用于接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点间的链路处于连接状态,所述实时数据包具有数据类别标识;
实时数据接受单元402,用于在数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,按照数据类别标识接受各自对应的实时数据包作为实时数据。
本装置实施例的工作过程是:实时数据接收单元401接收数据源节点族内的数据源节点发送的实时数据包,在数据接收节点接收到多个实时数据包时,由实时数据接受单元402针对多个实时数据包中具有相同的数据类别标识的实时数据包,接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;针对多个实时数据包中具有不同数据类别标识的实时数据包,按照数据类别标识接受各自对应的实时数据包作为实时数据。
本装置实施例的数据接收节点接收来自数据源节点族内的数据源节点发送的实时数据包,当数据接收节点接收到具有相同数据类别标识的多个实时数据包时,数据接收节点仅接受其中一个实时数据包作为实时数据。与现有技术相比,由于本装置实施例的数据源节点族内的至少两个数据源节点与数据接收节点处于正常连接,使实时数据包具有多条达到数据接收节点的路径,数据源到数据接收点的稳定性整体得以提高,当网络出现阻塞等情况时,从概率上增强了数据接收节点接收实时数据包的及时性。而且,由于数据源节点族的概念取代了单个数据源节点,在数据源节点族内的一个数据源节点或数据源节点与数据接收节点之间的链路出现故障时,实时数据包可通过数据源节点族内其他的链路达到数据接收节点,这种“零切换”机制使实时数据传输过程中不再出现时间窗,避免了实时数据的丢失,确保了实时数据传输的连续性。
上述装置实施例中,实时数据包包含不同的信息,实时数据接受单元将具有不同的内部结构,即在实时数据包包含不同信息的情况下,可能存在与之对应的不同的实现“接受多个实时数据包中一个实时数据包”的具体方式。比如,当实时数据包具有数据序号信息,实时数据接受单元402可以包括:判断子单元4021和确定子单元4022,其中:判断子单元4021,用于对具有相同数据类别标识的实时数据包的数据序号信息进行判断;确定子单元4022,用于将数据序号信息满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
进一步地,当实时数据包还具有数据源节点发送数据包时产生的时间戳信息时,判断子单元4021具体用于对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断,确定子单元4022具体用于将数据序号信息和时间戳信息同时满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
同样地,前述的判断子单元4021的内部组成结构与实现对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断的具体方式有关,下面在预设条件为“数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据”的情况下,提供两种判断子单元的具体组成。一种组成方式是:判断子单元4021具体包括:第一读取子单元40211、数据包选取子单元40212、第一比较子单元40213、第二比较子单元40214和第一更新子单元40215,其中:
第一读取子单元40211,用于根据具有相同数据类别标识的实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
数据包选取子单元40212,用于从具有相同数据类别标识的实时数据包中选取一个实时数据包作为第二数据;
第一比较子单元40213,用于比较第二数据的数据序号与第一数据的数据序号之间的大小关系,在第二数据的数据序号大于第一数据的数据序号时,触发第一实时数据更新单元40215,在第二数据的数据序号小于第一数据的数据序号时,触发数据包选取子单元40212从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断,在第二数据的数据序号等于第一数据的数据序号时,触发第二比较子单元40214;
第一更新子单元40215,用于用第二数据更新所述第一数据,并触发数据包选取子单元从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断;
第二比较子单元40214,用于判断第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发实时数据更新单元。
另一种组成方式是:判断子单元4021具体包括:第三比较子单元、第二读取子单元、第四比较子单元、第二更新子单元和第五比较子单元,其中:
所述第三比较子单元,用于比较具有相同数据类别标识的实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
所述第二读取子单元,用于根据具有相同数据类别标识的实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
所述第四比较子单元,用于比较第三数据的数据序号与第一数据的数据序号之间的大小关系,在第三数据的数据序号大于第一数据的序号时,触发第二更新单元,在第三数据的数据序号等于第一数据的数据序号时,触发第五比较子单元;
所述第二更新子单元,用于用第三数据更新所述第一数据,并触发确定子单元将所述第三数据确定为数据接收节点可接受的实时数据;
所述第五比较子单元,用于比较第三数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发第二更新子单元。
需要说明的是:为了叙述的简便,本说明书的上述实施例以及实施例的各种变形实现方式重点说明的都是与其他实施例或变形方式的不同之处,各个情形之间相同相似的部分互相参见即可。尤其,对于装置实施例的几个改进方式而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例的各单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到多个网络环境下。在实际应用过程中,可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的,本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种实时数据的可靠接收方法,其特征在于,该方法包括:
数据接收节点接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点间的链路处于连接状态,所述实时数据包具有数据类别标识;
当数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,数据接收节点按照数据类别标识接受各自对应的实时数据包作为实时数据。
2.根据权利要求1所述的方法,其特征在于,所述实时数据包还具有数据序号信息,所述数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据具体包括:
对具有相同数据类别标识的实时数据包的数据序号信息进行判断,将数据序号信息满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
3.根据权利要求2所述的方法,其特征在于,所述实时数据包还具有数据源节点发送数据包时产生的时间戳信息,所述数据接收节点接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据具体包括:
对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断,将数据序号信息和时间戳信息同时满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
4.根据权利要求3所述的方法,其特征在于,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断具体包括:
根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
选取具有相同数据类别标识的实时数据包中的一个实时数据包作为第二数据;
比较第二数据的数据序号与第一数据的数据序号之间的大小关系,
如果第二数据的数据序号大于第一数据的数据序号,则用第二数据更新所述第一数据,并从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤;
如果第二数据的数据序号小于第一数据的数据序号,则从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤;
如果第二数据的数据序号等于第一数据的数据序号,则判断第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则用第二数据更新所述第一数据,并从具有相同数据类别标识的实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断步骤。
5.根据权利要求3所述的方法,其特征在于,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断具体包括:
比较具有相同数据类别标识的实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
根据实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
比较第三数据的数据序号与第一数据的数据序号之间的大小关系,
如果第三数据的数据序号大于第一数据的序号,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据;
如果第三数据的数据序号等于第一数据的数据序号,则比较第三数据的时间戳信息是否大于第一数据的时间戳信息,若是,则用第三数据更新所述第一数据,将所述第三数据确定为数据接收节点可接受的实时数据。
6.一种实时数据的可靠接收装置,其特征在于,该装置包括:实时数据接收单元和实时数据接受单元,其中:
所述实时数据接收单元,用于接收数据源节点族内的数据源节点发送的实时数据包,所述数据源节点族内的至少两个数据源节点与数据接收节点间的链路处于连接状态,所述实时数据包具有数据类别标识;
所述实时数据接受单元,用于在数据接收节点接收到多个实时数据包时,对于多个实时数据包中具有相同的数据类别标识的实时数据包,接受具有相同数据类别标识的实时数据包中的一个实时数据包作为实时数据;对于多个实时数据包中具有不同数据类别标识的实时数据包,按照数据类别标识接受各自对应的实时数据包作为实时数据。
7.根据权利要求6所述的装置,其特征在于,所述实时数据包还具有数据序号信息,所述实时数据接受单元包括:判断子单元和确定子单元,其中:
所述判断子单元,用于对具有相同数据类别标识的实时数据包的数据序号信息进行判断;
所述确定子单元,用于将数据序号信息满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
8.根据权利要求7所述的装置,其特征在于,所述实时数据包还具有数据源节点发送数据包时产生的时间戳信息,所述判断子单元具体用于对具有相同数据类别标识的实时数据包的数据序号信息和时间戳信息进行判断,所述确定子单元具体用于将数据序号信息和时间戳信息同时满足预设条件的实时数据包确定为数据接收节点可接受的实时数据。
9.根据权利要求8所述的装置,其特征在于,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述判断子单元具体包括:第一读取子单元、数据包选取子单元、第一比较子单元、第二比较子单元和第一更新子单元,其中:
所述第一读取子单元,用于根据具有相同数据类别标识的实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
所述数据包选取子单元,用于从具有相同数据类别标识的实时数据包中选取一个实时数据包作为第二数据;
所述第一比较子单元,用于比较第二数据的数据序号与第一数据的数据序号之间的大小关系,在第二数据的数据序号大于第一数据的数据序号时,触发第一更新子单元,在第二数据的数据序号小于第一数据的数据序号时,触发数据包选取子单元从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断,在第二数据的数据序号等于第一数据的数据序号时,触发第二比较子单元;
所述第一更新子单元,用于用第二数据更新所述第一数据,并触发数据包选取子单元从多个实时数据包中选取下一个实时数据包作为第二数据进行数据序号信息的判断;
所述第二比较子单元,用于判断第二数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发第一更新子单元。
10.根据权利要求8所述的装置,其特征在于,所述预设条件为数据序号信息越大且时间戳信息越大的实时数据包将确定为数据接收节点可接受的实时数据,所述判断子单元具体包括:第三比较子单元、第二读取子单元、第四比较子单元、第二更新子单元和第五比较子单元,其中:
所述第三比较子单元,用于比较具有相同数据类别标识的实时数据包中数据序号信息和时间戳信息,以将数据序号最大或者数据序号最大且时间戳信息最大的实时数据包作为第三数据;
所述第二读取子单元,用于根据具有相同数据类别标识的实时数据包的数据类别标识读取数据接收节点本地已存储的具有相同数据类别标识的第一数据的数据序号信息和时间戳信息;
所述第四比较子单元,用于比较第三数据的数据序号与第一数据的数据序号之间的大小关系,在第三数据的数据序号大于第一数据的序号时,触发第二更新子单元,在第三数据的数据序号等于第一数据的数据序号时,触发第五比较子单元;
所述第二更新子单元,用于用第三数据更新所述第一数据,并触发确定子单元将所述第三数据确定为数据接收节点可接受的实时数据;
所述第五比较子单元,用于比较第三数据的时间戳信息是否大于第一数据的时间戳信息,若是,则触发第二更新子单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310103572.8A CN103152287B (zh) | 2013-03-27 | 2013-03-27 | 一种实时数据的可靠接收方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310103572.8A CN103152287B (zh) | 2013-03-27 | 2013-03-27 | 一种实时数据的可靠接收方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103152287A CN103152287A (zh) | 2013-06-12 |
CN103152287B true CN103152287B (zh) | 2016-05-18 |
Family
ID=48550157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310103572.8A Active CN103152287B (zh) | 2013-03-27 | 2013-03-27 | 一种实时数据的可靠接收方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103152287B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335362B (zh) * | 2014-05-28 | 2019-06-11 | 阿里巴巴集团控股有限公司 | 实时数据的处理方法及系统、即时处理系统 |
CN105262769A (zh) * | 2015-11-04 | 2016-01-20 | 宁波亿拍客网络科技有限公司 | 一种主辅配合的通信方法 |
CN107870946A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 实时数据动态连接方法和装置 |
CN107135661A (zh) * | 2016-12-26 | 2017-09-05 | 深圳前海达闼云端智能科技有限公司 | 数据处理方法、装置、系统及信息采集设备 |
CN107104760B (zh) * | 2017-04-13 | 2020-09-08 | 腾讯科技(深圳)有限公司 | 一种传输数据包的方法、客户端以及服务器 |
CN108989408B (zh) * | 2018-07-03 | 2020-12-29 | 安徽江淮汽车集团股份有限公司 | 一种车辆数据传输方法及系统 |
CN109587052B (zh) | 2019-01-30 | 2022-03-15 | 展讯通信(上海)有限公司 | 一种多链路数据传输方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102065015A (zh) * | 2010-12-29 | 2011-05-18 | 福建星网锐捷网络有限公司 | 一种数据传输方法、网络设备以及装置 |
-
2013
- 2013-03-27 CN CN201310103572.8A patent/CN103152287B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102065015A (zh) * | 2010-12-29 | 2011-05-18 | 福建星网锐捷网络有限公司 | 一种数据传输方法、网络设备以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103152287A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103152287B (zh) | 一种实时数据的可靠接收方法及装置 | |
US4912656A (en) | Adaptive link assignment for a dynamic communication network | |
CN102006184B (zh) | 堆叠链路管理方法、装置及网络设备 | |
CN100413290C (zh) | 设置边界网关协议路由选择通知功能的方法 | |
CN103795570B (zh) | 环形拓扑的堆叠交换机系统的单播报文恢复方法及装置 | |
CN109286685A (zh) | 可拓展子链的主链加并行多子链的系统架构 | |
CN110324254A (zh) | 利用子网上的网络接口控制器进行消息的传送 | |
CN109698788A (zh) | 流量转发方法和流量转发装置 | |
CN104243472A (zh) | 具有mac表溢出保护的网络 | |
CN106301952A (zh) | 一种sdn数据平面链路备份方法及装置 | |
CN102067532A (zh) | 分组片段的处理 | |
CN106470168A (zh) | 一种数据传输方法、使用该方法的交换机以及网络控制系统 | |
CN106789329B (zh) | 一种分布式的多层卫星中断容忍网络接触计划设计方法 | |
CN102119510A (zh) | 一种多路径网络 | |
CN104936156B (zh) | 短信发送方法和装置 | |
CN101084693B (zh) | 用于通信系统中策略实施的方法和系统 | |
CN104660457A (zh) | 网络元件及用于管理该网络元件的控制器 | |
CN106559246A (zh) | 集群的实现方法和服务器 | |
CN105337957A (zh) | 一种SDN网络DDoS和DLDoS分布式时空检测系统 | |
CN106559166A (zh) | 用于分布式处理系统中基于指纹的状态检测方法及设备 | |
CN105915467A (zh) | 一种面向软件定义的数据中心网络流量均衡方法及装置 | |
CN102301662B (zh) | 媒体访问控制mac地址保护方法和交换机 | |
CN104378186A (zh) | 一种网络冗余数据处理的方法、装置和系统 | |
CN106034038A (zh) | 防止多冲突堆叠的方法和装置 | |
CN104104596B (zh) | 一种irf分裂处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |