一种多点下载的方法

文档序号:7628872阅读:298来源:国知局
专利名称:一种多点下载的方法
技术领域
本发明涉及互联网络文件传输领域,特别涉及一种多点下载的方法。
背景技术
点对点(P2P)的多点下载模式正在成为互联网络上越来越流行的下载方式,BitTorrent(简称BT)正是采用这种下载方式的一款非常流行的下载软件,其基本思想为每个下载客户端同时又是文件提供者,通过下载客户端之间相互协作,充分利用网络资源。这里,下载客户端又称作节点。而传统的超文本传输协议(HTTP)以及文件传输协议(FTP)采用中心服务器作为单一的文件提供者,中心服务器所需的网络带宽随着下载客户端的增加而线性增长。因此BT下载方式有效的避免了HTTP和FTP下载方式的服务器带宽瓶颈问题,大大提高下载速度。
BT下载的原理图如图1所示。所下载的文件A被分成了一定数目的数据块,客户端彼此互相连接,从对方下载本地没有的文件数据块。其中客户端a是一种特例,用来提供最初的文件来源,专门提供下载,而不从别的客户端下载数据,因此被称为内容提供者(CP)。此外还有辅助服务器(Tracker)帮助客户端彼此建立连接。
为了便于说明,下面以客户端b为例说明下载过程。在下载的最初阶段,客户端b从Tracker服务器处获取下载列表(Downloading Peers Table,DPT),列表中记录着同时在下载文件A的客户端,在图1所示的例子中,所述同时在下载文件A的客户端为客户端a~客户端f。在实际的下载中,由于客户端的数目很大,某一客户端从Tracker服务器处获得的下载列表可能只是整个下载列表中的一部分。客户端b向下载列表中的全部或者部分客户端发起连接,图1中,与客户端b相连的有客户端a、客户端c和客户端f。一旦连接建立,就交换各自拥有的数据块信息,从而知道对方是否有自己需要的数据块,如果有则进行数据请求与传输;如果没有,则此次连接被称为无效连接。客户端b按照一定的策略,例如每隔一段时间,从Tracker服务器处获取新的下载列表,以此更新本地下载列表,扩大可连接客户端的范围。比如在图1中,扩大连接范围是指与尚未连接的客户端d或客户端e建立连接。
从以上BT下载的原理描述中可以看出,该下载方法存在着以下的缺点下载客户端拥有的本地下载列表信息全部来自Tracker服务器,如果Tracker服务器发生故障而无法正常工作,则下载客户端无法获取新的下载列表,如果本地下载列表中的客户端无法拼凑出一个完整的数据文件所包括的所有数据块的拷贝,那么下载就无法完成;客户端只能得知与之连接的其他客户端上的数据块信息,对于未连接客户端上的数据块分布信息则一无所知,当一个下载过程刚开始的时候,由于下载客户端自身的数据块很少,所连接的其他客户端中有大量自己需要的数据块,因此很轻易就能找到所需要下载的数据块;然而,随着本地已下载数据块的增加,所需要的数据块越来越少,从连接的客户端中找到这些数据块的几率也越来越小,即无效连接的比例不断上升,到了下载的最后阶段,无效连接会占用很大的开销,从而极大的影响了下载的速度。

发明内容
有鉴于此,本发明的目的在于,提出一种多点下载的方法,减少客户端对Tracker服务器的依赖,并在一定的开销范围内,降低无效连接率,提高下载速度。
该方法即在多点下载的过程中引入了协助查找的机制,包括如下步骤A、第一客户端向第二客户端发送协助查找请求;B、第二客户端收到请求后,在本地记录中找到拥有第一客户端所需数据块的客户端,并将所找到的客户端的记录发送给第一客户端;C、第一客户端根据收到的客户端记录建立连接并下载数据。
较佳地,该方法可以进一步包括如下两个触发条件触发条件一设置文件的下载完成率门限;当第一客户端在自身所下载文件的下载完成率大于等于所设置的下载完成率门限时,则触发步骤A;触发条件二第一客户端在第二客户端上没有自身所需数据块时,则触发步骤A。
可以任选其一或者同时选择这两个条件来作为该方法的触发条件。
所述第二客户端包括所有与第一客户端已建立连接的客户端。
为实现上述步骤,该方法还可以进一步包括在每个客户端上保存待请求数据块总表,所述步骤A进一步包括第一客户端以自身的待请求数据块总表的全部或部分内容生成请求数据块列表,并将所生成的请求数据块列表携带于协助查找请求中。
在每个客户端中保存已连接节点数据块分布信息,步骤B中所述在本地记录中找到拥有第一客户端所需数据块的客户端为在第二客户端的已连接节点数据块分布信息查找拥有第一客户端所需数据块的客户端;步骤B中所述将所找到的客户端的记录发送给第一客户端为将所找到客户端以及所找到客户端拥有的第一客户端所需数据块的计数生成满足要求的节点列表,并将满足要求的节点列表发送给第一客户端;步骤C中所述的第一客户端收到的客户端记录建立连接为第一客户端将收到满足要求的节点列表合并后生成候选连接节点列表,并选择候选连接节点列表中所列的客户端进行连接。
步骤B中所述的生成满足要求的节点列表和步骤C中所述的生成候选连接节点列表的步骤中还可以进一步包括,将表中所有客户端按照该客户端拥有的第一客户端所需的数据块个数降序排列;步骤C中所述选择候选连接节点列表中所列的客户端的方法为选择排在候选连接节点列表中最前面的一个或一个以上客户端。
较佳地,每个客户端中还保存本地下载列表,该方法进一步包括第一客户端向第二客户端发送请求下载列表的消息;第二客户端收到请求后,将本地下载列表中随机抽取一部分生成临时下载列表,并将临时下载列表发送给第一客户端;第一客户端将收到的临时下载列表与自身已有的本地下载列表合并,生成新的本地下载列表。
较佳地,在第一客户端向第二客户端发送请求下载列表的消息之前,进一步包括第一客户端在本地下载列表中或与第一客户端相连接的客户端中随机选择第二客户端。
生成所述的本地下载列表的方法为将来自辅助服务器Tracker的下载列表或步骤C中所述的收到的客户端记录中的客户端加入到本地下载列表中。
较佳地,该方法还可以进一步包括,每个客户端将本地下载列表存储为本地文件,再次启动时,客户端连接本地文件保存的下载列表中的客户端进行下载。
从以上技术方案可以看出,一方面,协助查找机制的引入,使得第一客户端能从与之相连接的第二客户端那里获得第二客户端的相邻客户端的数据块分布信息,从而能选择性的建立新连接,降低了无效连接率,从而提高下载效率;另一方面,通过客户端之间共享下载列表部分实现了Tracker服务器的功能,减少了对Tracker服务器的依赖,从而降低由于Tracker服务器故障而使整个下载系统不能正常工作的可能。


图1所示为多点下载的网络连接示意图;图2所示为本发明方法进行客户端之间协助查找的工作示意图;图3所示为本发明方法客户端之间彼此共享下载列表的工作示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
现有技术存在的缺点的原因在于某一下载客户端在与其他客户端建立连接之前,无法得知该客户端上所拥有的数据块的信息,这样,所建立的连接就有很大的盲目性,因此本发明的目的就是在下载客户端与其他客户端建立连接之前,就能够知道其他客户端上是否有所需要的数据块,从而有针对性的建立连接。
本发明引入一种协助查找的机制,这种机制的实现原理是客户端建立连接时除了交换自身的数据块信息之外,还将各自了解的与之相连的其他客户端的数据块信息共享,这样某个客户端建立一个连接,所能获取的数据块信息就不会再只局限于所连接的客户端,范围将会扩大到一组客户端,并且进一步可以选择那些拥有所需数据块的客户端建立连接,从而避免建立无效连接。
由于这种协助查找的机制只有在下载过程的后期才会比较重要,因此需要设置触发条件确定启动协助查找的时机。本实施例中,需要同时满足以下两个条件来触发协助查找第一个条件是预先设定文件下载完成率的门限值,只有文件下载完成率超过此门限值时,才可能启动协助查找;当文件下载完成率达到门限值以后,则判断第二个条件是否被满足,即某个已连接客户端上没有所需的数据块,则向该客户端发送协助查找的请求。刚超过门限值时,无效连接较少,因此要求协助查找的比例较低;随着无效连接率上升,要求协助查找的比例也会上升。协助查找机制会使盲目建立连接的可能性变小,最终使无效连接率下降,从而保证下载能及时完成。
为了达到协助查找的目的,客户端需要新增协助查找单元,该单元中包括如下数据列表待请求数据块总表(Desired Blocks List,DBL),在客户端开始下载时即建立该列表,列表中存放内容为数据块的编号,这些数据块要满足下列条件本地还没有下载,当前连接的相邻客户端上没有;这些数据块就是以后连接所要寻找的,同时也是协助查找的对象。
请求数据块列表(Required Blocks List,RBL),该列表为每次发出协助查找请求之前生成的临时列表,并携带于协助查找请求中,只在本次请求有效。该列表中存放内容为数据块的编号,其内容为抽取DBL列表中一部分或全部数据块的编号。为防止请求数据过大,可以预先规定一个RBL最大值来限定该列表的元素个数。
已连接节点数据块分布信息(Connected Peers Information Table,CPIT),用来保存当前连接的相邻客户端上的数据块分布信息,每与一个客户端建立连接时,则将所连接的客户端上的数据块信息加入到CPIT中。
满足要求的节点列表(Desired Peers List,DPL),协助查找回应消息中所携带的列表,其元素为一个二维矢量,第一分量是满足条件的客户端,即这些客户端上至少拥有一个发送者需要的数据块,第二分量是该客户端所拥有的发送者所需要的数据块数量(Count);这些元素按照Count进行降序排列。DPL是个临时数据表,与候选连接节点列表(CPL)合并之后便删除。为防止协助查找回应消息数据过大,可以预先规定一个DPL最大值来限定该列表的元素个数。
候选连接节点列表(Candidate Peers List,CPL),由所接收到的所有DPL相互合并而生成的列表,因此表中元素类型与DPL相同,并且也是按照Count降序排列,连接的时候要优先选择该列表中排在前面的客户端。为防止该列表中数据过多,可以预先规定一个CPL最大值来限定该列表中元素个数。
图2所示为依照本发明方案进行协助查找的工作流程,其中第一客户端为下载客户端,第一客户端发现与第二客户端的连接为无效连接后,则进行如下步骤步骤201第一客户端创建RBL,具体过程是判断DBL是否为空,如果DBL为空,说明所有的数据块都已经找到可供下载的客户端,则本次操作结束;否则,如果DBL元素数量小于等于RBL最大值,则拷贝整个DBL作为RBL;如果DBL元素大于RBL最大值,则从DBL中挑选数量为RBL最大值的元素组成RBL。该挑选策略可以是随机选取或顺序选取。
步骤202第一客户端向第二客户端发送协助查找请求,该请求中包括步骤201中所创建的RBL。
步骤203第二客户端收到请求之后,根据收到的RBL,在本地保存的CPIT中查找满足条件的客户端。所谓满足条件就是这个客户端至少有一个数据块位于RBL中,查找的过程同时要记录满足条件的客户端中满足条件的数据块计数Count。
步骤204查找完毕之后将所找到的客户端根据计数Count从大到小进行排序,组成DPL,如果满足条件的客户端个数大于最大值DPL最大值,那么只选择前面DPL最大值个元素组成DPL。
步骤205第二客户端向第一客户端返回协助查找回应消息,该消息中包括DPL。
步骤206第一客户端收到返回的协助查找回应消息后,将其中的DPL合并到自身现有的CPL中,具体方法可以采用目前已有的任何一种有序表合并算法。不过要注意的一点是CPL中客户端不允许重复,并且,如果DPL中某一客户端的计数Count与CPL中同一客户端的Count不等,则要以其中较大值为该客户端的计数Count,并按照Count降序重新排列。合并完毕之后,如果发现CPL的元素数量大于CPL最大值,则删除大于CPL最大值之后的元素。
对于每一个与第一客户端的连接为无效连接的客户端,都执行一遍上述步骤201~206,直到对所有无效连接的客户端都完成协助查找的步骤,最终形成新的CPL表。
步骤207第一客户端向CPL表中最优先的一定数目客户端,即排在CPL中最前面的一个或一个以上的客户端,发起连接要求下载,图2中,客户端i代表优先连接的客户端。
以上描述的是客户端的协助查找的方案,在该方案中,客户端主要根据目前已连接的客户端提供的信息找出满足要求的客户端发送给协助查找消息的发送者。
由于连接开销的限制,每个客户端同时连接的客户端数量有一定限制,因此通常每个客户端从Tracker服务器获得的DPT只是Tracker服务器上整个DPT中的一部分。为了能够利用客户端之间的相互协助来部分地代替Tracker服务器发送下载列表的功能,每个客户端将从Tracker服务器获得的DPT和从相邻客户端处通过协助查找机制获得的其他客户端信息保存为本地的DPT,并通过彼此共享本地的DPT达到上述目的。具体工作流程如图3所示,包括如下步骤步骤301第一客户端向第二客户端发送请求下载列表的消息。
步骤302第二客户端收到该请求消息后,从本地的DPT中随机抽取一部分生成一个临时下载列表。
步骤303第二客户端向第一客户端返回所生成的临时下载列表。
步骤304第一客户端将收到的临时下载列表与本地DPT合并,将原来没有的客户端补充到本地DPT中。
下面简单总结一下整个下载过程下载的最初阶段,下载客户端首先连接Tracker服务器获取下载列表,并依照下载列表中内容与其他客户端建立连接,相互协助下载。此时尚未启动协助查找机制,客户端按照一定的策略,如每隔一段时间向Tracker服务器获取新的下载列表,补充可连接的客户端。
客户端将自身的下载列表保存成本地文件,停止下载时保留该下载列表。再次启动时如果无法连接Tracker服务器,则连接本地保存的下载列表中的客户端,继续进行下载。
当所下载的文件完成率达到门限时,开始触发协助查找机制,进入下载的第二阶段获取新客户端的任务主要由相邻客户端的协助查找来完成,因此新建连接将更有针对性。向Tracker服务器获取下载列表也同时存在,只不过相比于协助查找来说这个操作的频率低很多,因此所起的作用较小。
如果下载过程中,由于某种原因造成Tracker服务器无法继续提供服务,那么就立刻启动协助查找机制,使下载能够继续进行。如果协助查找无法继续,也就是说无法从相邻客户端处获取需要的客户端,那么就要启动如图3所示的以客户端的相互协助代替Tracker服务器来获得下载列表的机制,通过共享各自的下载列表(包括已连接和未连接的)达到互相协助,使下载继续进行的目的。
上述由文件的下载完成率门限值作为触发条件触发协助查找机制也可以省略,即下载的最初阶段就启动协助查找机制。
本发明方法在p2p多点下载中引入了协助查找的机制,在第一客户端与第二客户端建立连接之后,能够获取与第二客户端相连接的客户端所拥有的数据块信息,因此能够进一步有针对性的建立连接,降低了无效连接率,从而提高了下载效率;引入的客户端共享下载列表的功能减轻了Tracker服务器的负担,同时也减少了对Tracker服务器的依赖,大大降低了由于Tracker服务器故障而造成整个下载系统不能正常工作的可能性。而且本发明方案对现有技术的改动较小,只是增加了两对交互信息,所需开销不大。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多点下载的方法,其特征在于,该方法包括如下步骤A、第一客户端向第二客户端发送协助查找请求;B、第二客户端收到请求后,在本地记录中找到拥有第一客户端所需数据块的客户端,并将所找到的客户端的记录发送给第一客户端;C、第一客户端根据收到的客户端记录建立连接并下载数据。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括设置下载完成率门限;则步骤A中,第一客户端在自身所下载文件的下载完成率大于等于所设置的下载完成率门限时,向第二客户端发送协助查找请求。
3.根据权利要求1所述的方法,其特征在于,步骤A中,第一客户端在第二客户端上没有自身所需数据块时,向第二客户端发送协助查找请求。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括设置下载完成率门限;则步骤A中,第一客户端在自身所下载文件的下载完成率大于等于所设置的下载完成率门限,且第二客户端上没有自身所需数据块时,向第二客户端发送协助查找请求。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述第二客户端包括所有与第一客户端已建立连接的客户端。
6.根据权利要求1至4任一项所述的方法,其特征在于,该方法进一步包括,在每个客户端上保存待请求数据块总表,所述步骤A进一步包括第一客户端以自身的待请求数据块总表的全部或部分内容生成请求数据块列表,并将所生成的请求数据块列表携带于协助查找请求中。
7.根据权利要求6所述的方法,其特征在于,该方法进一步包括,在每个客户端中保存已连接节点数据块分布信息,步骤B中所述在本地记录中找到拥有第一客户端所需数据块的客户端为在第二客户端的已连接节点数据块分布信息查找拥有第一客户端所需数据块的客户端;步骤B中所述将所找到的客户端的记录发送给第一客户端为将所找到客户端以及所找到客户端拥有的第一客户端所需数据块的计数生成满足要求的节点列表,并将满足要求的节点列表发送给第一客户端。
8.根据权利要求7所述的方法,其特征在于,步骤C中所述的第一客户端收到的客户端记录建立连接为第一客户端将收到满足要求的节点列表合并后生成候选连接节点列表,并选择候选连接节点列表中所列的客户端进行连接。
9.根据权利要求8所述的方法,其特征在于,步骤B中所述的生成满足要求的节点列表和步骤C中所述的生成候选连接节点列表的步骤中进一步包括,将表中所有客户端按照该客户端拥有的第一客户端所需的数据块个数降序排列;步骤C中所述选择候选连接节点列表中所列的客户端的方法为选择排在候选连接节点列表中最前面的一个或一个以上客户端。
10.根据权利要求1至4任一项所述的方法,其特征在于,该方法进一步包括,每个客户端中保存本地下载列表,该方法还包括第一客户端向第二客户端发送请求下载列表的消息;第二客户端收到请求后,将本地下载列表中随机抽取一部分生成临时下载列表,并将临时下载列表发送给第一客户端;第一客户端将收到的临时下载列表与自身已有的本地下载列表合并,生成新的本地下载列表。
11.根据权利要求10所述的方法,其特征在于,在第一客户端向第二客户端发送请求下载列表的消息之前,进一步包括第一客户端在本地下载列表中或与第一客户端相连接的客户端中随机选择第二客户端。
12.根据权利要求9所述的方法,其特征在于,生成所述的本地下载列表的方法为将来自辅助服务器Tracker的下载列表或步骤C中所述的收到的客户端记录中的客户端加入到本地下载列表中。
13.根据权利要求9所述的方法,其特征在于,该方法进一步包括,每个客户端将本地下载列表存储为本地文件,再次启动时,客户端连接本地文件保存的下载列表中的客户端进行下载。
全文摘要
本发明提出一种多点下载的方法,即在现有的下载方法中引入协助查找机制当第一客户端发现与之相连接的第二客户端上没有所需的数据块时,则向第二客户端发送协助查找的请求;第二客户端收到请求后,在本地记录中找到拥有第一客户端所需数据块的客户端,将所找到的客户端的记录发送给第一客户端;第一客户端根据所收到的客户端的记录建立连接并下载数据。该机制的引入有助于客户端有针对性的建立连接,降低了无效连接率,从而提高了下载效率。本发明方法还使客户端之间通过共享下载列表而部分的代替了辅助服务器Tracker的功能,降低了由于辅助服务器Tracker故障而造成整个下载系统不能正常工作的可能性。
文档编号H04L12/00GK1852108SQ200510130298
公开日2006年10月25日 申请日期2005年12月8日 优先权日2005年12月8日
发明者严哲峰, 王风雷, 王铁英, 陈浩华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1