传输和下载流数据的方法

文档序号:6475142阅读:314来源:国知局
专利名称:传输和下载流数据的方法
技术领域
本发明涉及一种传输和下载流数据(streaming data)的方法,特别涉及一种通过多个分布节点传输和下载流数据的方法。
背景技术
通常,大多数通过互联网提供的内容数据都是小规模数据,例如文件或图片。然而,随着数据传输技术和设备的发展,多媒体内容也被广泛提供。多媒体内容通过流方法(streaming method)传输给用户客户机(user clients)。
通常,流数据被从一个服务器传输到多个用户客户机。
流数据应被实时传输。然而,由于通常流数据是从一个服务器传输到多个用户客户机,所以当服务器的负荷很高或者连接状态不稳定时,经常会发生传输延迟。因为流数据应当边下载边播放,所以与普通的文件下载不同,流数据的传输延迟将极大地影响QoS(服务质量)。
作为关于文件下载的在先技术,US专利6,339,785公开了一种通过多个服务器下载文件的方法。根据US专利6,339,785,整个文件被分为N段,并且文件通过N个服务器下载,从而即使在一个连接上存在差错,文件也能被稳定地传输。
然而,根据上述的文件下载方法,只有当下载完全部数据时文件才可用。因而,US 6,339,785的下载方法不能应用于应当边下载边播放的流数据。

发明内容
为了解决上述问题,本发明旨在提供一种通过多个节点传输和下载流数据的方法。
本发明的另一目的是提供一种在P2P网络中从多个用户客户机稳定下载流数据的方法,以及一种安装于用户客户机的通信代理程序。
本发明的又一目的是提供一种使用多个服务器在文件传输系统中稳定下载流数据的方法,以及安装于用户客户机的通信代理程序。
本发明的又一目的是提供一种用于将流数据分割成块(block)和子块(sub block)以及从多个连接中下载数据的方法。
为了实现上述目的,根据本发明的优选实施例,提供一种下载流数据的方法,包括步骤(a)与多个节点建立连接;(b)向建立连接的多个节点发出下载流数据子块的请求以下载这些子块;(c)监视已建立连接的下载状态;以及(d)根据监视结果重新分配将被从已建立连接的某些节点下载的子块;其中,当一个块所包括的所有子块都下载完毕后,重复步骤(b)到步骤(d)以下载下一个块中所包括的子块。
根据本发明,还可以包括确定将从各已建立连接的节点下载的子块的步骤。
步骤(c)可以包括监视是否存在已完成子块下载的连接。
通过计算连接状态评估指数,来确定将被从各节点下载的子块。
可以利用从包含相对于各节点的往返时间(round-trip)和从各节点的平均下载速度的组中选择的信息,计算连接状态评估指数。
步骤(d)还包括当存在一个子块下载已完成的连接时,在完成了子块下载的连接和没有完成子块下载的某些连接之间重新分配子块的步骤。
步骤(d)还包括在完成了子块下载的连接和未完成子块下载的连接中下载速率最低的一个连接之间重新分配子块的步骤。
在完成了子块下载的连接和下载速率最低的连接之间重新分配子块的步骤可以包括如下步骤确定完成了子块下载的连接和下载速率最低的连接的下载速度;确定将从下载速率最低的连接下载的剩余子块的数量;确定是否需要重新分配子块;如果需要重新分配子块,则根据下载速度的速率在完成了子块下载的连接和下载速率最低的连接之间重新分配剩余的子块。
根据本发明的另一实施例,提供一种通信代理程序,安装在一系统中的多个用户客户机,在该系统中,该多个用户客户机和连接控制服务器通过网络连接,该通信代理程序包括代理管理器模块,用于将存储在用户客户机中的内容信息和用户客户机的识别信息提供给连接控制服务器,以及当用户请求内容时将内容请求信息传输至连接控制服务器;节点信息管理器模块,用于接收和存储存储有被请求内容的节点的列表信息;连接控制模块,用于使用节点的列表信息与多个节点建立连接,确定将从已建立连接的各节点下载的子块以请求子块,以及通过在下载子块的同时监视下载状态来重新分配将从某些已连接节点下载的子块;子块管理器模块,用于确定是否已下载完一个块所包括的所有子块,以及当下载完一个块所包括的所有子块时,请求下一个块所包括的子块,以下载下一个块所包括的子块。
根据本发明的另一实施例,提供一种通信代理程序,安装在从一系统下载流数据的用户客户机中,该系统包括多个内容服务器和至少一个连接控制服务器,包括数据请求模块,用于向该连接控制服务器发出传输数据的请求;节点信息管理器模块,用于接收和存储将下载被请求数据的内容服务器的列表;连接控制模块,用于与内容服务器列表中所包括的多个内容服务器建立连接,请求将从已建立连接的内容服务器下载的流数据的子块,以及通过在从已连接内容服务器下载子块的同时监视下载状态,来重新分配将从已建立连接的某些内容服务器中下载的子块;以及子块管理器模块,用于确定是否已下载完一个块所包括的所有子块,并且当已下载完一个块所包括的所有子块时,请求下一个块所包括的子块,以下载下一个块的子块。
根据本发明的另一实施例,提供一种连接控制服务器,通过网络与多个用户客户机连接,用于控制用户客户机之间的连接,以使用户客户机能够通过连接其他用户来下载流数据,包括网格管理器模块,用于接收存储在已连接的多个用户客户机的内容的信息和已连接的多个用户客户机的地址信息,以及将存储有被请求内容的节点信息提供请求内容的用户客户机;以及网格信息数据库,用于存储每个用户客户机所存储的内容的信息和每个用户客户机的地址信息;其中,通信代理程序安装在该多个用户客户机中,该通信代理程序使用节点信息控制用户客户机与多个节点建立连接,和向已连接节点发出对将要下载的流数据的子块的请求,以及通过监视各已连接节点的下载状态来重新分配将要下载的子块。
根据本发明的另一实施例,提供一种连接控制服务器,通过网络与多个用户客户机和多个内容服务器连接,用于控制用户客户机和内容服务器之间的连接,以使用户客户机能够通过连接到至少两个内容服务器来下载流数据,包括服务器状态检测模块,用于从已连接的多个内容服务器上接收状态信息,并确定各内容服务器的状态;服务器列表提供模块,用于当从用户客户机接收到内容请求信息时,提供将要传输被请求内容的流数据的服务器的列表信息;其中,通信代理程序安装在用户客户机中,该通信代理程序使用服务器列表信息控制用户客户机与至少两个内容服务器建立连接,和确定将从各已连接内容服务器下载的流数据的子块以请求子块,以及通过监视各已连接节点的子块下载状态来重新分配将要下载的子块。


图1是应用本发明的流数据传输系统的结构示意图。
图2是应用根据本发明的传输流数据的方法的网络系统的实例。
图3是应用根据本发明的传输流数据的方法的网络系统的另一实例。
图4是应用根据本发明的传输流数据的方法的网络系统的又一实例。
图5是根据本发明优选实施例流数据的结构。
图6是根据本发明优选实施例流数据下载方法的流程图。
图7是根据本发明优选实施例连接控制服务器的操作的流程图。
图8是根据本发明另一实施例连接控制服务器的操作的流程图。
图9是根据本发明优选实施例安装于用户客户机中的代理程序的框图。
图10是根据本发明优选实施例连接控制模块的详细框图。
图11是根据本发明优选实施例通过确定连接状态来重新分配子块的处理的流程图。
图12是根据本发明优选实施例当存在已完成子块下载的连接时执行的处理的流程图。
图13是根据本发明优选实施例连接控制服务器的模块的框图。
图14是根据本发明另一实施例连接控制服务器的模块的框图。
具体实施例方式
利用下面的实施例来具体描述本发明。
图1是应用本发明的流数据传输系统的结构示意图。
参考图1,根据本发明的流数据传输系统可以包括多个节点100、102、104、106、108、110和用户客户机112。
用户客户机建立与所选择的多个节点102、106、108的连接并下载流数据。
在图1中,多个节点100、102、104、106、108、110存储内容数据并在收到来自用户客户机的内容请求信息之后,向用户客户机传输被请求的内容数据。节点可以是通常传输内容的服务器或者其它用户客户机。
用户客户机112传输内容请求信息至多个节点,并且从相应节点102、106、108下载内容数据。换句话说,根据本发明,通过多个节点从多条路径下载流数据。
此时,用户客户机向已建立连接的各节点发出对不同流数据的请求,并组合(assemble)从多个节点下载的流数据。
图5是根据本发明优选实施例流数据的结构。
参考图5,基于本发明的流数据包括多个块500,并且各块包括多个子块502。
块和子块是用于对流数据分类的逻辑单元,并且本领域的技术人员很明显可以使用其它的术语。
与普通的文件下载不同,流数据应当边下载边播放。因此,通过多个服务器的普通文件下载方法不能应用于流数据下载,这是因为通常整个文件数据被分成N段,每一段通过多条路径下载。根据传统的使用多路径的文件下载方法,直到全部文件数据下载完时才能播放被下载的文件,而流数据则应该边下载边播放。
因此,根据本发明,整个流数据被分割为多个块,并且包含在块中的子块以并行/分布(parallel/distribution)的方法从多条路径下载。
例如,在图1所示系统中,如果一个块包含十个子块,用户客户机112向第二节点102请求第1~3子块,向第四节点106请求第4~7子块,以及向第五节点108请求第8~10子块。
如果下载完包含在一个块中的所有子块,则用户客户机112请求包含在下一个块的子块。在下载完一个块的所有数据之后,下载下一个块的子块,因此尽管数据从多条路径下载,数据也能够在下载时被播放。
然而,在图5中,流数据被分割成块和子块的情况下,对于本领域的技术人员,很明显流数据可以被分割为比子块更小的单元,并且能够以该更小的单元传输。
当用户客户机向各节点发出对子块的请求时,用户客户机确定各节点的连接状态。例如,在第二节点102、第四节点106和第五节点108中,如果第二节点的连接状态最好而第五节点的连接状态最差,则用户客户机112向第二节点发出对最大数目的子块的请求,而对第五节点仅请求最小数目的子块。将会参考其它图,详细解释确定节点状态以及根据确定结果来请求子块的方法。
当通过多条路径下载子块时,某一个连接上的子块下载可能比其它连接完成的早,这种情况下,在其它连接的子块下载完成之前,不会从已完成子块下载的连接处传输数据。此类的空闲连接降低了传输效率。
因此,根据本发明,如果多个连接中的一个连接的子块下载完成时,将通过已完成子块下载的连接来下载未传输的子块。将会参考其它图,详细解释当一个连接的子块下载完成时重新分配将被下载的子块的方法。
图2是应用根据本发明的传输流数据的方法的网络系统的实例。
图2示出应用使用了P2P(Peer to Peer,即伙伴对伙伴,对等网络)的流数据传输方法的实例。
参考图2,应用本发明的网络系统可以包括连接控制服务器200和多个客户机202、204、206、208、210、212、214以及216。
连接控制服务器200接收来自用户客户机的内容请求信息,并响应该内容请求消息,将存储有被请求内容的其它用户客户机的地址信息提供给请求内容的用户。请求内容的用户客户机使用所提供的地址信息,通过多条路径下载内容的流数据。
例如,如果用户客户机210向连接控制服务器200请求电影“A”,连接控制服务器200获得存储有电影“A”的用户客户机的地址信息,并将该地址信息提供给请求内容的用户客户机210。
地址信息可以是IP地址和端口号,并且对于本领域的技术人员很明显能够使用其它的地址识别信息。
例如,我们假设在图2中存储有电影“A”的用户客户机的标号为202、204和208。如果连接控制服务器向请求内容的用户客户机210提供客户机201、204和208的地址信息,则用户客户机210尝试与用户客户机202、204和208建立连接。
如果建立起连接,用户客户机210向建立了连接的客户机202、204和208各请求不同的子块。如果下载完包含在一个块中的所有子块,则用户210请求包含在下一块中的子块。所传输的流数据存储于用户客户机。如果其它客户机请求该流数据,则所存储的流数据被传输。
用于与连接控制服务器或其它客户机通信的通信代理程序被安装在各用户客户机中。在本发明的实施例中,描述了通信代理是计算机软件的情况,然而,对于本领域的技术人员,很明显通信代理可以是独立的设备或卡(card)。
如果安装有通信代理的客户机的电源开启或者执行通信代理,代理程序将存储在该用户客户机中的内容信息传输给连接控制服务器200,并且连接控制服务器200存储该所传输的信息。
图3是应用本发明的流数据传输方法的网络系统的另一实例。
图3示出了通过多个服务器提供流数据的情况。
参考图3,根据本发明实施例的流数据传输系统可以包括多个内容服务器300、302、304、306、308、连接控制服务器310以及用户客户机312。
连接控制服务器310从用户客户机312接收内容请求信息,并提供多个服务器300、302、304、306、308中应当连接用户客户机的服务器信息。
连接控制服务器310定期的从多个服务器300、302、304、306、308接收状态信息,并控制将要连接到状态良好的服务器的用户客户机。
用户客户机312从连接控制服务器310接收服务器列表信息,并与列表中的内容服务器建立连接,以通过多条路径下载流数据。
如图2所示的情况,通信代理程序安装在用户客户机中,以通过多条路径下载流数据。
图4是应用本发明的流数据传输方法的网络系统的又一实例。
图4是图2的P2P(对等网络)系统与图3的多个服务器系统组合的系统。
参考图4,根据本发明优选实施例的流数据传输系统可以包括连接控制服务器410,多个内容服务器400、402、404、406、408和多个客户机412、414、416、418、420、422、424、426、428。尽管图4中示出了多个内容服务器,内容服务器的数量也可以不同于图4。
在图4中,连接控制服务器410从用户客户机接收内容请求信息,并提供存储有被请求内容的服务器或用户客户机的列表信息。
如图2和图3所示,代理程序安装在用户客户机412、414、416、418、420、422、424、426、428,并且当客户机开启电源或执行代理程序时,代理程序将存储在客户机中的内容信息传输给连接控制服务器410。
请求内容的用户客户机利用连接控制服务器410提供的列表信息与内容服务器或客户机建立连接,并向已建立连接的客户机或内容服务器传输对不同子块的请求以下载流数据。
在图4的情况下,由连接控制服务器410提供的节点列表可以同时包括用户客户机和服务器。例如,如果从5个节点接收内容数据,可以一个节点是内容服务器,而其它4个节点是用户客户机。在此情况下,根据本发明的优选实施例,为减少内容服务器的负荷,如果从除内容服务器外的用户客户机的下载状态良好,则可以将内容服务器排除在节点之外。
在图2到图4中,描述了能够通过多条路径下载流数据的系统。对于本领域的技术人员,显而易见除图2到图4的系统之外的其他能够通过多个节点传输数据的系统也可应用到本发明中。
图6是根据本发明优选实施例的流数据下载方法的流程图。
参考图6,用户客户机从连接控制服务器接收节点列表信息S600。在图2所示的系统中,节点是存储有内容的用户客户机。在图3所示的系统中,节点是多个内容服务器,而在图4所示系统中,节点可以既包括用户客户机又包括内容服务器。
如果接收到节点列表信息,用户客户机就与包含在节点列表中的某些或所有节点建立连接S602。根据本发明的优选实施例,用户客户机建立TCP连接,其他的连接建立方法也可以被使用。如果连接建立失败,就将连接建立失败的节点信息存储于黑名单队列中,并且在后续的连接建立中,连接建立不再尝试存储在黑名单队列中的节点。
如果建立起连接,用户客户机确定与节点的连接状态,并确定将被从节点下载的子块数目S604。
根据本发明的实施例,使用相对于各节点的往返时间或从各节点的下载速度来确定连接状态。
根据本发明的另一实施例,可以不通过下载的初始状态的连接状态信息来确定将要下载的子块。例如,如果从3个节点下载流数据并且一个块中包含15个子块,则用户客户机向3个节点中的每一个请求5个子块。
如果确定了将被从各节点下载的子块,则用户客户机向建立了连接的节点发出传输子块的请求S606。用户客户机可以向建立了连接的所有节点或者建立了连接的某些节点发出对子块的请求。
用户客户机从建立了连接的节点下载子块S608。尽管未在图6中示出,用户客户机在接收子块时确定是否发生下载错误。根据本发明的优选实施例,通过检查子块的校验和(checksum)值来确定下载错误的发生。
可选的,也可通过在接收完所有块后检查块的校验和值来确定下载错误。
当接收子块时,用户客户机确定是否存在所有被请求子块都已下载完的连接S610。
如果存在所有被请求子块都已下载完的连接,则用户客户机将未完成下载的子块重新分配给已完成子块下载的连接,以从该连接下载重新分配后的子块,从而已完成子块下载的连接不会变成空闲状态。
用户客户机确定是否包含于一个块中的所有子块都已下载S614。
如果所有子块已下载完,则用户客户机重复该处理,即确定将被从各节点通过多条路径下载的下一个块中的子块数目S604。
重复S610到S614的步骤,直到接收完一个块中的所有子块。
参考图6所示,根据本发明,如果在一条路径(=连接)上完成了子块下载,则重新分配将被从各节点下载的子块,以免空闲状态的发生,从而提高数据下载效率。
在图6中,示出了为向用户客户机传输流数据的节点重新分配子块的情况。然而,对于本领域的技术人员,显而易见也可以通过监视未被请求传输子块的节点的状态来为没有传输子块的节点重新分配子块。
此外,尽管未在图6中示出,如果不能从多个节点下载流数据,则可以将下载模式改变为以传统模式从单一服务器下载流数据。
图7是根据本发明优选实施例的连接控制服务器的操作的流程图。
图7示出了图2的P2P网络中或者P2P与多个服务器结合的网络中连接控制服务器的操作。
参考图7,连接控制服务器从已连接节点接收地址信息和内容信息S700。如上所述,通信代理程序安装在各用户客户机(节点)中,并且通信代理程序向连接控制服务器传输存储在用户客户机中的内容信息和用户客户机的地址信息。所接收到的节点地址信息和节点内容信息存储在连接控制服务器的数据库中。
连接控制服务器从已连接节点接收内容请求信息S702。利用在步骤S700接收的信息,接收到内容请求信息的连接控制服务器搜索存储有被请求内容的节点S704。
连接控制服务器向请求内容数据的用户客户机提供节点列表信息S706。
尽管未在图7中示出,连接控制服务器也可以接收节点状态信息(例如,PING信息),并且将节点状态信息与节点列表信息一起提供给用户客户机。
在接收到节点列表信息之后,用户客户机利用状态信息选择将要建立连接的节点。如果连接建立失败或者数据下载速率不高,用户客户机使用节点状态信息选择将要建立连接的新节点。节点状态信息能够被持续更新,更新后的信息被提供给请求内容数据或者正在下载数据的用户客户机。
图8是根据本发明另一实施例的连接控制服务器的操作的流程图。
图8示出了使用多个服务器的连接控制服务器网络例如图3的操作。
参考图8,连接控制服务器从各内容服务器接收状态信息S800。根据本发明的优选实施例,状态信息可以是从包括带宽信息、CPU使用率信息、内存使用率信息、连接用户数和文件I/O信息的组中选择的一个或组合。对于本领域的技术人员,显而易见除上述信息以外的其它信息也可被用作服务器的状态信息。
连接控制服务器从用户客户机接收内容请求信息S802。
接收内容请求信息的连接控制服务器使用在S800中的状态信息将具有优良状态的服务器的地址信息(换句话说,节点列表信息)提供给请求内容的客户机,以及将子块分配信息(关于将被从各内容服务器下载的子块的信息)S804提供给请求内容的客户机。
在图8中,示出了从连接控制服务器将子块分配信息传输给用户客户机的情况,然而,对于本领域的技术人员,显而易见客户机自己可以通过在连接到内容服务器之后检查连接状态来分配子块以下载。
根据本发明的另一实施例,在数据下载的初始状态,连接控制服务器提供子块分配信息。然后,如果完成了块数据的下载,由于内容服务器可以决定各内容服务器的下载速度。用户客户机自己分配子块,以在下一子块的下载中从各内容服务器下载。
图9是根据本发明优选实施例安装在用户客户机中的代理程序的框图。
参考图9,根据本发明优选实施例的通信代理程序可以包括代理管理器模块900、高速缓存管理器(cache manager)模块902、连接控制模块904、节点管理器模块906、块管理器模块908和子块管理器模块910。
在图9中,代理管理器模块900执行与连接控制服务器的通信,并在用户客户机开启电源或者执行代理程序时,向连接控制服务器提供包含IP地址和端口号的用户客户机信息以及存储在用户客户机中的内容的信息。
此外,当用户请求内容时,代理管理器模块900向连接控制服务器提供内容请求信息。当播放被请求内容需要元(meta,或者称背景)信息时,代理管理器模块可以向播放内容数据的播放器提供内容的元信息。
高速缓存管理器模块902管理从节点下载的流数据。高速缓存管理器模块902提供高速缓存的剩余容量的信息以及存储在高速缓存中的内容的信息。当用户客户机开启电源或者执行代理程序时,高速缓存管理器模块902提供存储在高速缓存中的内容的信息。根据本发明的优选实施例,高速缓存管理器模块902在存储下载的数据时,对下载的数据加扰(scramble)。
连接控制模块904根据从连接控制服务器接收的节点列表信息与预定数目的节点建立连接。连接控制模块904通过确定节点的连接状态来分配将被从各节点下载的子块,并根据分配的结果向各节点请求子块。
此外,连接控制模块904持续监视各节点的下载状态,并且根据监视结果重新分配将被从各节点下载的子块。
根据本发明的优选实施例,连接控制模块904监视是否存在已完成子块下载的连接,并且连接控制模块904在已完成子块下载的连接和未完成子块下载的某些连接之间重新分配子块,以避免空闲连接。
根据本发明的另一实施例,尽管不存在已完成子块接收的连接,也可根据各节点的下载状态来提前重新分配子块。
根据本发明的又一实施例,连接控制模块监视未建立连接的节点的状态信息,并在某些正在传输数据的节点和某些尚未传输数据的节点之间重新分配子块。
如上所述,在图4的系统中,连接控制模块既向服务器又向用户客户机请求数据,如果从用户客户机的下载状态是好的,服务器就可以被排除在节点之外或者仅向服务器请求少量的数据,以降低服务器的负荷。
节点管理器模块906将提供自连接控制服务器的节点列表信息提供给连接控制模块904。如上所述,节点列表信息可以包括IP地址和端口号。根据本发明的优选实施例,代理管理器模块900请求存储有被请求内容的节点的信息,并向节点管理器模块906提供节点列表信息。由于节点的电源可能被关闭或者连接状态可能变得不稳定,所以持续更新节点信息。
子块管理器模块910从节点下载子块,并确定是否已下载完一个块中的所有子块。如果已下载完所有子块,则子块管理器模块910将下载所得的块数据提供给块管理器模块908。如果子块管理器模块确定已下载完包含在一个块中的所有子块,则连接控制模块请求下一个块的子块。
块管理器模块908向播放流数据的播放器或高速缓存管理器模块提供接收到的块数据。
尽管图9中未示出,通信代理程序还可包括预留(reservation)管理器模块。当高速传输流数据时,可能发生由于互联网连接的不稳定而使客户机不能以预定速度下载数据的情况。这种情况下,在播放电影数据之前,通过预留管理器模块将电影数据预存在高速缓存中,并且预留管理器模块执行预留处理。
预留管理器模块管理用户要求预留的流数据的信息,并监视是否收到预留的内容。预留管理器模块通过连接控制模块来请求数据,直到完成被请求数据的下载为止。
图10是根据本发明优选实施例的连接控制模块的详细框图。
参考图10,连接控制模块可以包括连接建立模块1000、连接状态确定模块1002、子块分配模块1004和下载状态监视模块1006。
连接建立模块1000使用提供自连接控制服务器提供的节点列表信息,与数据将被下载的节点建立连接。连接建立可以包括如下步骤
(i)用户客户机向节点发出TCP连接请求。
(ii)节点确定是否允许TCP连接。
(iii)节点允许TCP连接。
如上所述,也可使用TCP以外的其它连接建立方法。
连接状态确定模块1002确定与各节点的连接状态。连接状态确定模块1002计算连接状态评估指数,用于确定连接状态。
根据本发明的实施例,可以根据相对于各节点的往返时间来计算连接状态评估指数。
根据本发明的另一实施例,可以根据各节点的下载速度信息来计算连接状态评估指数。可选的,可以既用往返时间又用下载速度来计算连接状态评估指数。
适当的做法是,在开始时使用往返时间计算连接状态评估指数,这是因为开始时不知道下载速度,然后在执行完数据下载后使用下载速度计算连接状态评估指数。由于下载速度不断变化,连接状态评估指数也根据下载速度的变化而更新。
根据本发明的另一实施例,连接状态确定模块从服务器接收服务器状态信息,并使用该状态信息确定连接状态。
子块分配模块1004使用由连接状态确定模块1002计算所得的连接状态评估指数来分配子块。优选的,子块分配模块1004根据连接状态评估指数的比值来确定从各节点下载的子块的数目。
下载状态监视模块1006确定是否存在已完成子块下载的连接,并且当存在已完成子块下载的连接时向子块管理器模块1004请求子块的重新分配。
为所有已连接节点都重新分配子块是效率不高的,这是由于控制信号需要被传输到所有节点。因此,根据本发明的优选实施例,在已完成子块下载的连接和下载速率最低的连接之间重新分配子块。在此情况下,控制信号只需传输到已完成子块传输的节点和数据传输速率最低的节点。
图11是根据本发明优选实施例通过确定连接状态来重新分配子块的处理的流程图。
参考图11,在下载的初始状态测量相对于各已连接节点的往返时间S1100。往返时间指在传输检测信号至已连接节点和接收对检测信号的响应信号之间的持续时间。
在测得往返信号后,确定是否可以得知所有连接的平均下载速度S1102。如果已下载完几个块,就能够知道所有连接的平均下载速度。
当得知所有连接的平均下载速度时,使用平均下载速度信息来计算连接状态评估指数S1104。例如,当从3个节点下载流数据且3个节点的平均下载速度是500,000bps、100,000bps和64,000bps时,各连接的连接状态评估指数分别是500,000、100,000和64,000。平均下载速度的标准化值(normalizedvalue)也可被用作连接状态评估指数。
当不能得知所有连接的平均下载速度时,就确定是否可以知道某些连接的平均下载速度S1106。这种情况可能发生在下载流数据的同时从新的节点下载流数据时。
当能够得知某些连接的平均下载速度时,根据往返时间和平均下载速度来计算连接状态评估指数S1108。
例如,假设从3个节点下载流数据并且第一节点的平均下载速度是200,000bps,第二节点的平均下载速度是100,000bps,而第三节点的平均下载速度未知。此外,假定第一节点的往返时间是23ms,第二节点的往返时间是32ms,而第三节点的往返时间是20ms。
在此情况下,通过(下载速度)/(往返时间)来计算连接状态评估指数。用(下载速度)/(往返时间)的最小值来预测第三节点的平均下载速度。由于第二节点的(下载速度)/(往返时间)最小,第三节点的平均下载速度就可通过下面的方程1计算。
100,0020×32=160,500]]>如果不能得知所有连接的平均下载速度,则根据往返时间计算连接状态评估指数。根据本发明的实施例,往返时间的倒数可被用为连接状态评估指数。
例如,假设从3个节点下载流数据,并且各节点的往返时间为23ms、41ms和32ms。这种情况下,各节点的连接状态评估指数分别为1/23、1/42和1/32。
在计算出连接状态评估指数后,确定在所有子块中从各节点下载的子块数目。
根据连接状态评估指数确定从各节点下载的子块数目。具体地,通过下面的方程2确定下载的子块数目。
其中,i=1~n-1 其中,i=n其中,Pi是准备向各节点请求的子块的数目,αi是各连接的连接状态评估指数。换句话说,用户客户机向各节点请求数目为Pi的子块。
图12是根据本发明优选实施例当存在已完成子块下载的连接时执行的处理的流程图。
参考图12,连接控制模块的下载状态监视模块监视是否存在已完成子块下载的连接S1200。
如果存在已完成子块下载的连接,则搜索下载速率最低的连接S1202。通过(下载子块数目)/(请求的子块数目)计算下载速率。
当搜索到下载速率最低的连接时,计算将在该下载速率最低的连接下载的剩余子块的数目S1204。
在计算出下载速率最低的连接上的剩余子块数目后,确定是否有必要在已完成子块下载的连接和下载速率最低的连接间重新分配将被下载的子块S1206。例如,如果在传输用于重新分配子块的控制信号的同时就可以下载剩余的子块,则子块的重新分配就没有必要。
如果确定有必要进行子块的重新分配,根据连接状态评估指数重新分配将被从已完成子块下载的连接和下载速率最低的连接下载的子块S1208。
子块可通过下面的方程3进行分配。
P2=剩余子块数目-P1P1是被重新分配给下载速率最低的连接的子块数目,α1是下载速率最低的连接的连接状态评估指数,P2是被重新分配给已完成子块下载的连接的子块数目,以及α2是已完成子块下载的连接的连接状态评估指数。
如果已重新分配子块,则向相应于根据新的分配结果的各连接的节点请求子块。如果没有必要从子块下载速率最低的连接下载子块,用户客户机向相应节点请求停止子块传输。
图13是根据本发明优选实施例连接控制服务器的模块框图。
图13示出了在图12中的P2P网络的系统或者在如图4的多个服务器与P2P组合的系统中的连接控制服务器的模块。
参考图13,根据本发明实施例的连接控制服务器可以包括网格管理器模块1300、节点信息提供模块1302以及认证模块1304。用户数据库1306、网格信息数据库1308以及网格信息数据库1310也可被包含到连接控制服务器。
在图13中,网格管理器模块1300管理连接至连接控制服务器的用户客户机的信息。如上所述,当用户客户机开启电源或者执行通信代理程序时,客户机地址信息和存储于客户机的内容的信息被传输到连接控制服务器,网格管理器模块1300接收该信息并将其存储在网格信息数据库1310中。
当用户请求一特定内容时,节点列表提供模块1302使用网格信息数据库1310得到存储有相应内容的节点信息,并将所得到的信息提供给用户客户机。
认证模块1304对客户机进行认证并处理计费信息。当用户请求内容时,包含用户ID和口令(password)的认证密钥信息被传输到连接控制服务器,然后认证模块1304确定用户是否是已注册用户。此外,认证模块1304通过与外部计费系统通信来确定是否用户已经为该内容付费。
已注册用户的ID、口令、个人信息等存储于用户数据库1306,而内容编码方法、作者信息等存储于元信息数据库1308。如果请求内容的用户已被授权,则网格管理器模块1300向用户提供元信息。通常,元信息对于流数据的播放是必要的,然而,如果没有元信息也能播放流数据,元信息数据库1308也可以不耦合至连接控制服务器。
连接到连接控制服务器的用户客户机的信息和存储在各用户客户机的内容的信息被存储在网格信息数据库中1310。
图14是根据本发明另一实施例的连接控制服务器的模块框图。
参考图14,连接控制服务器可以包括服务器状态确定模块1400、子块分配模块1402、服务器列表提供模块1404以及认证模块1406。用户数据库1408、内容服务器数据库1410和元信息数据库1412可以耦合至连接控制服务器。
服务器状态确定模块确定由连接控制服务器管理的内容服务器的状态信息。如上所述,服务器状态确定模块1400使用包括带宽、CPU使用率、内存使用率、已连接用户数和文件I/O等的信息,来确定各内容服务器的状态。
子块分配模块1402使用内容服务器的状态信息,向请求内容的用户客户机提供将被从各内容服务器下载的子块的数目信息。
连接控制服务器管理的内容服务器的信息被存储在内容数据库1410中。
认证模块1406的功能和存储在用户数据库1408与元信息数据库1412中的信息与图13的情况相同。
工业实用性如上所述,根据本发明,由于通过多条路径提供流数据,所以尽管在一个连接上发生错误也能够提供稳定的流业务(streaming service)。
此外,根据本发明,由于在一个连接中完成子块下载时就重新分配将被下载的子块,可以避免空闲连接的发生,从而提高下载效率。
特别的,当在P2P网络中通过多个节点下载流数据时本发明是有效的。
权利要求
1.一种用于下载流数据的方法,其步骤包括(a)与多个节点建立连接;(b)向已建立连接的多个节点发出对流数据的子块的请求,以下载这些子块;(c)监视已建立连接的下载状态;以及(d)根据监视结果,重新分配将被从已建立连接的某些节点下载的子块;其中,当下载完一个块所包括的所有子块时,重复步骤(b)到步骤(d)以下载下一个块所包括的子块。
2.如权利要求1所述的方法,还包括确定将从已建立连接的各节点下载的子块的步骤。
3.如权利要求1所述的方法,其中,步骤(c)包括监视是否存在已完成子块下载的连接的步骤。
4.如权利要求2所述的方法,其中,通过计算连接状态评估指数,来确定将被从各节点下载的子块。
5.如权利要求4所述的方法,其中,使用选自包含相对于各节点的往返时间和从各节点的平均下载速度的组中的信息,来计算该连接状态评估指数。
6.如权利要求3所述的方法,其中,步骤(d)包括当存在已完成子块下载的连接时,在已完成子块下载的连接和未完成子块下载的某些连接之间重新分配子块的步骤。
7.如权利要求6所述的方法,其中,步骤(d)包括在已完成子块下载的连接和未完成子块下载的连接中的下载速率最低的连接之间重新分配子块的步骤。
8.如权利要求7所述的方法,在已完成子块下载的连接和下载速率最低的连接之间重新分配子块的步骤包括以下步骤确定已完成子块下载的连接和下载速率最低的连接的下载速度;确定将在下载速率最低的连接中下载的剩余子块的数目;确定是否需要重新分配子块;如果需要重新分配子块,则根据下载速率在已完成子块下载的连接和下载速率最低的连接之间重新分配剩余子块。
9.如权利要求1所述的方法,还包括将连接建立失败的节点的信息存储在黑名单队列中的步骤。
10.如权利要求2所述的方法,还包括接收节点状态信息的步骤,其中,使用该节点状态信息来确定将被从各节点下载的子块。
11.如权利要求2所述的方法,其中,使用在下载初始状态中的节点的状态信息来确定将被从各节点下载的子块,在确定了从各节点的下载速度后,使用连接状态评估指数来确定将被从各节点下载的子块;其中,使用选自包含相对于各节点的往返时间和从各节点的平均下载速度的组中的信息,来计算该连接状态评估指数。
12.如权利要求10所述的方法,其中,在步骤(a)中,使用节点的状态信息,来执行与多个节点的连接建立。
13.如权利要求1所述的方法,还包括使用已下载子块的校验和值来确定下载错误的步骤。
14.如权利要求1所述的方法,还包括在重新分配子块之后,使用该重新分配结果向相应节点发出对子块的请求的步骤,以下载重新分配后的子块。
15.如权利要求1所述的方法,还包括如果从多个节点下载子块失败时,通过连接到单个服务器来下载流数据的步骤。
16.如权利要求1所述的方法,还包括步骤监视已建立连接的节点中尚未传输数据的节点状态信息;在正在传输数据的某些节点和尚未传输数据的某些节点之间重新分配将被下载的子块。
17.一种通信代理程序,安装在一系统中的多个用户客户机中,在该系统中,连接控制服务器和该多个用户客户机通过网络连接,包括代理管理器模块,用于将存储在用户客户机中的内容信息和用户客户机的识别信息提供给连接控制服务器,以及当用户请求内容时将内容请求信息传输至连接控制服务器;节点信息管理器模块,用于接收和存储存储有被请求内容的节点的列表信息;连接控制模块,用于使用节点的列表信息与多个节点建立连接,确定将从已建立连接的各节点下载的子块以请求子块,以及通过在下载子块的同时监视下载状态来重新分配将从某些已连接节点下载的子块;子块管理器模块,用于确定是否已下载完一个块所包括的所有子块,以及当下载完一个块所包括的所有子块时,请求下一个块所包括的子块,以下载下一个块所包括的子块。
18.如权利要求17所述的程序,其中,该连接控制模块在已完成子块下载的连接和未完成子块下载的某些连接之间重新分配子块。
19.如权利要求18所述的程序,该通信代理模块包括连接建立模块,用于与该节点列表中所包含的节点建立连接;连接状态确定模块,用于确定已建立连接的节点的连接状态;子块分配模块,用于使用连接状态信息来分配将被从已建立连接的节点下载的子块;下载状态监视模块,用于当存在已完成被请求子块的传输的节点时,向子块分配模块请求在已完成子块下载的连接和下载速率最低的连接之间重新分配子块;其中,作为对下载状态监视模块发出的对子块重新分配的请求的响应,子块分配模块根据下载速度在已完成子块下载的连接与下载速率最低的连接之间重新分配将被下载的子块。
20.如权利要求19所述的程序,其中,连接状态确定模块使用选自包含相对于各节点的往返时间和从各节点的平均下载速度的组中的信息,来确定连接状态。
21.如权利要求19所述的程序,其中,连接状态确定模块通过从连接控制服务器接收节点状态信息,来确定连接状态。
22.如权利要求19所述的程序,其中,连接建立模块使用连接控制服务器提供的节点状态信息来建立连接,如果连接建立失败,连接建立模块使用节点状态信息与其它节点建立连接。
23.如权利要求19所述的程序,连接建立模块在连接建立失败时,将连接建立失败的节点的信息存储在黑名单队列中。
24.如权利要求17所述的程序,该子块管理器模块使用子块校验和值来确定下载错误。
25.如权利要求17所述的程序,还包括高速缓存管理器模块,用于以不规则状态存储所下载的流数据并管理所存储的数据。
26.如权利要求25所述的程序,还包括块管理器模块,用于当一个块所包括的所有子块都下载完时,将块数据提供给高速缓存管理器模块或播放流数据的播放器。
27.如权利要求17所述的程序,还包括预留管理器模块,用于将预留请求信息传输给连接控制服务器,并管理所预留的内容信息。
28.如权利要求17所述的程序,其中,连接控制模块监视已建立连接的各节点中尚未传输数据的节点的状态,并根据该监视结果在尚未传输数据的某些节点和正在传输数据的某些节点之间重新分配子块。
29.一种通信代理程序,安装在从一系统下载流数据的用户客户机中,该系统包括多个内容服务器和至少一个连接控制服务器,包括数据请求模块,用于向该连接控制服务器发出传输数据的请求;节点信息管理器模块,用于接收和存储将下载被请求数据的内容服务器的列表;连接控制模块,用于与内容服务器列表中所包括的多个内容服务器建立连接,请求将从已建立连接的内容服务器下载的流数据的子块,以及通过在从已连接内容服务器下载子块的同时监视下载状态,来重新分配将从已建立连接的某些内容服务器中下载的子块;以及子块管理器模块,用于确定是否已下载完一个块所包括的所有子块,并且当已下载完一个块所包括的所有子块时,请求下一个块所包括的子块,以下载下一个块的子块。
30.如权利要求29所述的程序,其中,连接控制模块在已完成子块下载的连接和未完成子块下载的某些连接之间重新分配子块。
31.如权利要求30所述的程序,其中,连接控制模块包括连接建立模块,用于与内容服务器列表中所包括的内容服务器建立连接;连接状态确定模块,用于确定已连接内容服务器的连接状态;子块分配模块,用于使用连接状态信息来分配将被从每个已连接内容服务器下载的子块;下载状态监视模块,用于当存在已完成子块下载的连接时,请求在已完成子块下载的连接和下载速率最低的连接之间重新分配子块;其中,作为对该下载状态监视模块的请求的响应,子块分配模块根据已完成子块下载的连接和下载速率最低的连接的下载速度来重新分配子块。
32.如权利要求31所述的程序,其中,连接状态确定模块使用连接状态控制服务器所提供的内容服务器状态信息来确定连接状态。
33.一种连接控制服务器,通过网络与多个用户客户机连接,用于控制用户客户机之间的连接,以使用户客户机能够通过连接其他用户来下载流数据,包括网格管理器模块,用于接收存储在已连接的多个用户客户机的内容的信息和已连接的多个用户客户机的地址信息,以及将存储有被请求内容的节点信息提供请求内容的用户客户机;以及网格信息数据库,用于存储每个用户客户机所存储的内容的信息和每个用户客户机的地址信息;其中,通信代理程序安装在该多个用户客户机中,该通信代理程序使用节点信息控制用户客户机与多个节点建立连接,和向已连接节点发出对将要下载的流数据的子块的请求,以及通过监视各已连接节点的下载状态来重新分配将要下载的子块。
34.如权利要求33所述的服务器,还包括用于对用户进行认证和处理计费信息的认证模块。
35.如权利要求33所述的服务器,还包括用于存储已注册用户的信息的用户数据库和用于存储流数据的元信息的元信息数据库。
36.如权利要求33所述的服务器,其中,网格管理器模块接收各节点的状态信息,并提供节点信息的状态信息。
37.一种连接控制服务器,通过网络与多个用户客户机和多个内容服务器连接,用于控制用户客户机和内容服务器之间的连接,以使用户客户机能够通过连接到至少两个内容服务器来下载流数据,包括服务器状态检测模块,用于从已连接的多个内容服务器上接收状态信息,并确定各内容服务器的状态;服务器列表提供模块,用于当从用户客户机接收到内容请求信息时,提供将要传输被请求内容的流数据的服务器的列表信息;其中,通信代理程序安装在用户客户机中,该通信代理程序使用服务器列表信息控制用户客户机与至少两个内容服务器建立连接,和确定将从各已连接内容服务器下载的流数据的子块以请求子块,以及通过监视各已连接节点的子块下载状态来重新分配将要下载的子块。
38.如权利要求37所述的服务器,其中,内容服务器所提供的状态信息选自包括带宽信息、CPU使用率信息、内存使用率信息、连接用户数和文件I/O信息的组中。
全文摘要
公开一种传输和下载流数据的方法。该方法包括(a)与多个节点建立连接;(b)向已建立连接的多个节点发出对流数据的子块的请求,以下载子块;(c)监视已建立连接的下载状态;以及(d)根据监视结果,重新分配将被从已建立连接的某些节点下载的子块;其中,当下载完包括在一个块中的所有子块时,重复步骤(b)到步骤(d),以下载包含在下一个块中的子块。
文档编号G06F17/00GK1723452SQ200480001683
公开日2006年1月18日 申请日期2004年1月5日 优先权日2003年1月17日
发明者金尚贤 申请人:Nhn株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1