一种对等网络中的任务分配方法及装置与流程

文档序号:18072809发布日期:2019-07-03 03:58阅读:533来源:国知局
一种对等网络中的任务分配方法及装置与流程

本发明涉及网络领域,尤其涉及一种对等网络中的任务分配方法及装置。



背景技术:

对等(peertopeer,p2p)是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。p2p网络系统中的每个终端,可以称为一个p2p节点。在p2p网络系统中,节点与节点之间共享资源,可以相互分享资源,比如相互之间上传和下载资源;在一次资源分享中,下载资源的p2p节点可以称为下载节点,上传资源的p2p节点可以称为上传节点。

在服务于视频点播的p2p网络系统中,为了保证用户播放视频的流畅性,对p2p技术有着非常高的要求。

在p2p网络系统中,资源下载的各个环节里,对p2p节点的筛选和任务的调度、分配是非常重要的一环。

目前,有一种p2p任务的分配方法的具体过程包括如下步骤101~106:

101、要进行下载的p2p节点中的加速器启动下载任务,向p2p网络的服务器请求该资源对应的节点列表。

其中,加速器可以是指p2p节点上运行的p2p程序,可以是集成在应用(app)里面的一个动态库,或者静态库,也可以是一个独立的可执行程序。

102、加速器将下载任务按固定大小分解成小块的p2p任务(后文也称为上传任务),比如,20kb左右的小块任务,统一放到任务池中,并按任务的起始点从小到大排序。

103、加速器从服务器返回的节点列表中,依次取出节点建立连接。

104、加速器对已建立连接的节点,从任务池中取出最前面的一个任务分配给该节点(该节点对于该任务而言是上传节点),加速器通过网络连接将所分配的任务发送给对应的上传节点。

105、加速器接收上传节点发过来的数据,若当前的下载任务的数据已经全部接收完,对该上传节点的任务完成数加1。再从当前任务池中领取下一个上传任务,分配给该上传节点。

106、加速器周期性的去检查当前正在进行的任务列表,找出过期或无法完成的任务,将其剩余的任务回收,放到任务池中,重新排序。

以上方案有如下缺陷:

(1)对于服务能力好的节点来说,任务块过小,会增加每个上传任务的协议交互部分的网络开销,并且下载的效率较低;对服务能力差的节点来说,任务块显得过大,会导致其完成率降低,容易被淘汰掉。

(2)对上传节点来讲,收到的都是小块的不连续的任务块,在从磁盘读取数据的时候效率非常低,当任务数一多,磁盘输入输出(io)便会成为制约网络上传的一个瓶颈。



技术实现要素:

本申请提供一种对等网络中的任务分配方法及装置,可以优化p2p网络中上传任务的分配,提高p2p网络的资源上传效率。

本申请采用如下技术方案。

一种对等网络中的任务分配方法,包括:

分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个所述上传任务中进行上传;

分别根据所述各节点的服务能力,为节点分配上传任务。

其中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

其中,所述分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力可以包括:

分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数,将节点初始的分数作为表示该节点的服务能力的分数;

当节点完成至少一个上传任务后,根据该节点处理上传任务的情况,更新表示该节点的服务能力的分数;

所述分别根据各节点的服务能力,为节点分配上传任务可以包括:

在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

其中,所述节点的属性数据可以包括以下一种或多种:

终端类型、区域信息、运营商信息、网络类型。

其中,一个节点初始的分数,可以等于该节点各项属性数据的分值加权求和的结果。

其中,所述根据该节点处理上传任务的情况,计算表示该节点的服务能力的分数可以包括:

将该节点对上传任务的完成速度通过反正切函数,映射到预定的取值区间内,得到表示该节点的服务能力的分数。

其中,所述分别根据各节点的服务能力,为节点分配上传任务可以包括:

分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;

分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

其中,所述分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点,分别分配n个单位大小的上传任务;对于一个节点,n是最大的、能使n与单位大小的乘积不大于该节点在任务周期中能完成的上传任务的大小的整数。

其中,所述分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点可以分别进行如下操作:

当待分配的上传任务的大小a不大于该节点能分配的上传任务的大小b时,将所述待分配的上传任务分配给该节点;其中,该节点能分配的上传任务的大小不大于该节点在任务周期中能完成的上传任务的大小;

当所述待分配的上传任务的大小a大于该节点能分配的上传任务的大小b时,从所述待分配的上传任务中分割出大小为b的上传任务分配给该节点。

其中,所述分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力前还可以包括:

为待分享资源对应的各节点分别分配一个预定大小的上传任务。

一种对等网络中的任务分配方法,包括:

分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数;

按照分数从大到小的顺序,依次为节点分配上传任务;其中,所述待分享资源划分到多个所述上传任务中进行上传。

一种对等网络中的任务分配装置,包括:处理器和存储器;

所述处理器用于保存用于进行任务分配的程序;所述用于进行任务分配的程序在被所述处理器读取执行时,进行如下操作:

分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个所述上传任务中进行上传;

分别根据所述各节点的服务能力,为节点分配上传任务。

其中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

其中,所述分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力可以包括:

分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数,将节点初始的分数作为表示该节点的服务能力的分数;

当节点完成至少一个上传任务后,根据该节点处理上传任务的情况,更新表示该节点的服务能力的分数;

所述分别根据各节点的服务能力,为节点分配上传任务包括:

在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

其中,所述分别根据各节点的服务能力,为节点分配上传任务可以包括:

分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;

分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

其中,所述用于进行任务分配的程序在被所述处理器读取执行时,还可以进行如下操作:

在分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力前,为待分享资源对应的各节点分别分配一个预定大小的上传任务。

一种对等网络中的任务分配装置,包括:

能力确定模块,用于分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个所述上传任务中进行上传;

分配模块,用于分别根据所述各节点的服务能力,为节点分配上传任务。

其中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

其中,所述能力确定模块分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力可以包括:

所述能力确定模块分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数,将节点初始的分数作为表示该节点的服务能力的分数;当节点完成至少一个上传任务后,根据该节点处理上传任务的情况,更新表示该节点的服务能力的分数;

所述分配模块分别根据各节点的服务能力,为节点分配上传任务包括:

所述分配模块在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

其中,所述分配模块分别根据各节点的服务能力,为节点分配上传任务可以包括:

所述分配模块分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

其中,所述分配模块还可以用于在所述能力确定模块分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力前,为待分享资源对应的各节点分别分配一个预定大小的上传任务。

本申请至少一个实施例中,根据节点的服务能力进行上传任务的分配,可以优化p2p网络中上传任务的分配,从而提升整个p2p网络的性能。

本申请至少一个实施例中,通过在初始阶段对节点的服务能力进行评估,可以使上传任务优先分配给服务能力好的节点,提高上传任务的完成度。通过对资源上传阶段的节点评估,可以对服务能力强的节点优先分配上传任务,,并且又兼顾给未完成过上传任务的节点一定的机会去尝试,挖掘这些节点的服务能力,从而提高p2p网络整体的节点资源利用率。

本申请至少一个实施例中,根据节点处理上传任务的情况,对节点的服务能力进行评估,根据节点的服务能力,动态的分配适合节点上传能力的上传任务,对于服务能力强的节点分配到的上传任务大,对于服务能力弱的节点,分配到的上传任务小。最终,使p2p节点的服务能力都得到充分的利用,提升整体p2p网络性能,并且又能保证节点的上传任务的完成度。

本申请至少一个实施例中,可以预估节点的服务能力,并以此对节点排序,进行最开始的上传任务的分配,从而可以优化p2p网络中上传任务的分配,从而提升整个p2p网络的性能。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

图1是实施例一的对等网络中的任务分配方法的流程图;

图2是实施例四的对等网络中的任务分配方法的流程图;

图3是实施例七的对等网络中的任务分配装置的示意图。

具体实施方式

下面将结合附图及实施例对本申请的技术方案进行更详细的说明。

需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

在一种配置中,进行对等网络中的任务分配的计算设备可包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存(memory)。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。内存可能包括一个或多个模块。

计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom),快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

实施例一、一种对等网络中的任务分配方法,如图1所示,包括步骤s110~s120:

s110、分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个上传任务中进行上传;

s120、分别根据各节点的服务能力,为节点分配上传任务。

本实施例中,可以根据节点的服务能力进行上传任务的分配,可以优化p2p网络中上传任务的分配,从而提升整个p2p网络的性能。

本实施例中,上述节点为p2p节点,可以但不限于包括计算机、手机、平板等终端。

本实施例中,当一个p2p节点需要下载某些资源(比如但不限于点播一个视频)时,该p2p节点(针对要下载的资源而言,该p2p节点作为下载节点)可以建立一个下载任务,对所需要的资源进行请求,所需要的资源即上述待分享资源。

本实施例中,待分享资源可以划分到多个上传任务中,或者也可以说,下载节点所建立的下载任务可以被划分成多个上传任务(对于下载节点而言,是“下载任务”,对于上传该资源的节点而言,是“上传任务”);可以看出,一个上传任务所要上传的资源,是待分享资源中的一部分;比如待分享资源共有910kb,可以划分成45个大小为20kb的上传任务,和1个大小为10kb的上传任务。其中,划分方式可以单不限于按照固定大小的资源进行划分,可自行设置划分方式。

本实施例中,待分享资源对应的节点可以是保存有待分享资源的节点,即:所述待分享资源的上传节点。其中,当下载节点请求待分享资源时,服务器可以根据待分享资源的标识查找p2p网络中,保存有该待分享资源的节点,并以节点列表的方式返回给下载节点所查找到的节点的信息。

本实施例中,一个上传节点收到上传任务后,可以将该上传任务对应的资源分一次或多次发送给下载节点。

本实施例中,如果服务器所返回的保存有待分享资源的节点中有一部分节点未曾处理过上传任务,则分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力时,可以不包含这部分节点或将这部分节点的服务能力确定成一个默认值。

本实施例中,有可能只为部分节点分配上传任务;比如确定了20个节点的服务能力,但可能只挑选其中服务能力较强的10个节点分配上传任务,而另10个节点则不进行分配。当然,也有可能对确定过服务能力的节点、或服务器返回的保存有待分享资源的节点都分配上传任务。

本实施例中,待分享资源可以包括待分享的文本文件、数据、音频、视频等;可以是一个完整的文件,也可以是文件中的一部分。

一种实现方式中,上述任务分配方法可以由需要下载资源的p2p节点执行;可以但不限于由该p2p节点中的加速器执行。其它实现方式中,上述任务分配方法也可以由需要下载资源的p2p节点中的其它模块执行。

本实施例中,上述任务分配方法的执行主体在为一个节点分配上传任务时,可以先和该节点建立连接,建立连接成功后再将所分配的上传任务发送给该节点。

本实施例中,在上传待分配资源期间,步骤s110和s120可以是不断重复、彼此并行的两个步骤;比如每当有节点开始处理上传任务后就可以进行步骤s110,在确定服务能力时可以并行进行步骤s120。进行步骤s120时,是根据当前确定的服务能力进行分配;比如服务能力为完成上传任务的速度,假设分配上传任务task1时节点a完成上传任务的速度为v1,在节点a完成所分配的上传任务task1后,节点a完成上传任务的速度变成了v2;如果此时再分配上传任务,则是以v2作为节点a完成任务的速度;也就是说,分配上传任务时依据的服务能力,可以随着节点的实际处理上传任务的情况不断更新。

一种实现方式中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

本实现方式中,当节点的服务能力包括多个参数时,可以通过量化参数值并按照预定公式计算的方式,得到表示该节点的服务能力的分数。

本实现方式中,节点完成上传任务的速度可以但不限于是指节点完成最后一个(或最近一个)上传任务的速度;比如一个节点已经完成了3个上传任务,则计算速度时,可以是对该节点最近完成的一个上传任务进行计算。

其中,节点完成上传任务的速度可以等于:该上传任务的大小除以完成该上传任务的时间长度。

其中,上传任务的大小,即上传任务所要上传的资源的大小。

其中,完成该上传任务的时间长度,可以等于下载节点接收完毕该上传任务对应的资源的时刻,与下载节点为该上传任务建立会话(或者说发出上传任务给节点)的时刻之间相隔的时间长度。

其中,节点完成上传任务的速度也可以是指节点完成多个上传任务的平均速度,比如可以等于这多个上传任务的总大小除以完成这多个上传任务的总时间长度,或者等于这多个上传任务各自的完成速度的平均值。

其中,在节点的服务能力不包括其它参数,或所包括的其它参数的值都相同的情况下,节点完成上传任务的速度越快,则服务能力越高。

其中,从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度可以称为响应时间;在节点的服务能力不包括其它参数,或所包括的其它参数的值都相同的情况下,响应时间越短,则服务能力越高。

其中,节点传输资源的实时速度可以是指该节点在当前处理的上传任务中目前的传输速度,可以用该节点已经传输的资源的大小(比如下载节点已收到该上传任务对应的资源的大小),除以传输资源所用的时间(比如下载节点收到该上传任务的第一份资源的时刻,和计算速度的时刻之间相隔的时间长度)得到;或可以用该节点在一个上传任务中,本次传输的资源的大小(比如下载节点本次收到的资源的大小),除以本次和上一次传输资源之间相隔的时间长度(比如下载节点本次和上一次收到该上传任务对应的资源的时刻之差)得到。在节点的服务能力不包括其它参数,或所包括的其它参数的值都相同的情况下,节点传输资源的实时速度越快,则服务能力越高。

其中,节点传输资源的平均速度可以是指该节点在多个上传任务中传输速度的平均值,也是可以该节点在一个上传任务的多次资源传输中,传输速度的平均值。在节点的服务能力不包括其它参数,或所包括的其它参数的值都相同的情况下,节点传输资源的平均速度越快,则服务能力越高。

在实际应用中,在考虑节点的服务能力时,实时速度所占的权重可以大于平均速度所占的权重。例如:在一种实施方案中,实时速度的权重可以设置为80%,而平均速度的权重可以设置为20%;而在另一种实施方案中,实时速度的权重可以设置为90%,而平均速度的权重可以设置为10%。

其中,节点的使用成本可以根据预先保存的、该节点所属类型所对应的使用成本得到;比如按照使用成本从高到低排列,类型包括区核、矿机、路由器、普通终端;其中,普通终端的使用成本可以为0。在节点的服务能力不包括其它参数,或所包括的其它参数的值都相同的情况下,节点的成本越高,则服务能力越高。

一种实现方式中,步骤s120可以包括:

按照服务能力从高到低的顺序,依次为节点分配上传任务。

本实现方式中,在节点已经分配上传任务的时候,就可以通过节点处理上传任务的情况,直接评估节点的服务能力,并优先给服务能力高(比如完成上传任务的速度快、或响应时间短、或传输资源的速度快、或成本低)的节点分配上传任务。

本实现方式中,可以按照节点的服务能力,对服务器返回的节点列表中的节点进行排序,服务能力越高的节点越靠前。

本实现方式中,依次为节点分配上传任务,只意味着可以按照节点服务能力从高到低的顺序进行上传任务的分配,但并不代表每个节点都必须分配上传任务,比如可以规定对于服务能力过低的节点,或排名在最后几位的节点,不分配上传任务。

其它实现方式中,也可以按照服务器返回的节点列表中节点的排序,为节点依次分配上传任务;或者可以按照其它标准对节点排序并分配任务,比如按照节点完成上传任务的个数从大到小的顺序,依次为节点分配上传任务。

实施例二、一种对等网络中的任务分配方法;本实施例包含实施例一的方案,在此基础上,上述步骤s110可以包括:

分别根据待分享资源对应的各节点的属性数据,计算各节点初始的分数,,将节点初始的分数作为表示该节点的服务能力的分数;

当节点完成至少一个上传任务后,根据该节点处理上传任务的情况,更新表示该节点的服务能力的分数;

上述步骤s120可以包括:

在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

在p2p网络中,各个节点的服务能力是参差不齐的,有些节点质量好,服务能力强,有些节点质量差,服务能力差。这里面有很多不确定因素,如节点的上传带宽,节点正在处理的任务数,节点是否下线等等,需要根据节点实际处理上传任务来确定。但是,也有很多是确定的,可以提前筛选出来的。比如距离远(例如北京和广西)的节点之间,即便单个节点服务能力很强,相互间的服务效果也不会很好;再比如跨运营商(例如联通和移动)的节点之间,服务效果也不会很好;再比如,公网地址连通性好,私网地址连通性差,pc端的有线网络更稳定,无线wifi的网络稳定性稍差,等等;这些都是对上传节点的服务能力会有影响的。

一种解决方案是按节点完成的上传任务数从高到低排序,即上传节点完成的上传任务数越多,认为该上传节点的质量或者说服务能力就越高,获得上传任务分配的机会越大。但是,如果节点列表的头几个节点因网络连接慢,或上传服务慢,会直接影响到整个播放体验。而且对于未分配上传任务,但是质量好或服务能力强的节点,由于完成的上传任务数为0,在节点列表中的排名靠后,因此有可能一直没有机会领取上传任务,浪费了这一部分节点的资源。本实施例则可以克服这一弊端。

本实施例中,如果在需要分配上传任务时,各节点都还从未完成过上传任务,则当前表示节点的服务能力的分数,都是指节点初始的分数;即,在分配上传任务时,是根据节点自身的属性进行排位。通过在初始阶段对节点自身的属性进行评估,将高质量、服务能力高(即初始的分数高)的节点的排位提前,这样在第一轮分配上传任务时可以优先分配上传任务给质量高、服务能力高的节点,因此能优化整个p2p网络中任务的调度。

本实施例中,在上传资源的过程中,对于已完成过至少一个上传任务的节点(可以是待分配资源所对应的节点中的任一个),则是用根据该节点处理上传任务的情况所计算出的分数,替代该节点原有的分数;比如,当一个节点第一次完成上传任务后,相当于是用根据该节点处理上传任务的情况所计算出的分数,替代该节点初始的分数,作为新的表示该节点的服务能力的分数;再比如,当一个节点第z(z>1)次完成上传任务后,可以用此时根据该节点处理上传任务的情况所计算出的分数,替代之前根据该节点处理上传任务的情况所计算出的分数。

也就是说,本实施例中还可以根据节点实际处理上传任务的情况,对节点的排序进行调整,这样可以根据节点的实际服务能力,动态调整给节点分配上传任务的顺序,从而可以在上传任务分配时侧重于服务能力强的节点。

本实施例中,对于一个节点,如果已经根据处理上传任务的情况计算出表示该节点服务能力的分数,则可以用根据处理上传任务的情况计算出的分数替代原来表示该节点的服务能力的分数(可以是初始的分数,也可以是上一次根据处理上传任务的情况计算出的分数),并根据新的分数调整该节点的排序;比如假设一个节点a初始的分数为88,在所有节点中排在第10位,第7~9位的分数分别是96、93、90;假设其它节点分数不变的情况下,在第一次根据a处理上传任务的情况更新a的分数后,a的分数为95,则a的排序变成第8位;在第二次根据a处理上传任务的情况更新a的分数后,a的分数为92,则a的排序变成第9位。对于一个节点,如果没有根据处理上传任务的情况计算过分数,则可以继续使用初始的分数作为该节点的分数。

本实施例中,依次为节点分配上传任务,只意味着可以按照表示节点服务能力的分数从高到低的顺序进行上传任务的分配,但并不代表每个节点都必须分配上传任务,比如可以规定对于分数低于某个值的节点,或排名在最后几位的节点,不分配上传任务。

本实施例中,可以在需要分配上传任务时,对表示节点服务能力的分数进行排序,也可以在每次对表示节点服务能力的分数有过更新后就进行排序。

本实施例中,分配上传任务和更新表示服务能力的分数可以是交替进行的过程,在分配时可以是按照目前最新的分数进行排序和分配。

一种实现方式中,所述根据该节点处理上传任务的情况,计算表示该节点的服务能力的分数可以包括:

将该节点对上传任务的完成速度通过反正切函数,映射到预定的取值区间内,得到表示该节点的服务能力的分数。

本实现方式中,节点对上传任务的完成速度,可以是该节点对最近一次分配的上传任务的完成速度,也可以是该节点对最近几次分配的上传任务的完成速度,还可以是该节点对已完成的所有上传任务的平均完成速度。

一种实现方式中,节点的属性数据可以包括以下一种或多种:

终端类型、区域信息、运营商信息、网络类型。

本实现方式中,终端类型可以用于表示节点是哪种类型的终端;可以包括安卓(android),通过互联网提供应用服务(overthetop,ott),苹果(ios),路由器(router),个人计算机(pc)等几类。各终端类型可以分别用类型代码表示。

区域信息可以用于表示节点所在的区域;区域可以包括全国,大区(如华东,华南等),省,市,区,县等几个级别;各区域可以分别用各自的区域代号表示。

运营商信息可以用于表示节点所使用的运营商;各运营商可以分别用各自的运营商代码表示。

网络类型可以用于表示节点所使用的网络地址的类型;主要可以包括公网地址,私网地址。其中,私网地址又可以根据网络地址转换(networkaddresstranslation,nat)类型分为完全圆锥型(fullcone)nat,对称(symmetric)nat,端口限制圆锥型(portrestrictedcone)nat,地址限制圆锥型(addressrestrictedcone)nat等几类。

其它实现方式中,可以自行选择属性数据的种类。

一种实现方式中,一个节点初始的分数,可以等于该节点各项属性数据的分值加权求和的结果。

本实现方式中,各项属性数据的分值和权重系数可以根据需要自行设置,比如主要想根据终端类型进行上传流量的引导时,可以加重终端类型的权重系数。

本实现方式中,一个节点的终端类型的分值,可以根据预先保存的各终端类型所对应的分值确定。另外,通过将某个终端类型的分值设置的高于其它终端类型,可以使上传流量更集中于该终端类型的平台,从而实现上传流量往特定平台的牵引。比如可以将android类型的分值调成高于ios类型的分值,这样在其它属性数据相同的情况下,android类型终端的排序先于ios类型终端,相当于分配上传任务时会更优先分配给android类型终端,因此上传的流量会更集中于android平台。

本实现方式中,一个节点区域信息的分值,可以通过该节点(下文称为上传节点)和请求下载资源的节点(下文称为当前节点)之间的区域关系获得。如:在同一个市的分值是60分,只同一个省的分值是40分,只是同一个大区的分值是20分,不在同一个大区是0分。可以看出,当前节点不同时,上传节点区域信息的分值也有可能变化;比如上传节点x在北京,当前节点在海南时,节点x的区域信息的分值是0;当前节点也在北京时,节点x的区域信息的分值是60。

本实现方式中,一个节点运营商信息的分值,可以通过该节点和当前节点的运营商是否相同获得;比如属于同一个运营商,是分值1,不属于同一个运营商,是分值2,分值1大于分值2。类似于区域信息,当前节点不同时,上传节点运营商信息的分值也有可能变化。

本实现方式中,一个节点网络类型的分值和终端类型类似,可以通过预先保存的网络类型和分值之间的对应关系获得。

本实现方式中,可以通过以下数学模型计算节点初始的分数score:

score=∑(mi×qi)(i=1,2...t)

mi:表示第i个属性数据的分值,取值范围可以在0~100之间。

qi:表示第i个属性数据的权重系数,各属性数据的权重系数之和为1。

其中,t是属性数据的种类个数。

这样可以通过对节点质量进行数学建模,来得到节点初始的分数。

一种实现方式中,可以每当一个节点的分数更新后,就调整节点的排序。

一种实现方式中,可以周期性根据各节点当前的分数(对于已分配过上传任务的节点而言是更新后的分数,对于还未分配过上传任务的节点而言是初始的分数),对各节点重新进行排序。

一种实现方式中,根据处理上传任务的情况计算的分数的区间可以和初始的分数的区间不同,这样可以通过区间的设置,使选择节点时能偏重于未分配过上传任务的节点,或已分配过上传任务的节点;比如根据处理上传任务的情况计算的分数的区间为0-200,初始的分数的区间为0-100,则分配过上传任务的节点较有可能排序在未分配过上传任务的节点之前;但未分配过上传任务的节点只要分数较高,则仍有可能排在已分配过上传任务但速度较慢的节点之前,即仍有可能被分配上传任务,而不会一直被闲置,造成资源浪费。

下面用一个例子说明本实施例。

本例子中,以节点完成上传任务的速度作为服务能力,可以分成初始阶段和任务阶段两个阶段。

初始阶段

初始阶段,即还没有完成过上传任务,此时,只能根据节点的自身属性,对节点的质量或者说服务能力做一个初步的评估,生成一个初始的分数score1。评估模型1可以用如下的公式表示:

score1=∑(mi×qi)(i=1,2...t)

mi:表示第i个属性数据的分值,取值范围在0-100之间。

qi:表示第i个属性数据的权重系数,所有属性的权重系数之和为1。

t为属性数据的种类个数。

本例子中,该模型中使用的节点的属性数据,以及属性数据的权重稀疏都可以做成配置参数,可以根据不同的应用场景动态调整,最后计算出来的初始的分数score1可以在0-100之间;在实际应用中,score1的取值区间也可以是上、下限为其它数值的区间。

本例子选取了:终端类型,区域信息,运营商信息和网络类型信息等几个维度的属性数据,来参与上述评估模型1的计算。

任务阶段

任务阶段,表示至少一个节点已经完成过至少一个上传任务了,可以通过节点对最近一个上传任务的完成速度来量化节点的服务能力,在实际应用时,也可以通过节点对最近多个上传任务的完成速度、或通过节点已完成的各上传任务的完成速度等,来量化服务能力。评估模型2如下所示:

a)上传任务的完成速度:s(单位是kb/s)

s=size×1000/(t1-t0)

size:表示最近完成的一个上传任务的大小,比如20kb,单位是kb。

t0:表示该上传任务刚发出给节点时记录的时间,或者说为该上传任务生成会话信息的时间,单位是毫秒(ms)。

t1:表示该上传任务对应的数据都接收完毕时记录的时间,单位是ms。

b)根据速度计算的节点的分数:

由于上述对于s的计算值可能会有较大的波动性,为了降低波动性以便于节点排序,对上述上传任务的完成速度进行数学映射如下:

score2=(atan(s/90.0)/(π/2))×200

即:将上传任务的完成速度通过反正切函数,映射到0-200的区间内,在实际应用中,score2的取值区间也可以是上、下限为其它数值的区间,score2的取值区间的上限可以高于score1的取值区间的上限。在该计算中,反正切函数的输出结果采用弧度制。如:100kb/s的速度约为100分,50kb/s的速度约为60分。根据该分数可以将上传节点分成三类:

强节点:分数大于100分,即上传任务的完成速度大于100kb/s。

中节点:分数介于60-100之间,即上传任务的完成速度介于50-100kb/s之间。

弱节点:分数低于60分,即上传任务的完成速度低于50kb/s。

一个节点得到score2后,可以用score2替代score1,作为该节点的分数;一个节点每当完成一个上传任务,可以更新一次score2,即:使用新计算出的score2代替原有的score2。

本例子中,初始阶段得到的分数score1的取值区间可以是从0-100,而在任务阶段得到的分数score2的取值区间可以是从0-200,但是在排序的时候,各节点(无论是用score1表示服务能力的分数的节点,还是用score2表示服务能力的分数的节点)是一起排序的。这么设计的目的主要有:

(1)由于只有初始的分数的节点(即还未曾完成过上传任务)拥有一些不确定性,所以,已经确定的强节点可以优先于只有初始的分数的节点获得分配任务的机会,这样可以优化上传任务的分配。

(2)只有初始的分数的节点中,质量比较好(60-100分之间)的节点,可以比弱节点优先获得分配上传任务的机会,这样可以防止这部分节点的资源被闲置。

其它实施例中,也可以在分配上传任务时按照其它条件对节点进行排序,或者按照随机顺序对节点分配上传任务。

其它实施例中,也可以只计算初始的分数,或只根据处理上传任务的情况计算分数,并根据分数的大小对节点依次分配上传任务。

本实施例的其它实现细节可参见实施例一。

实施例三,一种对等网络中的任务分配方法;本实施例包含实施例一的方案,在此基础上,步骤s120可以包括:

分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;

分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

本实施例中,是根据节点自身的服务能力,分配一个适当大小的上传任务,这样既能保证上传节点能在一个任务周期能完成该上传任务,充分利用节点的服务能力,又能避免任务块过小,频繁请求,影响下载端和上传端的效率。

本实施例中,在给节点分配上传任务时,可以按照节点的服务能力从高到低的顺序、或节点分数从大到小的顺序,依次给节点分配上传任务;其中,按照节点分数依次分配上传任务的方案可参见实施例二的内容。

一种实现方式中,当待分享资源为音频或视频时,上传任务的任务周期的长度,可以根据该上传任务的起始点和预设的播放点之间的时间差得到。不同上传任务的任务周期可以不同。

本实现方式中,上传任务的起始点可以是指该上传任务对应的资源区间的起点,或根据该起点计算出的时刻。比如上传任务对应于资源区间[50kb,300kb),则50kb可以作为该上传任务的起始点;或者用50kb除以码率(假设待分享资源为视频的情况),作为该上传任务的起始点。

本实现方式中,播放点可以自行配置或根据预定规则配置的,播放点和起始点的形式是相对应的,比如起始点是资源区间的起点时,播放点也用待分享资源中的某个位置表示,例如900kb。

其它实现方式中,任务周期的长度也可以根据场景设定;任务周期的长度可以作为一个配置参数,供使用时自行设置。

本实现方式中,当节点的服务能力是节点完成上传任务的速度时,节点在任务周期中能完成的上传任务的大小可以是指,该节点完成上传任务的速度,乘以任务周期的长度。当节点的服务能力是其它参数,或包含多个参数时,可以将量化的参数值代入预定公式,得到节点在任务周期中能完成的上传任务的大小。

一种实现方式中,分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点,分别分配n个单位大小的任务;对于一个节点,n是能使n与单位大小的乘积不大于该节点在任务周期中能完成的上传任务的大小、最大的整数。

其中,可以用节点在任务周期中能完成的上传任务的大小除以预定大小并向下取整,来得到n。

比如单位大小为20kb,当节点在任务周期中能完成的上传任务的大小是90kb时,分配给该节点4个单位大小的上传任务,即分配给该节点的上传任务的大小为4×20kb=80kb;当节点在任务周期中能完成的上传任务的大小是132kb时,分配给该节点6个单位大小的上传任务,即分给给该节点的上传任务的大小为6×20kb=120kb;以此类推。

其中,如果将单位大小的上传任务看成一个单位的任务块,则在分配上传任务时相当于是分配整数个单位的任务块;该做法可以看成是对计算出来的上传任务的大小做了单元化处理,可以减少节点服务能力不确定性带来的误差。比如根据节点完成上传任务的速度,计算出节点在任务周期中能完成的上传任务的大小是132kb,如果直接分配132kb大小的上传任务,则一旦网络有抖动或有其它突发事件,将会造成132kb无法在任务周期中上传完成;而分配6个单位的任务块的做法,相当于分配了120kb大小的上传任务,这样可以对突发事件有一定的容忍度。

其它实现方式中,也可以不分配整数个单位的任务块,即不将任务池中的任务划分为单位大小的任务块,而是按照节点在任务周期中能完成的上传任务的大小s1,确定分配给节点的上传任务的大小s2,s2不大于s1;比如可以将s2设定为s1的90%。

一种实现方式中,分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点分别进行如下操作:

当待分配的上传任务的大小a不大于该节点能分配的上传任务的大小b时,将所述待分配的上传任务分配给该节点;其中,该节点能分配的上传任务的大小不大于该节点在任务周期中能完成的上传任务的大小;

当所述待分配的上传任务的大小a大于该节点能分配的上传任务的大小b时,从所述待分配的上传任务中分割出大小为b的上传任务分配给该节点。

本实现方式中,相当于将待分配的上传任务中大小为a-b的部分,放回任务池中,继续作为待分配的上传任务。

本实现方式中,该节点能分配的上传任务的大小可以等于n乘以单位大小;其中,n是使n与单位大小的乘积不大于该节点在任务周期中能完成的任务的大小、最大的整数。

其它实现方式中,可以将待分配的任务先划分为单位大小的任务块,然后按照节点能分配的上传任务的大小,分配相应个单位的任务块给节点。

一种实现方式中,上述步骤s110前还可以包括:

为待分享资源对应的各节点分别分配一个预定大小的上传任务。

本实现方式中,第一次进行步骤s110时,是根据节点处理该预定大小的上传任务的情况确定服务能力。

本实现方式中,预定大小可以但不限于等于上述单位大小,比如等于20kb;该预定大小可以根据需求、配置等自行设定,从而可适用于不同的应用场景。

下面用一个例子说明本实施例。

本例子中,以节点完成上传任务的速度作为服务能力,整个分配过程可以分成两大部分,第一,计算各上传节点的能分配的上传任务的大小;第二,对上传节点分配上传任务。其中,上传节点即上述待分享资源对应的节点。

第一部分:计算各上传节点能分配的上传任务的大小。

计算过程可分成初始阶段和任务阶段两个阶段。

初始阶段

首先,设置一个最小单位的任务块,其大小为m。在初始阶段,每个节点的服务能力还不清楚,初始分配一个单位的任务块,如20kb大小的上传任务。

其中,每个单位的任务块的大小(即上述单位大小)m是一个配置参数,可以根据不同的场景,在线上配置,实时生效。

任务阶段

任务阶段,表示节点都已经完成过至少一个上传任务了,可以通过一个节点最近一个上传任务的完成速度,来量化该节点的服务能力。

首先,计算上传任务的完成速度:s(单位是kb/s)

s=size×1000/(t1-t0)

size:表示最近完成的一个上传任务的大小,比如20kb,单位是kb。

t0:表示该上传任务刚发出给节点时记录的时间,单位是ms。

t1:表示该上传任务对应的资源都收完时记录的时间,单位是ms。

接着,根据节点当前的完成速度,可以计算出在规定的任务周期内,可以对该节点分配n个单位的任务块。计算公式如下:

n=floor(s×t/m)

s:最近一次完成的上传任务的完成速度。

t:任务周期的长度,比如当待分享资源是音频或视频时,每个输出任务根据其起始点离播放点的远近可以得到任务周期的长度,可以设置成最长不超过10s(t可以是一个配置参数)。

floor是向下取整的函数。

对于不同的节点,由于s不同,计算出的n是不同的;每个节点有自己对应的n;在后续计算或分配时,可以根据一个节点对应的n,为该节点计算能分配的上传任务的大小,或分配n个单位的任务块。

这里可以得到n后不再计算,在分配任务时将剩余的上传任务分割成大小为m的任务块,分配时,分配n个任务块给节点。

也可以继续计算能分配的上传任务的大小:

size’=n×m

第二部分:对上传节点分配任务。

在启动下载任务时,把下载任务作为一整个上传任务一起放到任务池中。初始给每个节点分配1个单位的任务块(即,单位大小的任务),在节点完成一个任务块后,根据最近一次完成任务块的速度,按照上文中的公式计算出下次能分配的上传任务的大小size’。

在分配的时候,先将任务池中的上传任务(考虑到有一部分回收回来的上传任务,任务池中会存在多个上传任务的情况)按起始点从小到大排序,每次取出第一个上传任务进行分配。

将当前待分配的上传任务的大小,记为a;上传节点能分配的上传任务的大小,记为b(即b=size’)。上传任务分配的原则如下:

(1)如果a<=b,则将当前待分配的上传任务都分给该上传节点,分配结束。

(2)如果a>b,则给该上传节点分配b大小的上传任务,将剩余的a-b大小的上传任务,放回任务池中。如:当前待分配的上传任务为[100kb,1000kb),节点能分配的上传任务的大小是60kb,则给该节点分配的上传任务是[100kb,160kb),剩余的上传任务[160kb,1000kb)放回到任务池中,等待下次分配。

其它实施例中,也可以按照其它方式进行实施例一中的步骤s120。

本实施例的其它实现细节可参考实施例一。

实施例四、一种对等网络中的任务分配方法,如图2所示,包括步骤s210~s220:

s210、分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数;

s220、按照分数从大到小的顺序,依次为节点分配上传任务;其中,所述待分享资源划分到多个上传任务中进行上传。

本实施例中,可以预估节点的服务能力,并以此对节点排序,进行最开始的上传任务的分配,从而可以优化p2p网络中上传任务的分配,从而提升整个p2p网络的性能。

本实施例中,节点的属性数据、计算初始的分数等细节可参见实施例二;待分享资源、上传任务、节点等细节可参见实施例一。

一种实现方式中,本实施例的方法还可以包括:

对于已完成至少一个上传任务的各节点分别进行如下操作:

根据该节点处理上传任务的情况,计算表示该节点的服务能力的分数;以计算出的分数更新表示该节点的服务能力的分数。

本实现方式中,可以每当一个表示节点的服务能力的分数更新后,就调整节点的排序。

本实现方式中,可以周期性根据各节点当前的表示该节点的服务能力的分数(对于已分配过上传任务的节点而言是更新后的分数,对于还未分配过上传任务的节点而言是初始的分数),对各节点重新进行排序。

本实现方式中,根据处理上传任务的情况计算的分数的取值区间可以和初始的分数的取值区间不同,这样可以通过取值区间的设置,使选择节点时能偏重于未分配过上传任务的节点,或已分配过上传任务的节点;比如根据处理上传任务的情况计算的分数的取值区间为0-200,初始的分数的区间为0-100,则分配过任务的节点较有可能排序在未分配过上传任务的节点之前;未分配过上传任务的节点只要分数较高,则仍有可能去执行任务,不会一直被闲置而造成资源浪费。

一种实现方式中,依次为节点分配上传任务可以包括:

分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;

分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配输出任务。

本实现方式的其它细节可参考实施例三。

实施例五、一种对等网络中的任务分配方法;本实施例可以应用在p2p网络中进行视频点播的场景下,以节点完成上传任务的速度作为服务能力进行说明;其它实施例中,服务能力也可以包括其它参数。

本实施例包括以下过程501~506。

过程501:启动下载任务

501.1p2p节点(在本实施例中,该p2p节点后称为下载节点)中的加速器收到客户应用(app)发过来的超文本传输协议(hypertexttransferprotocol,http)请求,请求中包含了待分享资源(本实施例中为点播的视频)的统一资源定位符(uniformresourelocator,url),待分享资源的范围(range)等信息。

501.2所述加速器从501.1收到的请求中解析出url和range信息,并从url中提取特征信息(即:能唯一标识该资源的信息)。

501.3所述加速器根据501.2提取出来的特征信息,经过编码生成一个资源id,用来在p2p网络系统中唯一标识该资源。

501.4所述加速器根据501.3生成的资源id,启动该资源的下载任务。

过程502:获取p2p节点列表

502.1所述加速器在501.4启动下载任务后,向服务器发送资源信息请求,请求以私有协议格式,请求中带上501.3生成的资源id。

502.2所述服务器收到502.1加速器发过来的资源信息请求,从中解析出资源id。

502.3所述服务器根据502.2解析出来的资源id,从本地资源列表中查找资源信息,资源信息包括文件大小,文件的消息摘要算法第5版(messagedigestalgorithm5,md5)值,资源对应的节点列表等信息。

502.4所述服务器将502.3查找到的资源信息,打包发送给所述加速器。

502.5所述加速器收到502.4服务器返回的资源信息包。

502.6所述加速器解析502.5收到的资源信息包,并将文件大小,节点列表等信息都存到本地的内存缓存中。

502.7所述加速器根据501.1收到的range信息,和502.6收到的文件大小信息,计算出要下载的数据区间。

502.8所述加速器根据502.7计算的数据区间,生成一整个上传任务,放到任务池中。

502.9所述加速器依次遍历502.6节点列表中的每个节点(在本实施例中,后称为上传节点),对每个上传节点分别做质量的初次评估,并计算出一个初始的分数。

本步骤中,所述加速器可以依次遍历节点列表中的每一个上传节点,分别执行以下操作:

取出一个上传节点,将上传节点的节点信息输入到上文的评估模型1中,计算出一个初始的分数score1。

502.10所述加速器根据502.7计算的上传节点初始的分数,对整个节点列表中的上传节点按初始的分数score1从大到小排序。

502.11所述加速器从排序后的节点列表中,取出前l个(l是一个配置参数,用于控制连接数)未连接的上传节点,分别与之建立连接。

502.12所述加速器对建立连接的各上传节点,分别设置初始的任务大小为1个单位大小的上传任务(这些1个单位大小的上传任务是从502.8的一整个上传任务中划分出来的)。

过程503:上传任务的分配过程

503.1所述加速器当和一个上传节点的连接建立完成,或者已从该上传节点下载完一个上传任务的资源(即该上传节点完成一个上传任务)后被触发,记录该上传节点的信息,包括计算出的该上传节点最近一次完成上传任务的速度s。

503.2所述加速器从502.8的任务池中取出第一个上传任务,其任务大小记为a,起始点记为x(本例中是一个位置,比如500kb),点播的视频的播放点记为y(本例中是一个位置,比如1500kb),码率记为w(单位是kb/秒)。

503.3所述加速器根据503.2的任务信息,计算起始点离播放点的时间差:duration=(x-y)/w。

503.4所述加速器根据503.3计算出的duration,计算任务周期t。

a)duration<3s,则任务周期:t=3s;

b)duration>=3s,且duration<=10s,则任务周期:t=duration;

c)duration>10s,则任务周期:t=10s。

503.5所述加速器根据503.1计算出的速度s和503.4计算出的任务周期t,计算503.1中的上传节点能分配的上传任务的大小:size’为s与t的乘积中,取单位大小m的整数倍的部分(为了减少误差)。比如,速度s是16kb/s,任务周期t是10s,单位大小m是50kb,则计算出来的乘积是160kb,取m的整数倍后的是150kb。

503.6所述加速器为该上传节点分配任务。若503.2中取出的上传任务的大小记为a,根据503.5计算出来的该上传节点能分配的上传任务的大小记为b,则分配原则如下:

a)a<=b:将503.2中取出整个上传任务都分给该上传节点,分配结束。

b)a>b:从503.2中取出的上传任务中,取出前b大小的任务,分配给该上传节点,并将剩余的a-b大小的上传任务,放回任务池中。比如:503.2取出的上传任务对应的资源的区间是[100kb,1000kb),a是900kb,上传节点能分配的上传任务的大小b是60kb,则给该上传节点分配的上传任务对应的资源的区间是[100kb,160kb),剩余区间的资源[160kb,1000kb)作为一个上传任务放回到任务池中,等待下次分配。

过程504:上传任务的下载过程

504.1所述加速器(或者说下载节点)按照过程503给上传节点分配完上传任务后,将所分配的上传任务和503.1的上传节点信息,一起生成一个会话信息,并记录当前时间:t0(单位:ms)。

504.2所述加速器(或者说下载节点)将504.1创建的会话加入到当前的会话列表里面。

504.3所述加速器(或者说下载节点)将504.1创建的会话中的上传任务,构造成上传任务请求发送给对应的上传节点。请求可以采用私有协议,内容包括了资源id,和请求的range信息等。

504.4所述上传节点收到下载节点发送过来的上传任务请求。

504.5所述上传节点解析504.4收到上传任务请求,得到资源id,上传任务的range信息。

504.6所述上传节点根据504.5得到的资源id信息,从本地资源列表中,查找资源信息,包括文件的md5值,文件的存储路径等。

504.7所述上传节点根据504.6查到的文件存储路径,打开文件。

504.8所述上传节点根据504.7打开的文件,读取4.5获取到的range区间的数据。

504.9所述上传节点将504.8读取的数据,返回给下载节点。

504.10所述加速器(或者说下载节点)接收504.9上传节点发过来的数据。

504.11所述加速器(或者说下载节点)重复步骤504.10一直接收数据,直到所有的数据都收完,记录当前时间t1(单位:ms)。

504.12所述加速器(或者说下载节点)下载完一个上传任务的资源后,从会话节点中,重置完成该上传任务的上传节点的状态为空闲状态,触发过程505(节点质量评估)和过程506(任务检查)。

过程505:对上传节点的质量二次评估

505.1所述加速器在504.12完成一个上传任务后,触发对完成上传任务的上传节点的质量的二次评估。

505.2所述加速器根据504.2的任务开始时间t0和504.11的任务结束时间t1,计算当前上传任务的使用时间:t’=t1-t0,单位ms。

505.3所述加速器根据上传任务的大小size(单位:kb)和505.2的任务的使用时间,计算任务完成的速度:s=size/(t’/1000.0),单位kb/s。更新该上传节点的最完成上传任务的速度。

505.4所述加速器根据505.3计算出来的完成上传任务的速度,通过数学模型计算该上传节点对应的分数:score2=(atan(s/90.0)/1.571)×200.0。最后结果映射到(0,200)的区间。用score2更新上传节点的分数。

505.5所述加速器根据505.4更新后的分数,对节点列表中的上传节点按分数(对于完成过至少一个上传任务的上传节点,该分数是score2;对于还未完成过上传任务的上传节点,该分数是score1)从高到低重新排序。

505.6所述加速器从505.5排序后的节点列表中,取出表示节点的服务能力的分数最高的,状态是空闲状态的上传节点。

过程506:上传任务检查(有节点完成上传任务触发和周期性触发两种触发方式)

506.1所述加速器遍历504.2会话列表,检查每个会话中的上传任务。

506.2所述加速器检查该上传任务是否过期,或满足其它回收条件。若没有过期且不满足任何回收条件,则取出下一个会话继续检查;如果上传任务过期或满足某个回收条件,则执行步骤506.3。

506.3所述加速器计算该上传任务的剩余任务量:剩余任务量=该上传任务的总任务量-已完成任务量。

506.4所述加速器将506.3计算的剩余任务量回收,放到任务池中。

506.5所述加速器对506.4回收后的任务池,按照上传任务的起始点从低到高,重新排序。比如排序后得到:

[26kb,30kb),[60kb,70kb),[200kb,30000kb)。

506.6所述加速器根据505.6的上传节点的排序和506.5的新任务池,触发新的上传任务分配,分配后重复过程504、505、506,直到所有上传任务都完成。

本实施例在基于p2p技术的视频点播中,可以通过优化任务分配,达到提高流畅率,降低卡顿率,提升用户播放体验的效果。

实施例六、一种对等网络中的任务分配装置,包括:处理器和存储器;

所述处理器用于保存用于进行任务分配的程序;所述用于进行任务分配的程序在被所述处理器读取执行时,进行如下操作:

分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个所述上传任务中进行上传;

分别根据所述各节点的服务能力,为节点分配上传任务。

一种实现方式中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

一种实现方式中,所述分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力可以包括:

分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数,将节点初始的分数作为表示该节点的服务能力的分数;

当节点完成至少一个上传任务后,根据该节点处理上传任务的情况,更新表示该节点的服务能力的分数;

所述分别根据各节点的服务能力,为节点分配上传任务包括:

在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

本实现方式中,所述节点的属性数据可以包括以下一种或多种:

终端类型、区域信息、运营商信息、网络类型。

本实现方式中,一个节点初始的分数,可以等于该节点各项属性数据的分值加权求和的结果。

一种实现方式中,所述根据该节点处理上传任务的情况,计算表示该节点的服务能力的分数可以包括:

将该节点对上传任务的完成速度通过反正切函数,映射到预定的取值区间内,得到表示该节点的服务能力的分数。

本实现方式中,节点对上传任务的完成速度,可以是该节点对最近一次分配的上传任务的完成速度,也可以是该节点对最近几次分配的上传任务的完成速度,还可以是该节点对已完成的所有上传任务的平均完成速度。

一种实现方式中,所述分别根据各节点的服务能力,为节点分配上传任务可以包括:

分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;

分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

本实现方式中,所述分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点,分别分配n个单位大小的上传任务;对于一个节点,n是最大的、能使n与单位大小的乘积不大于该节点在任务周期中能完成的上传任务的大小的整数。

本实现方式中,所述分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

对于各节点分别进行如下操作:

当待分配的上传任务的大小a不大于该节点能分配的上传任务的大小b时,将所述待分配的上传任务分配给该节点;其中,该节点能分配的上传任务的大小不大于该节点在任务周期中能完成的上传任务的大小;

当所述待分配的上传任务的大小a大于该节点能分配的上传任务的大小b时,从所述待分配的上传任务中分割出大小为b的上传任务分配给该节点。

本实现方式中,所述用于进行任务分配的程序在被所述处理器读取执行时,还可以进行如下操作:

在分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力前,为待分享资源对应的各节点分别分配一个预定大小的上传任务。

本实施例中,所述用于进行任务分配的程序在被所述处理器读取执行时,所进行的操作可以对应于实施例一的步骤s110~s120;其它实现细节可参见实施例一~三。

实施例七、一种对等网络中的任务分配装置,如图3所示,包括:

能力确定模块71,用于分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力;其中,所述待分享资源划分到多个所述上传任务中进行上传;

分配模块72,用于分别根据所述各节点的服务能力,为节点分配上传任务。

一种实现方式中,所述节点的服务能力可以包括以下一个或多个参数:

该节点完成上传任务的速度;

从发出上传任务给该节点,到接收到该上传任务对应的第一份资源为止的时间长度;

该节点传输资源的平均速度;

该节点传输资源的实时速度;

该节点的使用成本。

一种实现方式中,所述能力确定模块分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力可以包括:

所述能力确定模块分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数,将节点初始的分数作为表示该节点的服务能力的分数;当节点完成至少一个上传任务后,根据该节点完成上传任务的速度,更新表示该节点的服务能力的分数;

所述分配模块分别根据各节点的服务能力,为节点分配上传任务可以包括:

所述分配模块在需要分配上传任务时,按照当前表示节点服务能力的分数从大到小的顺序,依次为节点分配上传任务。

本实现方式中,所述节点的属性数据可以包括以下一种或多种:

终端类型、区域信息、运营商信息、网络类型。

本实现方式中,一个节点初始的分数,可以等于该节点各项属性数据的分值加权求和的结果。

一种实现方式中,所述根据该节点处理上传任务的情况,计算表示该节点的服务能力的分数可以包括:

将该节点对上传任务的完成速度通过反正切函数,映射到预定的取值区间内,得到表示该节点的服务能力的分数。

本实现方式中,节点对上传任务的完成速度,可以是该节点对最近一次分配的上传任务的完成速度,也可以是该节点对最近几次分配的上传任务的完成速度,还可以是该节点对已完成的所有上传任务的平均完成速度。

一种实现方式中,所述分配模块分别根据各节点的服务能力,为节点分配上传任务可以包括:

所述分配模块分别根据各节点的服务能力,计算各节点在任务周期中能完成的上传任务的大小;分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务。

本实现方式中,所述分配模块分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务可以包括:

所述分配模块对于各节点,分别分配n个单位大小的上传任务;对于一个节点,n是最大的、能使n与单位大小的乘积不大于该节点在任务周期中能完成的上传任务的大小的整数。

本实现方式中,所述分配模块分别根据各节点在任务周期中能完成的上传任务的大小,为节点分配上传任务包括:

所述分配模块对于各节点分别进行如下操作:

当待分配的上传任务的大小a不大于该节点能分配的上传任务的大小b时,将所述待分配的上传任务分配给该节点;其中,该节点能分配的上传任务的大小不大于该节点在任务周期中能完成的上传任务的大小;

当所述待分配的上传任务的大小a大于该节点能分配的上传任务的大小b时,从所述待分配的上传任务中分割出大小为b的上传任务分配给该节点。

本实现方式中,所述分配模块还可以用于在所述能力确定模块分别根据待分享资源对应的各节点处理上传任务的情况,确定各节点的服务能力前,为待分享资源对应的各节点分别分配一个预定大小的上传任务。

本实施例中,速度计算模块和分配模块所进行的操作可以分别对应于实施例一的步骤s110、s120;其它实现细节可参见实施例一~三。

实施例八、一种对等网络中的任务分配装置,包括:处理器和存储器;

所述处理器用于保存用于进行任务分配的程序;所述用于进行任务分配的程序在被所述处理器读取执行时,进行如下操作:

分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数;

按照分数从大到小的顺序,依次为节点分配上传任务;其中,所述待分享资源划分到多个所述上传任务中进行上传。

本实施例中,所述用于进行任务分配的程序在被所述处理器读取执行时,所进行的操作可以对应于实施例四的步骤s210~s220;其它实现细节可参见实施例四。

实施例九、一种对等网络中的任务分配装置,包括:

评估模块,用于分别根据待分享资源对应的各节点的属性数据,计算所述各节点初始的分数;

任务分配模块,用于按照分数从大到小的顺序,依次为节点分配上传任务;其中,所述待分享资源划分到多个所述上传任务中进行上传。

本实施例中,评估模块和任务分配模块所进行的操作可以分别对应于实施例二的步骤s210、s220;其它实现细节可参见实施例四。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。

当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1