分散式分层群集对等实况流系统转让专利

申请号 : CN200880127505.7

文献号 : CN101960793A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭阳梁超刘勇

申请人 : 汤姆逊许可公司

摘要 :

描述了一种方法和设备,包括:将发送队列中的数据转发到同一群中的第一同位体;计算平均发送队列尺寸;将平均发送队列尺寸和阈值进行比较;以及根据比较结果向群头发送信号。还描述了一种方法和设备,包括:将发送队列中的数据转发到和上级同位体关联的同位体;响应和下级群关联的信号队列中的第一信号,将回放缓冲器中的数据转发到下级群中的同位体;确定在一段时间内回放缓冲器是否超过阈值;以及根据确定结果向源服务器发送第二信号。

权利要求 :

1.一种方法,所述方法包括:将发送队列中的数据转发到同一群中的第一同位体;

计算平均发送队列尺寸;

将所述平均发送队列尺寸和阈值进行比较;以及根据所述比较结果,向群头发送信号。

2.根据权利要求1所述的方法,其进一步包括:接收所述数据;以及

存储所述接收的数据,以便转发到所述发送队列中;

其中所述接收的数据来自所述群头和所述同一群中第二同位体之一。

3.根据权利要求1所述的方法,其进一步包括:将所述接收的数据存入回放缓冲器中;以及再现所述回放缓冲器中存储的所述数据。

4.根据权利要求1所述的方法,其中所述信号指示所述发送队列需要附加数据。

5.一种设备,包括:

用于将发送队列中的数据转发到同一群中第一同位体的装置;

用于计算平均发送队列尺寸的装置;

用于将所述平均发送队列尺寸和预定阈值进行比较的装置;以及用于根据所述比较结果向群头发送信号的装置。

6.根据权利要求5所述的装置,其进一步包括:用于接收所述数据的装置;以及用于存储所述接收的数据、以便转发到所述发送队列的装置;

其中所述接收的数据来自所述群头和所述同一群中第二同位体之一。

7.根据权利要求5所述的装置,其进一步包括:用于将所述接收的数据存入回放缓冲器中的装置;以及用于再现所述回放缓冲器中存储的所述数据的装置。

8.根据权利要求5所述的装置,其中所述信号指示所述发送队列需要附加数据。

9.一种方法,所述方法包括:将发送队列中的数据转发到和上级群关联的同位体;

响应和下级群关联的信号队列中的第一信号,将回放缓冲器中的数据转发到所述下级群中的同位体;

确定在一段时间内所述回放缓冲器是否超过阈值;以及根据所述确定步骤的结果,向源服务器发送第二信号。

10.根据权利要求9所述的方法,其进一步包括:接收数据;

将所述接收的数据存入所述回放缓冲器中;以及再现所述回放缓冲器中存储的所述接收数据。

11.根据权利要求9所述的方法,其中所述接收的数据来自所述源服务器和同一上级群中第二群头之一。

12.根据权利要求9所述的方法,其中所述第一信号指示需要附加数据。

13.根据权利要求9所述的方法,其中所述第二信号指示正在转发数据的第一速率超过了能够使用数据的第二速率。

14.一种设备,包括:

用于将发送队列中的数据转发到和上级群关联的同位体的装置;

用于响应和下级群关联的信号队列中的第一信号,将回放缓冲器中的数据转发到所述下级群中的同位体的装置;

用于确定在一段时间内所述回放缓冲器是否超过阈值的装置;以及用于根据所述确定装置的结果向源服务器发送第二信号的装置。

15.根据权利要求14所述的装置,其进一步包括:用于接收数据的装置;

用于将所述接收的数据存入所述回放缓冲器的装置;以及用于再现所述回放缓冲器中存储的所述接收数据的装置。

16.根据权利要求14所述的设备,其中所述接收的数据来自所述源服务器和所述同一上级群中第二群头之一。

17.根据权利要求14所述的设备,其中所述第一信号指示需要附加数据。

18.根据权利要求14所述的设备,其中所述第二信号指示正在转发数据的第一速率超过了能够使用数据的第二速率。

19.一种方法,所述方法包括:响应信号队列中的信号,将数据转发到所述信号的发出器;以及将内容缓冲器中的数据转发到同一群中的同位体。

20.一种设备,包括:

用于响应信号队列中的信号将数据转发到所述信号的发出器的装置;以及将内容缓冲器中的数据转发到同一群中的同位体的装置。

21.一种方法,所述方法包括:确定源服务器是否能够提供更多数据;

如果所述源服务器能够提供更多数据,则将所述更多数据移到内容缓冲器;

确定第一子服务器是否大大滞后于第二子服务器;

如果所述第一子服务器大大滞后于所述第二子服务器,则执行所述第一子服务器的数据处理过程;以及如果所述第一子服务器没有大大滞后于所述第二子服务器,则执行所述第二子服务器的数据处理过程。

22.一种设备,包括:

用于确定源服务器是否能够提供更多数据的装置;

用于如果所述源服务器能够提供更多数据,就将所述更多数据移到内容缓冲器的装置;

用于确定第一子服务器是否大大滞后于第二子服务器的装置;

用于如果所述第一子服务器大大滞后于所述第二子服务器,则执行所述第一子服务器的数据处理过程的装置;以及用于如果所述第一子服务器没有大大滞后于所述第二子服务器,则执行所述第二子服务器的数据处理过程的装置。

说明书 :

分散式分层群集对等实况流系统

技术领域

[0001] 本发明涉及网络通信,尤其涉及对等网络中的流数据。

背景技术

[0002] 本技术领域表明,对等(P2P)流系统中的最大视频流速率是由视频源服务器的容量、系统中的同位体数量以及所有同位体的总上载容量确定的。描述了集中式“完全”调度算法,以实现最大流速率。然而,“完全”调度算法有两个缺陷。首先,该算法需要中心调度器,该中心调度器收集所有单个同位体的上载容量信息。然后,中心调度器计算从源发往同位体的子流的速率。在“完全”调度算法中,中心调度器是单个点/单元/设备。如在此所使用的,“/”表示相同或相似部件或结构的可选名称。即,如在此所使用的,“/”可被看成表示“或”。而且,同位体上载容量信息可能得不到,并且随时间而变。不准确的上载容量导致错误的子流速率,将造成对系统带宽利用不足,或者对可支持的流速率估计过高。
[0003] 需要服务器和所有同位体之间的完全连接网格。在通常具有数千个同位体的P2P系统中,由同位体来维持数千个活动P2P连接是不现实的。另外,服务器需要将视频流分成子流,每个同位体一个子流。对于服务器来说,将视频流实时分成数千个子流是有挑战性的。
[0004] 在早先专利申请PCT/US07/025656中,设计了一种分层群集P2P实况流系统,该系统将同位体分成小群,并在群之间形成层次。分层群集P2P系统达到了接近理论上限的流速率。同位体只需要维持与群内较少数量相邻同位体之间的连接。在单个群内采用了集中式“完全”调度方法。
[0005] 在另一早先专利申请PCT/US07/15246中,描述了“完全”调度的分散型式,其同位体形成完全连接的网格。

发明内容

[0006] 本发明针对分层群集P2P实况流系统的完全分布式调度机制。在源服务器和同位体节点执行分布式调度机制。它利用本地信息,而在群级不需要中央控制器。因而,分散式分层群集P2P实况流系统克服了最初的“完全”调度算法的两个主要缺点。
[0007] 依据实况视频流,描述本发明的分层群集P2P流方法。然而,任何形式的数据都能够流动,包括但不限于视频、音频、多媒体、流内容、文件等。
[0008] 描述了一种方法和设备,包括:将发送队列中的数据转发到同一群中的第一同位体;计算平均发送队列尺寸;将平均发送队列尺寸和阈值进行比较;以及根据比较结果向群头发送信号。还描述了一种方法和设备,包括:将发送队列中的数据转发到和上级同位体关联的同位体;响应和下级群关联的信号队列中的第一信号,将回放缓冲器中的数据转发到下级群中的同位体;确定在一段时间内回放缓冲器是否超过阈值;以及根据确定结果向源服务器发送第二信号。还描述了一种方法和设备,包括:响应信号队列中的信号,将数据转发给该信号的发出器;以及将内容缓冲器中的数据转发给同一群中的同位体。还描述了一种方法和设备,包括:确定源服务器是否能够提供更多数据;如果所述源服务器能够提供更多数据,则将该更多数据移到内容缓冲器;确定第一子服务器是否大大滞后于第二子服务器;如果第一子服务器大大滞后于第二子服务器,则执行第一子服务器的数据处理过程;以及如果第一子服务器没有大大滞后于第二子服务器,则执行第二子服务器的数据处理过程。

附图说明

[0009] 当连同附图一起阅读时,由以下详细说明可以很好地理解本发明。附图包括以下简要描述的图,其中图中相同标记代表相似部件。
[0010] 图1是使用“完全”调度算法的现有技术P2P系统的示意图。
[0011] 图2是现有技术的分层群集P2P流(HCPS)系统的示意图。
[0012] 图3示出了本发明的“正常”同位体/节点的排队模型。
[0013] 图4示出了本发明的群头的排队模型。
[0014] 图5示出了本发明的源服务器的排队模型。
[0015] 图6示出了本发明的“正常”同位体/节点的结构。
[0016] 图7是本发明的“正常”同位体/节点的数据处理过程流程图。
[0017] 图8示出了本发明的群头的结构。
[0018] 图9是本发明的群头的数据处理过程流程图。
[0019] 图10示出了本发明的源服务器的结构。
[0020] 图11A是本发明的子服务器的数据处理过程流程图。
[0021] 图11B是本发明的源服务器的数据处理过程流程图。

具体实施方式

[0022] 现有技术方案描述了一种“完全”调度算法,该算法达到了P2P系统所允许的最大流速率。系统中有n个同位体,且同位体i的上载容量为Ui,i=1,2,...n。系统中有一max个源(服务器),其上载容量为Us。用r 表示系统所允许的最大流速率,则可表示为[0023]
[0024] 值是每个同位体的平均上载容量。
[0025] 图1示出了如何利用现有技术的“完全”调度算法在三个不同种类节点之间调度数据的不同部分。系统中有三个同位体/节点。源服务器的容量是每时间单位6块,其中块是基本数据单位。a、b、c的上载容量分别是每时间单位2块、每时间单位4块和每时间单位6块。假定所有同位体都具有足够的下载容量,系统可支持的最大数据/视频速率为每时间单位6块。为达到该速率,服务器将数据/视频块分成6个一组。节点a负责上载每组中的1块,而节点b和c分别负责上载每组中的2块和3块。这样,所有同位体都能够以每时间单位6块的最大速率下载数据/视频。为实现这种“完全”调度算法,每个同位体都需要维持与系统中其它所有同位体之间的连接,并同其它所有同位体交换数据/视频内容。另外,服务器需要将视频流分成具有不同速率的多个子流,每个同位体一个子流。真实的P2P流系统很容易就可以有几千个同位体。对于当前操作系统,让常规同位体来维持数千个并发连接是不现实的。让服务器将数据/视频流实时分成数千个子流也是有挑战性的。
[0026] 先前发明的分层群集P2P流(HCPS)系统以短延迟支持接近最优上限的流速率,但是实际上可缩放,以适应大量用户/同位体/节点/客户端。在先前发明的HCPS中,同位体被归合成小尺寸的群,且在群之间形成层次,以便从源服务器检索数据/视频。通过主动平衡群之间的上载容量,并在每个群内执行“完全”调度算法,可以高效利用系统资源。
[0027] 图2描述了2级HCPS系统。同位体/节点被组织成带宽平衡的群,其中每个群都由少量同位体组成。在当前例子中,30个同位体被平均分成6个群。在每个群内,一个同位体被选为群头。群头作为其群内同位体的本地数据/视频代理服务器。“正常”同位体维持群内的连接,但不必维持与其它群中同位体/节点之间的连接。群头不仅维持与它们领导的群中的同位体之间的连接,而且还作为上级群中的同位体,数据/视频是从上级群检索的。例如,在图2中,所有群的群头形成了两个上级群,以便从数据/视频源服务器检索数据/视频。在本发明的结构中,源服务器将数据/视频分配到群头和上级群的同位体。示例2级HCPS具有以下能力:以服务器、群头和正常同位体的最小连接要求,支持大量同位体。
[0028] 虽然根据“完全”调度算法,同一群内的同位体可以合作从它们的群头检索数据/视频,但是HCPS中采用的“完全”调度实际上并不有效。在此描述一种适用于本发明HCPS结构的分散式调度机制。本发明的分散式调度方法能够为大量用户/同位体/节点服务,同时根据本地可得信息,单个用户/同位体/节点维持与其它同位体/节点/用户之间的少量同位体/节点连接,并和其它同位体/节点/用户交换数据。
[0029] 本发明的HCPS系统中有三种类型节点/同位体:源服务器,群头,以及“正常”同位体。源服务器是整个系统的真正服务器。源服务器为一个或多个顶级群服务。例如,图2中的源服务器为两个顶级群服务。群头参与两个群中:上级群和下级群。在上级群中,群头表现为“正常”同位体,并且从上级群获得数据/视频内容。即,在上级群中,群头从源服务器/群头,并且/或者通过和群中的其它群头(节点/同位体)交换数据/流内容,来接收流内容。对于下级群,群头用作本地源。最后,“正常”同位体是只参与一个群中的同位体/节点。“正常”同位体从群头接收流内容,并且和同一群中的其它同位体交换数据。在图2中,同位体a1、a2、a3和b1、b2、b3是群头。它们用作各自下级群的源(因为,表现得象源服务器)。同时,群头a1、a2、a3和源服务器形成一个顶级群。群头b1、b2、b3和源服务器形成另一个顶级群。应该注意,包括多于两级的结构也是可能的,在此使用两级结构来说明本发明原理。
[0030] 接下来,分别描述“正常”同位体(下级)、群头和源服务器的分散式调度机制、排队模型和结构。
[0031] 如图3所示,“正常”同位体/节点(下级)维持一回放缓冲器来存储所有收到的流内容。“正常”同位体/节点也维持一转发队列,以存储要转发到群内其它所有“正常”同位体/节点的内容。从用作源的群头获得的内容被标记为“F”或“NF”内容。“F”表示该内容需要被中转到群内其它“正常”同位体/节点。“NF”表示该内容仅供该同位体使用,而不需要转发。从其它“正常”同位体收到的内容总是被标记为“NF”内容。接收的内容首先被保存到回放缓冲器中。然后,标记为“F”的内容被存储到转发队列,并且要被转发到群内的其它“正常”同位体。每当转发队列变空了,“正常”同位体就向群头发出“拉”信号请求更多内容。
[0032] 图6图解说明了正常同位体的结构。接收过程处理来自群头和其它“正常”同位体的到来流量。然后,接收的数据被移交给数据处理过程。数据处理过程包括“拉”信号发出器、分组处理器和回放缓冲器。回放缓冲器中存储的数据块被再现,以致用户(同位体/节点处)能够将回放缓冲器中存储的流数据作为连续节目观看。需要发往其它节点的数据和信号被存储在发送队列中。发送过程处理发送队列中数据和信号的发送。接收过程、数据处理过程和发送过程可以每一个都是“正常”同位体内的独立过程/模块,或者可以是一个过程/模块。类似,可以用一个过程/模块或独立过程/模块,来实现发出“拉”信号的过程/模块、处理数据分组的过程/模块以及回放缓冲器。可以用软件来实现过程/模块,该软件的指令存储在处理器的存储器中,或者可以用使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)等的硬件或固件来实现过程/模块。所描述的队列和缓冲器可以用存储器来实现,该存储器可以是处理器的组成部分,也可以是独立单元/器件。可以通过有线网络/无线网络或它们的组合,来建立对等连接。
[0033] 图7是本发明方法的“正常”同位体/节点处的流程图。在705,“正常”同位体在接收过程接收数据块。接收过程从群头和/或群中其它“正常”同位体/节点接收到来的数据块。然后在710,数据块被传递给数据处理过程,并且被数据处理过程的分组处理器存储在回放缓冲器中。标记为“F”的数据块也被分组处理器转发到发送过程,以便存储到发送队列中。在715,标记为“F”的数据块在发送队列中被去标记,并且被转发到同一群内的所有同位体/节点。在720,“拉”信号发出器计算发送队列的平均队列尺寸。在725,执行测试,以确定平均队列尺寸是否小于或等于预定阈值。如果平均队列尺寸小于或等于预定阈值,则在730,“拉”信号发出器产生“拉”信号,并将“拉”信号发送给群头,以便获得更多内容/数据。如果平均队列尺寸大于预定阈值,则处理前进到705。
[0034] 群头连接两个群。即,群头将同时是两个群的成员。群头在上级群中表现为“正常”同位体,在下级群中表现为源节点。因而,群头的排队模型也是两级,如图4所示。作为上级群中的“正常”节点,群头从同一群中的同位体以及源服务器接收内容。群头将标记为“F”的内容中转到同一上级群中的其它同位体,并且在需要更多内容时,向源服务器发出“拉”信号。在上级,群头也可向源服务器发出扼制信号,以下将更详细描述。
[0035] 仍然参考图4,作为下级群中的源,群头有两个队列:内容队列和信号队列。内容队列是具有两个服务器的多服务器队列:标记为“F”的内容服务器以及转发服务器。要使用哪个服务器取决于信号队列的状态。具体地说,如果信号队列中有“拉”信号,则从内容服务器取出小块内容,并标记为“F”,然后由标记为“F”的内容服务器提供给发出“拉”信号的同位体。然后,从“拉”信号队列删除该“拉”信号。另一方面,如果信号队列为空,则服务器从内容缓冲器取出小块内容(数据块),并将该小块内容传送到转发服务器。转发服务器将该数据块标记为“NF”,并将其发送到同一群中的所有同位体。
[0036] 群头的上载容量在上级群和下级群之间共享。为了达到dHCPS系统所允许的最大流速率,下级群中的转发服务器和标记为“F”的内容服务器总是优先于上级群中的转发队列。具体地说,直到下级群的回放缓冲器中的内容发送完了,群头才为上级群中的转发队列服务。
[0037] 如果上级群支持的流速率大于下级群支持的流速率,则上级群可以压倒下级群。如果下级使用了群头的全部上载容量,而上级内容缓冲器中累积的内容继续增加,则可以推断当前流速率太大而不能被下级群支持。在群头回放缓冲器引入反馈机制。回放缓冲器具有内容速率估计器,用于连续估计到来的流速率。在回放缓冲器设置阈值。如果在一段时间比如t内接收的内容超过阈值,则群头将把扼制信号和估计的到来流速率发送给源服务器。该信号向源服务器报告当前流速率超过该节点领导的下级群所能消耗的速率。源服务器响应该“扼制”信号,并作出相应动作以降低流速率。源服务器可选择响应“扼制”信号,并作出相应动作降低流速率。作为选择,源服务器可以选择不降低当前流速率。在那种情况下,发出扼制信号的群中的同位体将经历观看质量的降级,如频繁的帧冻结。然而,质量下降不会影响到其它群。
[0038] 图8描述了群头的结构。接收过程处理来自上级群和下级群的到来流量。然后,接收数据被移交给数据处理过程。上级数据处理过程包括分组处理器、回放缓冲器和“拉”信号发出器。回放缓冲器中存储的数据块被再现,以致用户(群头处)能够将回放缓冲器中存储的流数据作为连续节目观看。下级数据处理过程包括分组处理器、“拉”信号处理器和扼制信号发出器。下级群的到来队列只接收“拉”信号。需要发往其它节点的数据和信号被存储在发送队列中。发送过程处理发送队列中的数据的发送。上级群队列中的数据块被发送给上级群中的其它群头/同位体,下级发送队列中的数据块被发送给下级群中的同位体,该群头是该下级群的源。发送过程给予下级群中的流量以更高的优先级。
[0039] 接收过程、数据处理过程和发送过程可以每一个都是群头内的独立过程/模块,也可以是单个过程/模块。类似,可以用单个过程/模块或独立过程/模块,来实现发出“拉”信号的过程/模块、处理分组的过程模块以及回放缓冲器。可以用软件来实现过程/模块,该软件的指令存储在处理器的存储器中,或者可以用使用ASIC、FPGA等的硬件或固件来实现过程/模块。所描述的队列和缓冲器可以用存储器来实现,该存储器可以是处理器的组成部分,也可以是独立单元/器件。
[0040] 图9是群头的数据处理过程的流程图。在905,群头接收到来的数据块(上级到来队列),并将收到的到来数据块存储在其回放缓冲器中。在910,上级数据处理过程的分组处理器将标记为“F”的数据块存储到发送过程的上级群的发送队列中。标记为“F”的数据块要被转发给同一群中的其它群头和同位体。下级数据处理过程的分组处理器检查信号队列,如果在915有“拉”信号待处理,则在920下级数据处理过程的分组处理器从“拉”信号队列移出待处理的“拉”信号,并将K个标记为“F”的数据块提供给下级群中发出“拉”信号的“正常”同位体。从下级群收到“拉”信号表示,下级群的队列为空,或者平均队列尺寸小于阈值。然后,过程返回到915。如果“拉”信号队列为空,则在925将回放缓冲器中的下一数据块标记为“NF”,并提供给同一下级群中的所有同位体。在930执行测试,以确定在预定长时间如t内,回放缓冲器是否超过阈值。如果在预定长时间如t内回放缓冲器超过了阈值,则在935产生扼制信号,并发往源服务器。如果在预定长时间如t内回放缓冲器没有超过阈值,则处理前进到905。
[0041] 参考图5,HCPS系统中的源服务器可以参与一个或多个顶级群。对于每个顶级群,源服务器都有一个子服务器。每个子服务器包括两个队列:内容队列和信号队列。内容队列是具有两个服务器的多服务器队列:标记为“F”的内容服务器以及转发服务器。要使用哪个服务器取决于信号队列的状态。具体地说,如果信号队列中有“拉”信号,则从内容服务器取出小块内容,并标记为“F”,然后由标记为“F”的内容服务器提供给发出“拉”信号的同位体。由此消耗了“拉”信号(并从信号队列删除该“拉”信号)。另一方面,如果信号队列为空,则服务器从内容缓冲器取出小块内容,并移交给转发服务器。转发服务器将该数据块标记为“NF”,并将其发送给群中的所有同位体。
[0042] 源服务器维持原始内容队列,以存储数据/流内容。源服务器也处理来自下级群的“扼制”信号,以及源服务器所服务的顶级群中群头的“扼制”信号。服务器根据同位体/节点的“扼制”信号调节流速率。服务器的上载容量在所有顶级群之间共享。带宽共享遵循以下规则:
[0043] 1)大大滞后于其它群(通过依据内容队列尺寸的阈值)的群具有最高优先级去使用上载容量。
[0044] 2)如果所有内容队列都具有相同/相似尺寸,则以循环形式为群/子服务器服务。
[0045] 图10描述了源服务器的结构。接收过程处理来自顶级群成员的到来“拉”信号。源服务器具有扼制信号处理器。数据/视频源被推到子服务器内容缓冲器中。扼制信号可以阻止这种数据推过程,并将流速率变为扼制信号所建议的速率。每个子服务器的数据处理过程都包括分组处理器和“拉”信号处理器。一旦为“拉”信号服务,子服务器内容缓冲器中的数据块就被推入发送队列中,以发往发出“拉”信号的同位体。如果“拉”信号队列为空,数据块被推入发送队列中,以发往群中所有同位体。发送过程以循环形式处理发送队列中数据的发送。接收过程、数据处理过程和发送过程可以每个都是源服务器内的独立过程/模块,也可以是单个过程/模块。类似,可以用单个过程/模块或独立过程/模块,来实现发出“拉”信号的过程/模块、处理分组的过程模块以及回放缓冲器。可以用软件来实现过程/模块,该软件的指令存储在处理器的存储器中,或者可以用使用ASIC、FPGA等的硬件或固件来实现过程/模块。所描述的队列和缓冲器可以用存储器来实现,该存储器可以是处理器的组成部分,也可以是独立单元/器件。
[0046] 图11A是子服务器的数据处理过程流程图。在该示例实施中,在1105,子服务器数据处理过程检查信号队列,并且如果有“拉”信号待处理,则在1110,分组处理器从“拉”信号队列移去待处理的“拉”信号,并将K个标记为“F”的数据块提供给发出“拉”信号的同位体。然后,过程返回到1105。如果“拉”信号队列为空,则在1115将回放缓冲器中的下一数据块标记为“NF”,并提供给同一群中的所有同位体。
[0047] 图11B是源服务器的数据处理过程流程图。在1120执行测试,以确定源服务器是否能向源服务器所领导的同位体发送/提供更多数据。如果在1120答案为允许,则更多数据被推入子服务器内容缓冲器中。在1125,根据上述带宽共享规则,识别大大滞后的子服务器。在1130,被识别的子服务器首先开始运行其数据处理过程,因而将更多数据块推入发送队列中。因为发送过程将公平对待所有发送队列,所以将更多数据块存入发送队列中的子服务器开始使用更多带宽。然后,过程返回到1125。如果没有子服务器大大滞后,则过程前进到1135,并且初始化群计数器。群计数器被初始化为0。可以将群计数器初始化为1,在这种情况下,1150的测试将是相对于n+1。在另一替换实施例中,可以先将群计数器初始化为编号最高的群,然后递减。在该技术领域中,计数器初始化以及递增或递减是众所周知的。在1140执行对应子服务器的数据处理过程。在1145递增群计数器,并在1150执行测试,以确定在该服务循环中是否为最后群头服务了。如果在该服务循环中没有为最后群头服务,则处理返回到1120。
[0048] 在此描述的本发明能够实现具有特定对等重叠拓扑的P2P系统所允许的最大/最优流速率。如果恒定位速率(CBR)视频流经这种P2P系统,则只要恒定位速率小于最大可支持流速率,就可支持所有同位体/用户。
[0049] 在此描述的本发明没有假定对基础网络拓扑的任何了解,或对专用网络基础结构如网络内高速缓存代理或内容分发网络(CDN)边缘服务器的支持。如果这种信息或基础结构支持可得,则本发明的分散式HCPS(dHCPS)能够利用它们,并传送更好的用户感官质量(QoE)。例如,如果网络拓扑已知,则dHCPS能够将邻近的同位体归合到同一群中,由此减轻基础网络的流量负载,并缩短传播延迟。作为另一个例子,如果网络内高速缓存代理或CDN边缘服务器可用于支持实况流,则dHCPS能够将它们用作群头,因为该专用网络基础结构典型地具有更大上载容量,并且不容易突然离开网络。
[0050] 应该理解,可以用各种形式硬件(如ASIC芯片)、软件、固件、专用处理器或它们的组合,如在服务器内的组合,中间设备(如无线接入点、无线路由器、机顶盒或移动设备),来实施本发明。优选地,将本发明实施为硬件和软件的组合。而且,优选地将软件实施为可切实在程序存储设备上实施的应用程序。可以将应用程序上传到包括任何合适结构的机器上,并由该机器执行。优选地,在具有硬件如一个或多个中央处理器(CPU)、随机存储器(RAM)和输入/输出(I/O)接口的计算机平台上,实施该机器。该计算机平台也包括操作系统和微指令码。在此描述的各种过程和功能可以是可通过操作系统执行的微指令码一部分或应用程序一部分(或者它们的组合)。另外,其它各种外围设备可以连接到该计算机平台,如附加的数据存储器和打印设备。
[0051] 还应该理解,因为优选地用软件实施附图中描述的系统组成部件和方法步骤,所以系统部件(或过程步骤)之间的实际连接可能随本发明被编程的方式而变。给定在此的教导,相关技术领域的普通技术人员将能够设想本发明的这些及类似实施或配置。