首页 / 数据分发方法和装置

数据分发方法和装置有效专利 发明

技术领域

[0001] 本发明涉及互联网领域,具体而言,涉及一种数据分发方法和装置。

相关背景技术

[0002] 随着互联网技术的发展和各种新型应用的不断出现,越来越多的大规模应用程序需要在互联网中的成千上万台机器之间进行大量的数据分发。现有的数据分发技术是通过内嵌在应用程序中的模块进行数据分发,在进行数据分发时,需要应用选择代理节点,这种数据分发方法对应用程序不友好,在网络出现波动或代理出现故障时,现有的数据分发无法保证分发效率。另外,上述方法适用于点对点的数据分发,对于一对多或者多对多的应用程序的数据分发效率较低。
[0003] 针对现有技术中数据分发效率低的问题,目前尚未提出有效的解决方案。

具体实施方式

[0037] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0038] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0039] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0040] 图1是根据本发明实施例的数据分发系统的结构图。如图所示,该数据分发系统包括边缘节点、核心节点和管理节点。需要说明的是,图中的边缘节点可以是本发明实施例中的数据分发节点,核心节点可以是本发明实施例中的第一核心节点、第二核心节点等,下文提到的数据分发节点都可以对应到图中的边缘节点,不再赘述。
[0041] 边缘节点可以是部署在应用系统中的各台机器上的数据分发程序。每个边缘节点是对等的,都可以是发送数据者,也可以是接收数据者。边缘节点的主要功能是为应用程序提供通用的数据收发接口,并就近连接到某个核心节点上接入数据分发系统,通过动态选择传输路径、数据处理等策略实现应用寻址与数据传输加速。
[0042] 核心节点可以是由多台分布于各个运营商、各个地理区域的服务器组成,每台核心节点服务器可能包括一个或多个网络出口,为整个数据分发系统中的各个节点提供良好的网络覆盖。核心节点的主要功能是提供应用程序ID查询来实现应用寻址,同时通过核心节点的网络覆盖能力对数据进行转发来实现传输加速。
[0043] 管理节点的作用是管理整个数据分发系统,包括核心节点和各个应用的边缘节点。管理节点的主要功能是应用程序命名空间管理、配置管理、监控报警等,保证数据分发系统的正常运维。但是在本数据分发系统中,该管理节点在实际数据转发中不承担数据转发的责任,因此,在没有管理节点的情况下,本数据分发系统也可以在保证分发效率的情况下进行数据的分发。
[0044] 图2是根据本发明实施例的数据分发系统数据流图。如图所示,该数据分发系统可以在边缘节点与边缘节点之间进行数据分发,可以在边缘节点与核心节点之间进行数据分发,还可以在核心节点与核心节点之间进行数据分发,同时,在有管理节点的情况下,还可以实现管理节点与边缘节点或者核心节点的通信。以下结合图2对本发明实施例的数据分发系统的数据流交互进行说明。
[0045] 图中实线为程序数据,虚线为路由数据,点线为管理数据,其中,路由数据用于表示各个节点的位置信息。
[0046] 图2中实线1表示应用程序将应用数据交给本地的边缘节点进行发送,或从本地边缘节点上获取应用数据。
[0047] 图2中点线2表示边缘节点从本机配置或管理节点获取本机的应用程序ID,并向核心节点注册应用程序ID或从核心节点获取应用程序ID。
[0048] 图2中虚线3表示核心节点之间相互同步各个边缘节点的应用路由。
[0049] 图2中虚线4表示边缘节点从核心节点查询应用路由,并对目标应用程序进行路由探测,选择最佳的传输路径。
[0050] 图2中实线5表示边缘节点根据路由选择结果,将应用数据转发到核心节点或其它的边缘节点,或者接收核心节点发来的应用数。
[0051] 图2中实线6表示核心节点收到应用数据后,将数据转发到其它核心节点或目标边缘节点。
[0052] 图2中点线7表示边缘节点将本地的统计数据发送到管理节点进行汇总。
[0053] 图2中点线8表示管理节点将应用ID、配置等信息分发到核心节点和边缘节点。
[0054] 在该数据分发系统中,边缘节点提供通用的数据收发接口。应用程序只需与相邻的边缘节点进行交互,就可以可靠、快速的将数据发送到一个或多个应用目标,或者从一个或多个应用程序目标上接收数据。边缘节点负责选择最佳传输方式与传输路径,无需应用程序了解网络拓扑和传输细节。
[0055] 应用程序可以通过自定义的层次化的应用ID来描述一个或多个应用程序目标,如app1.node1.shanghai.huadong.dx,这个ID描述的是电信华东上海节点1的应用1。边缘节点向核心节点注册应用程序ID,核心节点维护整个应用命名空间,边缘节点能够根据应用程序ID寻找到唯一的应用程序。边缘节点与核心节点进行应用路由交互,实现精确匹配或按规则匹配的应用寻址,如app1.*表示目标是所有节点上的应用1,*.huadong.dx表示目标是电信华东所有节点的所有应用。
[0056] 核心节点与边缘节点都具有数据转发功能。针对不同的数据和发送目标,可以动态实时选择最佳的传输速度、传输协议和下一跳节点,通过核心节点的网络覆盖能力将数据按最佳路径可靠、快速的传输到目标节点上,实现对跨运营商、跨地理区域的数据分发加速。当网络波动或某个核心节点出现故障时,核心节点或边缘节点可以智能作出路由切换,保证数据分发的效率和稳定性。
[0057] 当发送目标是多个的时候,核心节点或边缘节点可以根据文件大小、网络带宽、目标个数、目标相近度等因素,智能的将多个目标合并转发到下一跳节点,由该节点继续进行分发,从而有效的减小单机的网络带宽消耗并提高传输效率。
[0058] 本发明实施例提供了一种数据分发方法。
[0059] 图3是根据本发明第一实施例的数据分发方法的流程图。如图所示,该方法包括如下步骤:
[0060] 步骤S101,数据分发节点接收第一应用程序向第二应用程序的数据分发请求。
[0061] 数据分发节点接收第一应用程序向第二应用程序的数据分发请求,数据分发请求可以是向数据分发节点发送的第二应用程序ID,数据分发节点通过接收第一应用程序发送的第二应用程序ID接收第一应用程序向第二应用程序的数据分发请求。其中,第二应用程序ID可以根据分发程序和网络的需要进行自定义,可以是表征应用逻辑的ID,也可以使用精确或模糊的ID描述应用程序,这里所说的应用程序ID可以与应用程序的实际IP地址无关,通过这种命名方法可以使得应用程序ID的描述更加灵活、简单。
[0062] 这里所说的数据分发节点可以是一个或多个数据分发节点,这些数据分发节点还可以包括边缘节点、核心节点和管理节点。其中,边缘节点可以是直接与应用程序进行数据收发的节点,核心节点可以是直接与边缘节点和管理节点进行数据收发的节点,管理节点可以管理网络中的所有程序的ID信息。
[0063] 需要说明的是,这里所说的边缘节点与核心节点都是数据分发节点,都可以进行数据的分发,只是为了描述方便而引进的,不构成对本发明的不当限定。
[0064] 步骤S102,数据分发节点根据数据分发请求确定第一应用程序和第二应用程序之间的数据分发路径。
[0065] 数据分发节点接收到数据分发请求之后,能够确定第二应用程序ID,第二应用程序ID能够标准第二应用程序在网络中的位置。数据分发节点能够根据第二应用程序和第一应用程序的位置,计算第一应用程序和第二应用程序之间的数据分发路径。需要说明的是,这里所说的第一、第二用于区分不同的应用程序,不用于限定应用程序的先后顺序和所处网络的位置。
[0066] 优选地,数据分发节点在接收到数据分发请求之后,可以根据当前的网络状或者数据分发节点的状态动态的在数据分发系统中选择最佳的传输路径。通过动态的选择第一应用程序和第二应用程序之间的数据分发路径,可以避免网络状态不好或者数据分发节点发生故障时降低分发效率,能够保证可靠、快速的将第一应用程序数据分发至第二应用程序。
[0067] 确定的分发路径可以通过网络中的两个数据分发节点分发第一应用程序的数据,也可以通过网络中的三个以上数据分发节点分发第一应用程序的数据。
[0068] 步骤S103,按照数据分发路径分发第一应用程序向第二应用程序分发的数据。
[0069] 在确定数据分发路径之后,按照确定的数据分发路径分发第一应用程序向第二应用程序分发的数据。按照确定的发送路径分发第一应用程序的数据可以是经由相邻网络的两个数据分发节点分发第一应用程序的数据,也可以是经由相邻网络或相隔网络中的三个以上数据分发节点分发第一应用程序的数据。
[0070] 图4是根据本发明第二实施例的数据分发方法的流程图。如图所示,该方法包括如下步骤:
[0071] 步骤S201,数据分发节点接收第一应用程序向第二应用程序的数据分发请求。数据分发节点接收第一应用程序向第二应用程序的数据分发请求,数据分发请求可以是向数据分发节点发送的第二应用程序ID,数据分发节点通过接收第一应用程序发送的第二应用程序ID接收第一应用程序向第二应用程序的数据分发请求。
[0072] 步骤S202,根据数据分发请求确定第一应用程序和第二应用程序在网络中的位置。第一应用程序可以将第二应用程序ID发送至数据分发节点,数据分发节点根据第二应用程序ID确定第二应用程序的位置。其中,第一应用程序与第一数据分发节点相邻,通过确定第一应用程序和第二应用程序的位置确定第一应用程序和第二应用程序处于相邻的网络或者相隔的网络,能够通过该位置进一步确定第一应用程序和第二应用程序的数据分发路径。
[0073] 步骤S203,根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径。第一应用程序和第二应用程序可以处于相邻网络或相隔网络,数据分发节点可以根据第一应用程序和第二应用程序在网络中的位置,确定第一应用程序和第二应用程序之间的数据分发路径。例如:在第一应用程序和第二应用程序处于相邻网络时,经由两个数据分发节点进行数据分发,这两个数据分发节点可以是两个边缘节点;在第一应用程序和第二应用程序处于相隔的网络时,经由三个或三个以上数据分发节点进行数据分发,三个或三个以上数据分发节点可以包括两个边缘节点和一个核心节点,其中,核心节点用于接收第一边缘节点分发的数据,并将该数据转发至第二边缘节点。
[0074] 步骤S204,按照数据分发路径分发第一应用程序向第二应用程序分发的数据。在确定了数据分发路径之后,按照数据分发路径经由两个或者三个及三个以上数据分发节点发送数据。
[0075] 图5是根据本发明第一实施例的确定分发路径的流程图。如图所示,该流程图示出了根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径,图5所示实施例的确定分发路径的方法可以作为图4所示数据分发方法的优选实施方式,该确定分发路径的方法包括如下步骤:
[0076] 步骤S301,根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻网络内。数据分发节点在接收第一应用程序的分发数据请求的时候已经获取第一应用程序在网络的位置,在获取第二应用程序ID之后,能够确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0077] 步骤S302,如果第一应用程序和第二应用程序处于相邻网络内,经由第一数据分发节点向第二数据分发节点分发第一应用程序向第二应用程序发送的数据,其中,第一数据分发节点与第一应用程序在网络中的位置相邻,第二数据分发节点与第二应用程序在网络中的位置相邻。如图6所示,第一数据分发节点可以是图中的边缘节点P1,第二数据分发节点可以是图中的边缘节点P2,第一应用程序(图中未示出)与第一数据分发节点P1相邻,在第一应用程序将需要分发的数据发送到第一数据分发节点P1时,第一数据分发节点P1探测其周围的数据分发节点,探测到第二数据分发节点P2与第二应用程序相邻,确定将需要分发的数据分发由第一数据分发节点P1分发到第二数据分发节点P2。由于P1和P2不用于指定某个特定的数据分发节点,因此,上述过程也可以是由第二分发节点P2分发数据至第一数据分发节点P1,相应的将第二应用程序的数据分发至第一应用程序。
[0078] 图7是根据本发明第二实施例的确定分发路径的流程图。如图所示,该流程图示出了根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径,图7所示实施例的确定分发路径的方法可以作为图4所示数据分发方法的优选实施方式,该确定分发路径的方法包括如下步骤:
[0079] 步骤S401,根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内。数据分发节点在接收第一应用程序的分发数据请求的时候已经知晓第一应用程序在网络的位置,在获取第二应用程序ID之后,能够确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0080] 步骤S402,如果第一应用程序和第二应用程序处于相隔网络内,利用第一数据分发节点发送第一应用程序的数据至第一核心节点。
[0081] 在确定第一应用程序和第二应用程序处于相隔网络内之后,通过第一核心节点对数据进行分发。如图8所示,第一数据分发节点可以是边缘节点P1,第一数据分发节点探测周围的数据分发节点,可以探测到第一核心节点C1和第二数据分发节点P2,其中,第二数据分发节点P2为数据分发的目标节点。第一数据分发节点P1将需要分发的数据分发至第一核心节点C1。
[0082] 步骤S403,利用第一核心节点将第一应用程序的数据发送至第二数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第一核心节点用于在第一数据分发节点和第二数据分发节点之间转发由第一应用程序向第二应用程序分发的数据。
[0083] 第一核心节点探测到第二数据分发节点与第二应用程序相邻,将需要分发的数据转发至第二数据分发节点,通过第二数据分发节点分发数据至第二应用程序。本实施例中的第一数据分发节点可以是图8所示实施例中的边缘节点P1,第二数据分发节点可以是图8所示实施例中的边缘节点P2,第一核心节点可以是图8所示实施例中的核心节点C1。
[0084] 图9是根据本发明第三实施例的确定分发路径的流程图。如图所示,该流程图示出了根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径,图9所示实施例的确定分发路径的方法可以作为图4所示数据分发方法的优选实施方式,该确定分发路径的方法包括如下步骤:
[0085] 步骤S501,根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内。数据分发节点在接收第一应用程序的分发数据请求的时候已经获取第一应用程序在网络的位置,在获取第二应用程序ID之后,能够确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0086] 步骤S502,如果第一应用程序和第二应用程序在网络中的位置处于相隔的网络内,利用第一数据分发节点发送第一应用程序的数据至第一核心节点。
[0087] 如果第一应用程序和第二应用程序在网络中的位置处于相隔的网络内,利用第一数据分发节点、第二数据分发节点和两个核心节点分发第一应用程序向第二应用程序分发的数据。在进行数据分发之前,第一数据分发节点和第二数据分发节点可以先将各自相邻的应用程序ID发送至相邻的核心节点,例如,第一数据分发节点将第一应用程序ID发送至与第一数据分发节点相邻的第一核心节点,第二数据分发节点将第二应用程序ID发送至与第二数据分发节点相邻的第二核心节点。第一核心节点可以将第一应用程序ID同步至网络中的其他核心节点,同理,第二核心节点也可以将第二应用程序ID同步至网络中的其他核心节点。
[0088] 第一数据分发节点接收第一应用程序向第二应用程序分发数据的分发请求,第一数据分发节点将需要分发的数据发送至第一核心节点。如图10所示,第一数据分发节点可以是图10中的边缘节点P1,第一核心节点可以是图10中的核心节点C1。边缘节点P1探测到核心节点C1,核心节点C1获取到第二应用程序ID,从而判断出下一步的发送节点为核心节点C2,图中的核心节点C2可以是本实施例中的第二核心节点,第二核心节点与第二数据分发节点相邻。
[0089] 步骤S503,第一核心节点将第一应用程序的数据发送至第二核心节点。在第一核心节点探测到下一步的发送目标为第二核心节点之后,将第一应用程序的数据发送至第二核心节点。如图10所示,核心节点C1接收到边缘节点P1发送的第一应用程序的数据之后,将第一应用程序数据发送至核心节点C2。
[0090] 步骤S504,第二核心节点将第一应用程序的数据发送至第二数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第一核心节点与第一数据分发节点相邻,第二核心节点与第二数据分发节点相邻。如图10所示,核心节点C2将数据发送至边缘节点P2,边缘节点P2是本实施例中的第二数据分发节点,边缘节点P2与第二应用程序相邻。
[0091] 通过上述步骤S501至步骤S504,可以通过首先将应用程序ID同步到网络中,在数据分发节点进行数据分发的时候,可以根据应用程序ID寻址,选择分发路径并进行数据分发。
[0092] 图11是根据本发明第四实施例的确定分发路径的流程图。该流程图示出了根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径,图11所示实施例的确定分发路径的方法可以作为图4所示数据分发方法的优选实施方式,该确定分发路径的方法包括如下步骤:
[0093] 步骤S601,如果第一应用程序向第二应用程序和第三应用程序发送数据,根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内,根据第一应用程序和第三应用程序在网络中的位置判断第一应用程序和第三应用程序是否处于相邻的网络内。如果第一应用程序向第二应用程序和第三应用程序发送数据,数据分发节点能够探测第一应用程序、第二应用程序和第三应用程序的位置,根据第一应用程序和第二应用程序的位置判断第一应用程序和第二应用程序是否处于相邻的网络,根据第一应用程序和第三应用程序的位置判断第一应用程序和第三应用程序是否处于相邻的网络。
[0094] 步骤S602,如果第一应用程序、第二应用程序和第三应用程序处于相互相隔的网络内,利用第一数据分发节点发送第一应用程序的数据至第一核心节点。
[0095] 第一数据分发节点发送第一应用程序的数据至第一核心节点。如图12所示,第一数据分发节点可以是图12中的边缘节点P1,第二应用程序可以是图中边缘节点P2,第三应用程序可以是图中边缘节点P3或者边缘节点P4,边缘节点P2和边缘节点P3分别与第二应用程序和第三应用程序相邻。图6中的边缘节点P4也可以与第三应用程序相邻。其中,边缘节点P4和边缘节点P5之间也可以直接进行数据的收发。
[0096] 步骤S603,利用第一核心节点将第一应用程序的数据发送至第二核心节点和第三核心节点。该实施例的第一核心节点可以是图12所示的核心节点C1,第二核心节点可以是图12所示的核心节点C2,第三核心节点可以是图12所示的核心节点C3。核心节点C1将第一应用程序数据分发至核心节点C2和核心节点C3,核心节点C2将第一应用程序数据发送至边缘节点P2,核心节点C3将第一应用程序数据发送至边缘节点P3。每个核心节点分发第一应用程序数据与其他核心节点分发第一应用程序数据无关,各个核心节点的数据分发都是独立的,边缘节点的数据分发与核心节点的数据分发也是独立的。
[0097] 在第一数据分发节点将第一应用程序数据分发至第一核心节点之后,由第一核心节点继续分发该第一应用程序数据,同时,第一数据分发节点可以继续向第一核心节点发送第一应用程序的其他数据,也就是第一数据分发节点分发数据与核心节点分发数据是相互独立的过程。
[0098] 由于每个节点的数据分发过程都是独立的,不影响其他数据分发节点或者核心节点的数据分发效率,从而,在进行数据转发的过程中。数据分发节点可以动态选择分发路径,并且,在进行数据分发过程中各个节点可以并行分发数据,相互不影响分发效率,从而提高了整个分发系统的分发效率及稳定性。
[0099] 步骤S604,第二核心节点将第一应用程序的数据发送至第二数据分发节点,第三核心节点将第一应用程序的数据发送至第三数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第三数据分发节点与第三应用程序相邻,第一核心节点与第一数据分发节点相邻,第二核心节点与第二数据分发节点相邻,第三核心节点与第三数据分发节点相邻。
[0100] 第二核心节点可以是图12中核心节点C2,第二数据分发节点可以是图中的边缘节点P2,第三数据分发节点可以是图中的边缘节点P3或者P4。核心节点C2将第一应用程序数据发送至边缘节点P2,核心节点C3将第一应用程序数据发送至边缘节点P3。图12还示出了核心节点C3将第一应用程序数据发送至边缘节点P4,边缘节点P4可以将第一应用程序数据发送至与其相邻的应用程序,同时,边缘节点P4还可以将第一应用程序数据直接转发给边缘节点P5。
[0101] 图中的边缘节点P1与第一应用程序相邻,边缘节点P2与第二应用程序相邻,边缘节点P3与第三应用程序数据,核心节点C1与边缘节点P1相邻,核心节点C2与边缘节点P2相邻,核心节点C3与边缘节点P3相邻。
[0102] 从图12中可以看出,每个节点在选择下一个分发节点的时候,以第一应用程序和第二应用程序的位置为依据,选择与每个节点最近的节点进行数据分发。在进行路径选择的时候可以考虑当前的网络状况,在每个节点都可以进行路径的选择,从而能够在某个节点不能传输数据的时候选择其他节点进行数据分发,保证了数据分发效率。
[0103] 需要说明的是,可以在本发明的一个实施例中使用上述数据分发方法中的一种或多种,将多种分发方法相结合,能够保证数据分发系统的分发稳定性,提高数据分发系统的分发效率。
[0104] 本发明实施例还提供了一种数据分发装置。
[0105] 本发明实施例的数据分发方法可以通过本发明实施例所提供的数据统计装置来执行,本发明实施例的数据分发装置也可以用于执行本发明实施例所提供的数据分发方法。
[0106] 图13是根据本发明第一实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、选择单元20和分发单元30。
[0107] 接收单元10用于接收第一应用程序向第二应用程序的数据分发请求。接收单元10接收第一应用程序向第二应用程序的数据分发请求,数据分发请求可以是向数据分发节点发送的第二应用程序ID,接收单元10通过接收第一应用程序发送的第二应用程序ID接收第一应用程序向第二应用程序的数据分发请求。其中,第二应用程序ID可以根据分发程序和网络的需要进行自定义,可以是表征应用逻辑的ID,也可以使用精确或模糊的ID描述应用程序,这里所说的应用程序ID可以与应用程序的实际IP地址无关,通过这种命名方法可以使得应用程序ID的描述更加灵活、简单。
[0108] 选择单元20用于根据数据分发请求确定第一应用程序和第二应用程序之间的数据分发路径。
[0109] 接收单元10接收到数据分发请求之后,能够确定第二应用程序ID,第二应用程序ID能够标准第二应用程序在网络中的位置。选择单元20能够根据第二应用程序和第一应用程序的位置,计算第一应用程序和第二应用程序之间的数据分发路径。需要说明的是,这里所说的第一、第二用于区分不同的应用程序,不用于限定应用程序的先后顺序和所处网络的位置信息。
[0110] 优选地,接收单元10在接收到数据分发请求之后,可以根据当前的网络状或者数据分发节点的状态动态的在数据分发系统中选择最佳的传输路径。通过动态的选择第一应用程序和第二应用程序之间的数据分发路径,可以避免网络状态不好或者数据分发节点发生故障时降低分发效率,能够保证可靠、快速的将第一应用程序数据分发至第二应用程序。
[0111] 确定的分发路径可以通过网络中的两个数据分发节点分发第一应用程序的数据,也可以通过网络中的三个以上数据分发节点分发第一应用程序的数据。
[0112] 分发单元30用于按照数据分发路径分发第一应用程序向第二应用程序分发的数据。
[0113] 在选择单元20确定数据分发路径之后,按照确定的数据分发路径分发第一应用程序向第二应用程序分发的数据。按照确定的发送路径分发第一应用程序的数据可以是经由相邻网络中两个数据分发节点分发第一应用程序的数据,也可以是经由相邻网络或相隔网络中的三个以上数据分发节点分发第一应用程序的数据。
[0114] 图14是根据本发明第二实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、选择单元20和分发单元30,其中,选择单元20还包括定位模块201和分发模块202。其中,接收单元10和分发单元30与图13所示的接收单元10和分发单元30功能相同,在此不做赘述。
[0115] 定位模块201用于根据数据分发请求确定第一应用程序和第二应用程序在网络中的位置。第一应用程序可以将第二应用程序ID发送至数据分发节点,数据分发节点根据第二应用程序ID确定第二应用程序的位置。其中,第一应用程序与数据分发节点相邻,通过确定第一应用程序和第二应用程序的位置确定第一应用程序和第二应用程序处于相邻的网络或者相隔的网络,能够通过该位置进一步确定第一应用程序和第二应用程序的数据分发路径。
[0116] 分发模块202用于根据第一应用程序和第二应用程序在网络中的位置确定第一应用程序和第二应用程序之间的数据分发路径。第一应用程序和第二应用程序可以处于同一网络或不同网络,可以处于相邻网络或相隔网络,数据分发节点可以根据第一应用程序和第二应用程序在网络中的位置,确定第一应用程序和第二应用程序之间的数据分发路径。例如:在第一应用程序和第二应用程序处于相邻网络时,经由两个数据分发节点进行数据分发,这两个数据分发节点可以是两个边缘节点;在第一应用程序和第二应用程序处于相隔的网络时,经由三个或三个以上数据分发节点进行数据分发,三个或三个以上数据分发节点可以包括两个边缘节点和一个核心节点,其中,核心节点用于接收第一边缘节点分发的数据,并将该数据转发至第二边缘节点。
[0117] 图15是根据本发明第三实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、分发单元30、定位模块201和分发模块202中的判断子模块2020和第一分发子模块2021。其中,图中的接收单元10、分发单元30和定位模块201与图14所示的接收单元10、分发单元30和定位模块201功能相同,在此不做赘述。
[0118] 判断子模块2020用于根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻网络内。接收单元10在接收第一应用程序的分发数据请求的时候已经获取第一应用程序在网络的位置,在获取第二应用程序ID之后,判断子模块2020能够根据应用程序ID确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0119] 第一分发子模块2021用于在第一应用程序和第二应用程序处于相邻网络内时,经由第一数据分发节点向第二数据分发节点分发第一应用程序向第二应用程序发送的数据,其中,第一数据分发节点与第一应用程序在网络中的位置相邻,第二数据分发节点与第二应用程序在网络中的位置相邻。在第一应用程序和第二应用程序处于相邻网络时,第一分发模块2021经由第一数据分发节点、第二数据分发节点向第二应用程序发送第一应用程序数据。
[0120] 图16是根据本发明第四实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、分发单元30、定位模块201和分发模块202中的判断子模块2021和第一分发子模块2022。其中,图中的接收单元10、分发单元30和定位模块201与图14所示的接收单元10、分发单元30和定位模块201功能相同,在此不做赘述。
[0121] 判断子模块2020用于根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内。数据分发节点在接收第一应用程序的分发数据请求的时候已经获取第一应用程序在网络的位置,在获取第二应用程序ID之后,判断子模块2020能够根据应用程序ID确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0122] 第二分发子模块2022用于在第一应用程序和第二应用程序处于相隔网络内时,利用第一数据分发节点发送第一应用程序的数据至第一核心节点,利用第一核心节点将第一应用程序的数据发送至第二数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第一核心节点用于在第一数据分发节点和第二数据分发节点之间转发由第一应用程序向第二应用程序分发的数据。在确定第一应用程序和第二应用程序处于相隔网络内之后,第二分发子模块2022利用第一数据分发节点发送第一应用程序的数据至第一核心节点,利用第一核心节点将第一应用程序的数据发送至第二数据分发节点。
[0123] 第一数据分发节点可以是图8中边缘节点P1,第一数据分发节点探测周围的数据分发节点,可以探测到第一核心节点C1和第二数据分发节点P2,其中,第二数据分发节点P2为数据分发的目标节点。第一数据分发节点P1将需要分发的数据分发至第一核心节点C1。
[0124] 第一核心节点探测到第二数据分发节点与第二应用程序相邻,将需要分发的数据转发至第二数据分发节点,通过第二数据分发节点分发数据至第二应用程序。本实施例中的第一数据分发节点可以是图8所示实施例中的边缘节点P1,第二数据分发节点可以是图8所示实施例中的边缘节点P2,第一核心节点可以是图8所示实施例中的核心节点C1。
[0125] 图17是根据本发明第五实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、分发单元30、定位模块201和分发模块202中的判断子模块2020和第三分发子模块2023。其中,图中的接收单元10、分发单元30和定位模块201与图14所示的接收单元10、分发单元30和定位模块201功能相同,在此不做赘述。
[0126] 判断子模块2020用于根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内。数据分发节点在接收第一应用程序的分发数据请求的时候已经获取第一应用程序在网络的位置,在获取第二应用程序ID之后,判断子模块2020能够根据应用程序ID确定第一应用程序和第二应用程序在网络中处于相邻网络或者相隔网络。
[0127] 第三分发子模块2023用于在第一应用程序和第二应用程序在网络中的位置处于相隔的网络内时,利用第一数据分发节点发送第一应用程序的数据至第一核心节点,利用第一核心节点将第一应用程序的数据发送至第二核心节点,利用第二核心节点将第一应用程序的数据发送至第二数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第一核心节点与第一数据分发节点相邻,第二核心节点与第二数据分发节点相邻。
[0128] 如果第一应用程序和第二应用程序在网络中的位置处于相隔的网络内,利用第一数据分发节点、第二数据分发节点和两个核心节点分发第一应用程序向第二应用程序分发的数据。在进行数据分发之前,第一数据分发节点和第二数据分发节点可以先将各自相邻的应用程序ID发送至相邻的核心节点,例如,第一数据分发节点将第一应用程序ID发送至与第一数据分发节点相邻的第一核心节点,第二数据分发节点将第二应用程序ID发送至与第二数据分发节点相邻的第二核心节点。第一核心节点可以将第一应用程序ID同步至网络中的其他核心节点,同理,第二核心节点也可以将第二应用程序ID同步至网络中的其他核心节点。
[0129] 第一数据分发节点接收第一应用程序向第二应用程序分发数据的分发请求,第一数据分发节点将需要分发的数据发送至第一核心节点。如图10所示,第一数据分发节点可以是图10中的边缘节点P1,第一核心节点可以是图10中的核心节点C1。边缘节点P1探测到核心节点C1,核心节点C1获取到第二应用程序ID,从而判断出下一步的发送节点为核心节点C2,图中的核心节点C2可以是本实施例中的第二核心节点,第二核心节点与第二数据分发节点相邻。
[0130] 在第一核心节点探测到下一步的发送目标为第二核心节点之后,将第一应用程序的数据发送至第二核心节点。如图10所示,核心节点C1接收到边缘节点P1发送的第一应用程序的数据之后,将第一应用程序数据发送至核心节点C2。核心节点C2将数据发送至边缘节点P2,边缘节点P2是本实施例中的第二数据分发节点,边缘节点P2与第二应用程序相邻。
[0131] 图18是根据本发明第六实施例的数据分发装置的示意图。如图所示,该数据分发装置包括接收单元10、分发单元30、定位模块201和分发模块202中的判断子模块2020和第一分发子模块2024。其中,图中的接收单元10、分发单元30和定位模块201与图14所示的接收单元10、分发单元30和定位模块201功能相同,在此不做赘述。
[0132] 判断子模块2020用于在第一应用程序向第二应用程序和第三应用程序发送数据时,根据第一应用程序和第二应用程序在网络中的位置判断第一应用程序和第二应用程序是否处于相邻的网络内,根据第一应用程序和第三应用程序在网络中的位置判断第一应用程序和第三应用程序是否处于相邻的网络内。
[0133] 如果第一应用程序向第二应用程序和第三应用程序发送数据,数据分发节点能够探测第一应用程序、第二应用程序和第三应用程序的位置,根据第一应用程序和第二应用程序的位置判断第一应用程序和第二应用程序是否处于相邻的网络,根据第一应用程序和第三应用程序的位置判断第一应用程序和第三应用程序是否处于相邻的网络。
[0134] 第四分发子模块2024用于在第一应用程序、第二应用程序和第三应用程序处于相互相隔的网络内时,利用第一数据分发节点发送第一应用程序的数据至第一核心节点,第一核心节点将第一应用程序的数据发送至第二核心节点和第三核心节点,第二核心节点将第一应用程序的数据发送至第二数据分发节点,第三核心节点将第一应用程序的数据发送至第三数据分发节点,其中,第一数据分发节点与第一应用程序相邻,第二数据分发节点与第二应用程序相邻,第三数据分发节点与第三应用程序相邻,第一核心节点与第一数据分发节点相邻,第二核心节点与第二数据分发节点相邻,第三核心节点与第三数据分发节点相邻。
[0135] 第一数据分发节点发送第一应用程序的数据至第一核心节点。如图12所示,第一数据分发节点可以是图12中的边缘节点P1,第二应用程序可以是图中边缘节点P2,第三应用程序可以是图中边缘节点P3或者边缘节点P4,边缘节点P2和边缘节点P3分别与第二应用程序和第三应用程序相邻。图6中的边缘节点P4也可以与第三应用程序相邻。其中,边缘节点P4和边缘节点P5之间也可以直接进行数据的收发。
[0136] 该实施例的第一核心节点可以是图12所示的核心节点C1,第二核心节点可以是图12所示的核心节点C2,第三核心节点可以是图12所示的核心节点C3。核心节点C1将第一应用程序数据分发至核心节点C2和核心节点C3,核心节点C2将第一应用程序数据发送至边缘节点P2,核心节点C3将第一应用程序数据发送至边缘节点P3。每个核心节点分发第一应用程序数据与其他核心节点分发第一应用程序数据无关,各个核心节点的数据分发都是独立的,边缘节点的数据分发与核心节点的数据分发也是独立的。
[0137] 第二核心节点可以是图12中核心节点C2,第二数据分发节点可以是图中的边缘节点P2,第三数据分发节点可以是图中的边缘节点P3或者P4。核心节点C2将第一应用程序数据发送至边缘节点P2,核心节点C3将第一应用程序数据发送至边缘节点P3。图12还示出了核心节点C3将第一应用程序数据发送至边缘节点P4,边缘节点P4可以将第一应用程序数据发送至与其相邻的应用程序,同时,边缘节点P4还可以将第一应用程序数据直接转发给边缘节点P5。
[0138] 图中的边缘节点P1与第一应用程序相邻,边缘节点P2与第二应用程序相邻,边缘节点P3与第三应用程序数据,核心节点C1与边缘节点P1相邻,核心节点C2与边缘节点P2相邻,核心节点C3与边缘节点P3相邻。
[0139] 本发明实施例还提供了一种计算机存储介质。该计算机存储介质可存储有程序,该程序用于执行上述的数据分发方法中的部分或全部步骤。
[0140] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0141] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0142] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0143] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0144] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0145] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0146] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页