P2P传输的控制方法及P2P节点与流程

文档序号:19248345发布日期:2019-11-27 19:53阅读:365来源:国知局
P2P传输的控制方法及P2P节点与流程
本发明涉及流媒体
技术领域
,尤其涉及一种p2p传输的控制方法及p2p节点。
背景技术
:基于cdn(contentdeliverynetwork,内容分发网络)+p2p(peer-to-peer,点对点)的直播系统是将cdn与p2p结合起来,其中,p2p节点之间通过订阅建立p2p传输链路,形成如图1所示的树状结构,cdn边缘节点通常只与p2p传输链路中的p2p根节点连接。在如图1所示的树状结构中,同一条订阅路径上,每个p2p节点具有各自的层级数,即,自p2p根节点开始,每增加订阅一个p2p节点,则新订阅的p2p节点的层级数顺次增加。需要说明的是,所述p2p根节点被其它节点订阅了数据后,不再是根节点,而是父节点。向p2p父节点请求订阅的节点,成为p2p子节点。在基于cdn+p2p的直播系统中,通常情况下,每个子节点都通过其父节点获取直播数据,以图1所示的订阅树结构为例,当d节点要获取直播数据时,可以向其父节点b发送直播数据获取请求,如果b节点存储有该直播数据,则b节点将直播数据发送给d节点;如果b节点没有存储该直播数据,则b节点也向其父节点a发送直播数据获取请求,并将从a节点获取的直播数据发送给节点d。在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:当p2p子节点的层级数较高时,如果其父节点没有所需的直播数据,则需要不断向上级父节点获取直播数据;层数越多,接收数据的延时越长,影响节点及时获取数据并分享,因此,导致直播数据的传输效率较低。技术实现要素:为了解决现有技术的问题,本发明实施例提供了一种p2p传输的控制方法及p2p节点。所述技术方案如下:第一方面,提供了一种p2p传输的控制方法,所述方法适用于数据节点,包括:在接收到订阅请求后,查询所述数据节点的层级数和网络延时,并根据所述网络延时,确定所述数据节点的层级数阈值;如果所述层级数小于所述层级数阈值,则根据所述订阅请求反馈响应信息;如果所述层级数大于等于所述层级数阈值,则根据所述订阅请求反馈拒绝订阅信息。进一步的,在接收到订阅请求之前,所述方法还包括:根据所述数据节点的订阅路径节点集合信息,确定所述数据节点的层级数。这样可以在接收到订阅请求后,直接获取数据节点的层级数,加快订阅过程。进一步的,在根据所述订阅请求反馈响应信息之前,所述方法还包括:获取所述订阅请求中包含的订阅节点的节点id;根据所述订阅节点的节点id,更新所述数据节点的节点信息;根据所述数据节点更新后的节点信息,更新所述数据节点的订阅路径节点集合信息。进一步的,所述方法还包括:根据所述数据节点更新后的节点信息,确定所述数据节点的父节点;将所述数据节点更新后的节点信息发送给所述数据节点的所述父节点,以使所述数据节点的所述父节点更新所述父节点的订阅路径节点集合信息。进一步的,所述方法还包括:接收所述订阅节点更新后的订阅路径节点集合信息;根据所述订阅节点更新后的订阅路径节点集合信息,更新所述数据节点的订阅路径节点集合信息;将所述订阅节点更新后的订阅路径节点集合信息发送给所述数据节点的所述父节点,以使所述数据节点的所述父节点更新所述父节点的订阅路径节点集合信息。这样可以将订阅节点及其子节点的节点信息补充到数据节点及其父节点的订阅路径节点集合信息中,使得数据节点及其父节点的订阅路径节点集合信息中包含经过该条订阅路径的所有节点的节点信息。进一步的,所述响应信息中包含所述数据节点的节点id和所述数据节点更新后的订阅路径节点集合信息。这样,订阅节点可以根据响应信息更新订阅节点的节点信息和订阅路径节点集合信息,使得订阅节点可以正确的确定自身的层级数。第二方面,提供了一种p2p传输的控制方法,所述方法适用于订阅节点,包括:发送订阅请求,并接收所述订阅请求对应的响应信息,所述响应信息中包含数据节点的节点id和数据节点更新后的订阅路径节点集合信息;根据所述数据节点的节点id,更新订阅节点的节点信息;根据所述订阅节点更新后的节点信息和所述数据节点更新后的订阅路径节点集合信息,更新所述订阅节点的订阅路径节点集合信息。进一步的,所述方法还包括:将所述订阅节点更新后的订阅路径节点集合信息发送给所述数据节点。这样可以将订阅节点及其子节点的节点信息补充到数据节点的订阅路径节点集合信息中,使得数据节点的订阅路径节点集合信息中包含经过该条订阅路径的所有节点的节点信息。进一步的,所述方法还包括:根据所述订阅节点更新后的节点信息,确定所述订阅节点的子节点;将所述订阅节点更新后的订阅路径节点集合信息发送给所述订阅节点的所述子节点,以使所述订阅节点的所述子节点更新所述子节点的订阅路径节点集合信息。这样可以将数据节点及其父节点的节点信息补充到订阅节点的子节点的订阅路径节点集合信息,使得子节点的订阅路径节点集合信息中包含经过该条订阅路径的所有节点的节点信息,从而使订阅节点的子节点能够正确的确定自身的层级数。进一步的,所述在发送订阅请求之前,所述方法还包括:根据所述订阅节点的节点信息,确定所述订阅节点是否包含子节点;如果不包含所述子节点,则向所述数据节点发送所述订阅请求;如果包含所述子节点,则取消发送所述订阅请求。这样可以避免订阅节点与数据节点完成订阅后,订阅节点的子节点由于层级数过高而导致子节点网络延时较高,获取直播数据效率降低。进一步的,所述方法还包括:如果接收到所述订阅请求对应的拒绝订阅信息,则向第二数据节点发送订阅请求。第三方面,提供了一种p2p节点,包括:查询模块,用于在接收到订阅请求后,查询所述数据节点的层级数和网络延时,并根据所述网络延时,确定所述数据节点的层级数阈值;收发模块,用于如果所述层级数小于所述层级数阈值,则根据所述订阅请求反馈响应信息;如果所述层级数大于等于所述层级数阈值,则根据所述订阅请求反馈拒绝订阅信息。第四方面,提供了一种p2p节点,包括:收发模块,用于发送订阅请求,并接收所述订阅请求对应的响应信息,所述响应信息中包含数据节点的节点id和数据节点更新后的订阅路径节点集合信息;更新模块,用于根据所述数据节点的节点id,更新订阅节点的节点信息;根据所述订阅节点更新后的节点信息和所述数据节点更新后的订阅路径节点集合信息,更新所述订阅节点的订阅路径节点集合信息。第五方面,提供了一种p2p节点,所述p2p节点包括存储器和处理器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述第一方面和/或上述第二方面所述的p2p传输的控制方法。本发明实施例提供的技术方案带来的有益效果是:本发明实施例中,在接收到订阅请求后,查询所述数据节点的层级数和网络延时,并根据所述网络延时,确定所述数据节点的层级数阈值;如果所述层级数小于所述层级数阈值,则根据所述订阅请求反馈响应信息;如果所述层级数大于等于所述层级数阈值,则根据所述订阅请求反馈拒绝订阅信息。这样,通过数据节点的网络延时确定层级数阈值,网络延时高则层级数阈值低,网络延时低则层级数阈值高;再通过层级数阈值与数据节点层级数的大小关系确定数据节点是否接受订阅,可以使得网络延时较高的数据节点不能被其他订阅,避免订阅完成后订阅节点的具有较高的网络延时,从而提高直播数据的获取效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是一种p2p订阅树的结构示意图。图2是本发明实施例提供的一种p2p传输的控制方法的流程图;图3是本发明实施例提供的一种p2p节点的结构示意图;图4是本发明实施例提供的一种p2p节点的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明实施例提供了一种p2p传输的控制方法,该方法可以适用于p2p节点上。p2p节点之间通过订阅建立p2p连接,形成如图1所示的树状结构,当p2p节点向其他p2p节点发起订阅时,发送订阅请求的p2p节点可以看作订阅节点(可视为子节点);当p2p节点被其他p2p节点订阅时,接收订阅请求的p2p节点可以看作数据节点(可视为父节点)。由于一个p2p节点既可以向其他p2p发起订阅,又可以被其他p2p节点订阅,因此,本发明适用于订阅节点的方法和适用于数据节点的方法可以同时适用于同一p2p节点,当p2p节点作为订阅节点时,则适用订阅节点相应的方法;当p2p节点作为数据节点时,则适用数据节点相应的方法。在本发明中,p2p节点具体可以是直播播放器,当然也可以是下载工具等其他p2p应用。本实施例的应用场景可以是:订阅节点向数据节点发送订阅请求;数据节点接收到订阅请求后,查询数据节点的层级数和网络延时,并根据网络延时确定数据节点的层级数阈值;如果数据节点的层级数小于层级数阈值,数据节点根据订阅请求,向订阅节点反馈响应信息;订阅节点接收到响应信息后,更新订阅节点的节点信息和订阅节点的订阅路径节点集合信息。下面将结合具体实施方式,对图2所示的一种p2p传输的控制流程进行详细的说明,内容可以如下,其中,下文中的订阅节点可以是发起订阅的p2p节点(即发送订阅请求的p2p节点),数据节点可以是被订阅的p2p节点(即接收订阅请求的p2p节点):步骤101:订阅节点向数据节点发送订阅请求。在实施中,用户在通过订阅节点获取直播数据时,订阅节点向数据节点发送订阅请求,如果数据节点接受订阅节点的订阅,订阅节点和数据节点之间就可以建立传输链路,这样,订阅节点就可以通过与数据节点之间的传输链路,从数据节点获取用户所需的直播数据。可选的,为了避免订阅节点与数据节点完成订阅后,订阅节点的子节点由于层级数过高而导致子节点获取直播数据效率降低,订阅节点在发送订阅请求之前,还可以先进行如下处理:根据订阅节点的节点信息,确定订阅节点是否包含子节点;如果不包含子节点,则向数据节点发送订阅请求;如果包含子节点,则取消发送订阅请求。在实施中,如果订阅节点已经被其他节点订阅(即订阅节点包含子节点),当订阅节点再订阅其他数据节点后,子节点在获取直播数据时,可能需要通过订阅节点向数据节点获取,如果数据节点也没有该直播数据,可能还需要向数据节点的父节点获取,从而导致接收直播数据的网络延时较高,因此,会降低子节点获取直播数据的效率。为了便于理解,下面以图1为例进行说明,节点d已经被节点g订阅,在节点d继续订阅节点b之后,当节点g向节点d获取直播数据时,如果节点d没有该直播数据,则节点d会向节点b获取;如果节点b也没有该直播数据,则节点b继续向节点a获取,如果节点a仍然没有该直播数据,则节点a再向cdn边缘节点获取。节点a获取到直播数据后,发送给节点b,节点b在发送给节点d,最后由节点d发送给节点g,可以看出在上述过程比较复杂中,需要通过多个节点才能最终得到直播数据,消耗的时间比较多,会降低直播数据获取效率。为了避免上述状况的发生,订阅节点在向数据节点发送订阅请求之前,可以先查询订阅节点的节点信息。订阅节点上存储有订阅节点的节点信息,订阅节点的节点信息中包含订阅节点的节点id、父节点id以及所有子节点id。因此,如果能够查询到子节点id,则说明订阅节点包含子节点;反之,则说明订阅节点没有子节点。这样,通过查询订阅节点的节点信息,就可以确定订阅节点是否包含有子节点。只有当不包含子节点时,订阅节点才向数据节点发送订阅请求;如果包含子节点,订阅节点则取消发送订阅请求。这样,可以避免在订阅完成后,订阅节点的子节点的层级数过高,接收直播数据的网络延时较高,影响子节点直播数据获取效率。为了便于理解,以图1为例进行说明,节点d的节点信息可以记做id,id包括订阅节点的节点id-d、父节点id-b,子节点id-g;节点f的节点信息可以记做if,if包括订阅节点的节点id-f、父节点id-c。通过查询节点d的节点信息,可以查询到子节点id-g,说明节点d包含子节点g;而查询节点f的节点信息后,没有得到任何子节点id,说明节点f没有子节点。步骤102:数据节点在接收到订阅请求后,查询数据节点的层级数和网络延时,并根据网络延时,确定数据节点的层级数阈值。在实施中,为了避免在订阅完成之后,订阅节点的层级数过高,导致接收直播数据的网络延时过高,影响订阅节点获取直播数据的效率,因此,在接收到订阅节点发来的订阅请求之后,数据节点首先需要查询确定数据节点的层级数和网络延时,网络延时可以是接收到订阅请求前一段时间内的平均网络延时,也可以是接收到订阅请求前一段时间内的最大(或最小)网络延时,还可以是接收到订阅请求时的瞬时网络延时。数据节点进一步根据网络延时来确定数据节点的层级数阈值。通常,由于订阅节点的层级数大于数据节点,订阅节点的网络延时要比数据节点高。当数据节点的网络延时较高时,可以设定较低的层级数阈值,使数据节点尽量避免再被订阅;当数据节点的网络延时较低时,可以设定较高的层级数阈值,使数据节点能够被订阅。故而,在通过网络延时来确定数据节点的层级数阈值时,网络延时越高,则层级数阈值越低;网络延时越低,则层级数阈值越高。在确定层级数阈值时,还可以预先在数据节点中存储网络延时-层级数阈值表(表1)。在网络延时-层级数阈值表中,可以预先设定数据节点的网络延时在一定范围内对应的层级数阈值,然后根据数据节点的网络延时,查表得到对应的层级数阈值。或者,也可以通过网络延时(和其他参数)的具体数值和权重,通过计算得到层级数阈值。表1网络延时-层级数阈值表网络延时(ms)层级数阈值0-30531-50451-1003>1002可选的,数据节点可以预先确定数据节点的层级数,并将数据节点的层级数存储在数据节点上,这样,当接收到订阅请求后就可以直接查询得到,故而,在接收到订阅请求之前,确定数据节点的层级数的处理可以如下:根据数据节点的订阅路径节点集合信息,确定数据节点的层级数。在实施中,数据节点上存储有数据节点的订阅路径节点集合信息,数据节点的订阅路径节点集合信息中,记录有数据节点所在订阅路径上所有节点的节点信息,数据节点可以通过递归查找父节点的方式,从数据节点的订阅路径节点集合信息中计算得到数据节点的层级数。数据节点可以将得到的层级数存储在数据节点本地,这样,当接收到订阅请求后,就可以直接查询得到数据节点的层级数。这样可以减少确定数据节点的层级数时花费的时间,加快订阅过程。当然,在本发明的其他实施方式中,数据节点也可以不存储层级数,而在每次接收到订阅节点后,再通过上述方法计算得到数据节点的层级数。例如,可以将图1中节点d的订阅路径节点集合信息记做pd,节点d所在订阅路径上的节点包括节点a、节点b和节点g,因此,pd={ia,ib,id,ig}。节点d的层级数可以记做ld,根据节点信息ia、ib、id和ig,可以确定各个节点的父节点,即节点g的父节点为节点d,节点d的父节点为节点b,节点b的父节点为节点a。由于节点a直接与cdn边缘服务器连接,因此可以预设节点a的层级数为la=1,由节点d到节点a,每增加一个父节点则层级数加一,所以ld=3。步骤103:如果数据节点的层级数小于层级数阈值,则数据节点根据订阅请求反馈响应信息;如果数据节点的层级数大于等于层级数阈值,则数据节点根据订阅请求反馈拒绝订阅信息。在实施中,如前文所述,数据节点根据网络延时确定层级数阈值后,可以通过层级数阈值限制数据节点接受订阅,达到控制订阅节点的层级数,避免订阅节点的网络延时过高,影响订阅节点接收直播数据效率的目的。数据节点将查询得到的数据节点的层级数,与通过网络延时确定的层级数阈值进行比较,如果数据节点的层级数小于层级数阈值,此时,数据节点接受订阅节点的订阅后,订阅节点的层级数一般不会对订阅节点的网络延时造成较大影响,订阅节点仍能够具有较低的网络延时,不会影响获取直播数据的效率,因此,数据节点可以接受订阅节点的订阅,根据订阅请求向订阅节点反馈响应信息,以完成订阅。如果数据节点的层级数大于等于层级数阈值,此时,数据节点接受订阅节点的订阅后,订阅节点可能具有较高的层级数,从而影响订阅节点的网络延时,导致订阅节点的网络延时可能会比较高,获取直播数据的效率降低,因此,数据节点拒绝订阅节点的订阅,根据订阅请求向订阅节点反馈拒绝订阅信息。这样,就可以避免在订阅完成之后,订阅节点的订阅节点的层级数过高,影响直播数据获取效率。可选的,数据节点接收到的订阅请求中还包含有订阅节点id。在根据订阅请求反馈响应信息之前,数据节点还可以根据订阅请求更新数据节点的订阅路径节点集合信息的处理,具体可以如下:获取订阅请求中包含的订阅节点的节点id;根据订阅节点的节点id,更新数据节点的节点信息;根据数据节点更新后的节点信息,更新数据节点的订阅路径节点集合信息。在实施中,数据节点上存储有数据节点的节点信息,数据节点的节点信息包含数据节点的节点id、父节点id以及所有子节点id。数据节点接受订阅节点的订阅后,订阅节点即成为数据节点的子节点,因此,在确认数据节点的层级数小于层级数阈值之后,数据节点从接收到的订阅请求中,获取其中包含的订阅节点的节点id。然后,数据节点在节点信息中,添加订阅节点的节点id作为子节点id,得到数据节点更新后的节点信息。最后,数据节点用更新后的节点信息,替换数据节点的订阅路径节点集合信息中原有的数据节点的节点信息,完成数据节点的订阅路径节点集合信息的更新。例如,图1中以节点f为订阅节点,节点c为数据节点,节点c接受节点f的订阅之前,节点c的节点信息ic包括数据节点的节点id-c、父节点id-a,节点c的订阅路径节点集合信息pc={ia,ic}。节点c接受节点f的订阅后,节点f成为节点c的子节点,节点c从接收到的订阅请求中,获取节点f的节点id后,节点c在节点信息ic中添加节点f的节点id作为子节点id,更新后的节点信息ic'包括数据节点的节点id-c、父节点id-a和子节点id-f。最后,节点c用ic'替换订阅路径节点集合信息pc中ic,节点c更新后的订阅路径节点集合信息pc'={ia,ic'}。可选的,由于数据节点的节点信息发生更新,数据节点所在订阅路径上的其他节点的订阅路径节点集合信息中包含的数据节点的节点信息也需要更新,故而,相应的处理可以如下:根据数据节点更新后的节点信息,确定数据节点的父节点;将数据节点更新后的节点信息发送给数据节点的父节点,以使数据节点的父节点更新父节点的订阅路径节点集合信息。在实施中,数据节点在更新数据节点的订阅路径节点集合信息之后,从数据节点更新后的节点信息中,获取父节点id,确定数据节点的父节点。数据节点将数据节点更新后的节点信息发送给父节点。数据节点的父节点在接收到数据节点更新后的节点信息之后,就可以更新父节点的订阅路径节点集合信息。父节点的订阅路径节点集合信息更新的方法与数据节点的订阅路径节点集合信息更新相似,在此不再赘述。数据节点的父节点还可以继续重复此步骤,继续向上级父节点发送数据节点更新后的节点信息,直至该订阅路径上数据节点上级的全部节点都完成相应的更新。数据节点还可以从数据节点更新后的节点信息中,获取除订阅节点外的全部子节点id,确定数据节点除订阅节点外的全部子节点。数据节点将数据节点更新后的节点信息分别发送给除订阅节点外的全部子节点。数据节点的各个子节点在接收到数据节点更新后的节点信息之后,更新子节点的订阅路径节点集合信息。步骤104:订阅节点接收订阅请求对应的响应信息,响应信息中包含数据节点的节点id和数据节点更新后的订阅路径节点集合信息。在实施中,在更新数据节点的订阅路径节点集合信息之后,数据节点将数据节点的节点id和数据节点更新后的订阅路径节点集合信息添加入响应信息中,根据订阅请求将响应信息发送给订阅节点。订阅节点在接收到响应信息后,就可以从响应信息中获取数据节点的节点id和数据节点更新后的订阅路径节点集合信息。需要说明的是,如果订阅节点接收到的是订阅请求对应的拒绝订阅信息,则订阅节点可以向其他数据节点(第二数据节点)再次发送订阅请求,以获取所需的直播数据。步骤105:订阅节点根据数据节点的节点id,更新订阅节点的节点信息。在实施中,如前文所述,订阅节点上存储有订阅节点的节点信息,订阅节点的节点信息包含订阅节点的节点id、父节点id以及所有子节点id。数据节点接受订阅节点的订阅后,数据节点即成为订阅节点的父节点,因此,订阅节点在接收到数据节点发来的响应信息后,获取响应信息中包含的数据节点的节点id,然后,在订阅节点的节点信息中,添加数据节点的节点id作为父节点id,得到订阅节点更新后的节点信息。以图1为例,节点f为订阅节点,节点c为数据节点为例,节点c接受节点f的订阅之前,节点f的节点信息if包括订阅节点的节点id-f。节点c接受节点f的订阅后,节点c成为节点f的父节点,节点f从接收到的响应信息中,获取节点c的节点id后,节点f在节点信息if中添加节点c的节点id作为父节点id,更新后的节点信息if'包括数据节点的节点id-f和父节点id-c。步骤106:订阅节点根据订阅节点更新后的节点信息和数据节点更新后的订阅路径节点集合信息,更新订阅节点的订阅路径节点集合信息。在实施中,订阅节点上存储有订阅节点的订阅路径节点集合信息,订阅节点的订阅路径节点集合信息中,记录有订阅节点所在订阅路径上所有节点的节点信息。在更新订阅节点的节点信息之后,订阅节点继续从响应请求中获取数据节点更新后的订阅路径节点集合信息。然后,订阅节点将数据节点更新后的订阅路径节点集合信息与订阅节点的订阅路径节点集合信息合并,并用订阅节点更新后的节点信息替换合并后的订阅路径节点集合信息中原有的订阅节点的节点信息,得到订阅节点更新后的订阅路径节点集合信息。以图1为例,节点f为订阅节点,节点c为数据节点为例,节点c接受节点f的订阅之前,节点f的订阅路径节点集合信息pf={if}。在节点d得到更新后的节点信息if'之后,节点f从接收到的响应信息中,获取节点c更新后的订阅路径节点集合信息pc'={ia,ic'},然后将pc'与pf合并,并用if'替换if,得到节点f更新后的订阅路径节点集合信息pf'={ia,ic',if'}。可选的,由于之前数据节点更新后的订阅路径节点集合信息中并没有加入订阅节点及其子节点的节点信息,为了将数据节点更新后的订阅路径节点集合信息补充完整,相应的处理可以如下:将订阅节点更新后的订阅路径节点集合信息发送给数据节点。在实施中,订阅节点在更新订阅节点的订阅路径节点集合信息之后,将订阅节点更新后的订阅路径节点集合信息发送给数据节点,这样,数据节点在接收订阅节点的订阅路径节点集合信息之后,就可以根据订阅节点更新后的订阅路径节点集合信息,在数据节点的订阅路径节点集合信息中,补充该订阅路径上所有节点的节点信息。可选的,由于之前数据节点更新后的订阅路径节点集合信息中并没有加入订阅节点及其子节点的节点信息,因此,可以根据订阅节点更新后的订阅路径节点集合信息,将数据节点的及其父节点的订阅路径节点集合信息补充完整,相应的处理可以如下:接收订阅节点更新后的订阅路径节点集合信息;根据订阅节点更新后的订阅路径节点集合信息,更新数据节点的订阅路径节点集合信息;将订阅节点更新后的订阅路径节点集合信息发送给数据节点的父节点,以使数据节点的父节点更新父节点的订阅路径节点集合信息。在实施中,在接收到订阅节点发来的订阅节点更新后的订阅路径节点集合信息后,数据节点将订阅节点更新后的订阅路径节点集合信息与数据节点的订阅路径节点集合信息合并,并删除合并后重复的节点信息,得到数据节点更新后的订阅路径节点集合信息。数据节点进一步根据之前确定的父节点,将数据节点更新后的订阅路径节点集合信息发送给父节点,这样,数据节点的父节点在接收到数据节点更新后的订阅路径节点集合信息之后,就可以更新父节点的订阅路径节点集合信息。数据节点的父节点还可以继续重复此步骤,继续向上级父节点发送数据节点更新后的订阅路径节点集合信息,直至该订阅路径上数据节点上级的全部节点都完成相应的更新。以图1为例,节点f为订阅节点,节点c为数据节点为例,节点c接收到节点f发来的pf'={ia,ic',if'}后,节点c将pf'与pc'合并,得到pc''={ia,ic',ia,ic',if'},删除合并后重复的ia和ic',得到节点c更新后的订阅路径节点集合信息pc''={ia,ic',if'}。可选的,在更新订阅节点的订阅路径节点集合信息的之后,订阅节点还可以根据订阅节点的订阅路径节点集合信息,更新订阅节点的子节点的订阅路径节点集合信息,相应的处理可以如下:根据订阅节点更新后的节点信息,确定订阅节点的子节点;将订阅节点更新后的订阅路径节点集合信息发送给订阅节点的子节点,以使订阅节点的子节点更新子节点的订阅路径节点集合信息。在实施中,订阅节点在更新订阅节点的订阅路径节点集合信息之后,从订阅节点更新后的节点信息中,获取子节点id,确定订阅节点的子节点。订阅节点将订阅节点更新后的订阅路径节点集合信息发送给子节点。订阅节点的子节点在接收到订阅节点更新后的订阅路径节点集合信息之后,可以如前文所述,将订阅节点更新后的订阅路径节点集合信息与子节点的订阅路径节点集合信息合并,并删除合并后重复的节点信息。订阅节点的子节点还可以继续重复此步骤,继续向下级子节点发送订阅节点更新后的订阅路径节点集合信息,直至该订阅路径上订阅节点下级的全部节点都完成相应的更新。当订阅节点与数据节点之间发生取消订阅、延时过长或心跳超时等情况时,订阅节点与数据节点之间的传输链路会断开。断开后订阅节点不再是数据节点的子节点,数据节点也不再是订阅节点的父节点。因此,数据节点和订阅节点各自的节点信息和订阅路径节点集合信息都需要进行相应的更新。数据节点的节点信息中将在子节点id中删去订阅节点的id,并将订阅路径节点集合信息中订阅节点及其子节点的节点信息删除,同时更新数据节点的节点信息;订阅节点的节点信息中将在父节点id中删去数据节点的id,并将订阅路径节点集合信息中数据节点及其父节点的节点信息删除,同时更新订阅节点的节点信息。本发明实施例中,在接收到订阅请求后,查询所述数据节点的层级数和网络延时,并根据所述网络延时,确定所述数据节点的层级数阈值;如果所述层级数小于层级数阈值,则根据所述订阅请求,反馈响应信息;如果所述层级数大于等于层级数阈值,则根据所述订阅请求反馈拒绝订阅信息。这样,通过数据节点的网络延时确定层级数阈值,网络延时高则层级数阈值低,网络延时低则层级数阈值高;再通过层级数阈值与数据节点层级数的大小关系确定数据节点是否接受订阅,可以使得网络延时较高的数据节点不能被其他订阅,避免订阅完成后订阅节点的具有较高的网络延时,从而提高直播数据的获取效率。基于相同的技术构思,本发明实施例还提供了一种p2p节点,如图3所示,包括:查询模块301,用于在接收到订阅请求后,查询所述数据节点的层级数和网络延时,并根据所述网络延时,确定所述数据节点的层级数阈值。收发模块302,用于如果所述层级数小于所述层级数阈值,则根据所述订阅请求反馈响应信息;如果所述层级数大于等于所述层级数阈值,则根据所述订阅请求反馈拒绝订阅信息。图3所示的p2p节点可以是被订阅的p2p节点(数据节点)。该p2p节点可以通过网络延时确定层级数阈值,再根据p2p节点自身的层级数与层级数阈值的大小关系,确定是否接受订阅,从而避免在订阅完成后,发起订阅的p2p节点的网络延时较高,获取直播数据效率低。基于相同的技术构思,本发明实施例还提供了一种p2p节点,如图4所示,包括:收发模块401,用于发送订阅请求,并接收所述订阅请求对应的响应信息,所述响应信息中包含数据节点的节点id和数据节点更新后的订阅路径节点集合信息。更新模块402,用于根据所述数据节点的节点id,更新订阅节点的节点信息;根据所述订阅节点更新后的节点信息和所述数据节点更新后的订阅路径节点集合信息,更新所述订阅节点的订阅路径节点集合信息。图4所示的p2p节点可以是发起订阅的p2p节点(订阅节点)。该p2p节点在订阅成功后,可以根据响应信息,更新节点信息和订阅路径节点集合信息,从而能够确定该p2p节点自身的层级数,当该p2p节点被其他p2p节点订阅时,可以判断是否接受订阅。基于相同的技术构思,本发明实施例还提供了一种p2p节点,所述p2p节点可因配置或性能不同而产生较大的差异,包括一个和一个以上存储器和处理器,其中,存储器可以是短暂存储或永久存储。存储器可以存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述p2p传输的控制方法。需要说明的是:上述实施例提供的p2p节点在实现限制p2p下载链路层级数时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将推p2p节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。同时,上述实施例提供的p2p节点与p2p传输的控制方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务端,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1