下载资源的方法、装置、终端设备及系统与流程

文档序号:21550340发布日期:2020-07-21 10:55阅读:124来源:国知局
下载资源的方法、装置、终端设备及系统与流程

本发明涉及通信技术领域,更具体的,涉及一种下载资源的方法、一种下载资源的装置,一种终端设备,一种资源分发系统,以及一种计算机可读存储介质。



背景技术:

对等计算机网络(peertopeer,p2p)是一种在终端设备之间分配任务的分布式应用网络,p2p网络中的每一个终端设备均可以称之为节点,在p2p网络中,节点与节点之间可以实现资源的上传与下载。

现有的资源下载方式中,通常是由需要下载资源的下载节点向服务器请求获取节点列表,下载节点依次向节点列表中的每一个节点分配任务,如果节点有该资源的数据,则将数据返回给下载节点,如果节点没有该资源的数据,则返回响应失败的信息给下载节点,下载节点会将该任务重新分配给节点列表中的其他节点,该种下载方式中,需要筛选大量的节点,才能找到能够执行相应任务的节点,而每一任务又是独占的,无法同时分配给多个节点,如果被分配下载任务的节点响应时间过长,将会出现数据空洞的现象,进而导致下载速度慢,这对于下载视频直播资源而言,将因播放卡顿而直接影响用户的观看体验,因此,需要提供一种能够提高下载速度的下载资源的方法。



技术实现要素:

本发明实施例的一个目的是提供一种下载资源的新的技术方案。

根据本发明的第一方面,提供了一种下载资源的方法,其包括:

获取待确认的节点列表;

在所述节点列表中筛选出可用节点,分配下载所述资源的任务;

其中,所述可用节点包括被标记为具有所述资源的节点。

可选地,所述方法还包括:

探测所述节点列表中的节点是否具有所述资源;

获取被探测节点返回的探测结果;

在所述探测结果表示探测成功的情况下,将所述被探测节点标记为所述可用节点。

可选地,所述方法还包括:

在所述探测结果表示探测失败的情况下,为所述被探测节点设置禁止所述探测的时间窗口。

可选地,所述探测所述节点列表中的节点是否具有所述资源的步骤,包括:

向所述节点列表中的节点发送探测请求,其中,所述探测请求携带所述资源的资源标识和期望的下载点。

可选地,所述方法还包括:

在所述探测结果表示探测失败的情况下,获取所述被探测节点被连续探测失败的累计次数;

在所述累计次数超过设定次数的情况下,在所述节点列表中删除所述被探测节点。

可选地,所述在所述节点列表中筛选出可用节点,分配下载所述资源的任务的步骤,包括:

响应于设定的触发事件,检测所述任务是否已完成;

在未完成的情况下,为所述可用节点分配下载所述资源的任务。

可选地,所述触发事件包括所述节点列表中出现新的可用节点和已被分配所述任务的节点完成所分配的任务中的任意一项或者两项。

可选地,所述方法还包括:

响应于所在网络的其他节点发起的询问是否具有所述资源的探测,比较本地对于所述资源的当前下载点与所述其他节点对于所述资源的期望下载点;

在所述期望下载点超前于所述当前下载点的情况下,将所述其他节点加入至所述节点列表中,并将所述其他节点标记为所述可用节点。

可选地,所述方法还包括:

在所述当前下载点超前于所述期望下载点的情况下,向所述其他节点返回表示具有所述资源的探测结果;

在所述期望下载点超前于所述当前下载点的情况下,向所述其他节点返回表示不具有所述资源的探测结果。

可选地,所述获取待确认的节点列表的步骤,包括:

响应于下载所述资源的任务触发,从服务器获取待确认的节点列表。

可选地,所述任务为基于p2p网络的点对点任务。

可选地,所述资源为视频直播资源;所述分配下载所述资源的任务包括:

将所述视频直播资源的当前分片划分为多个任务块;

以所述任务块为单位,分配下载所述资源的任务。

可选地,所述方法还包括:

在获得所述视频直播资源的当前分片后,遍历所述节点列表中的节点,筛选出满足探测条件的节点;

探测所述满足探测条件的节点是否具有所述当前分片;

获取被探测节点返回的探测结果;

在所述探测结果表示探测成功的情况下,将所述被探测节点标记为所述可用节点。

可选地,所述方法还包括:

在获得所述视频直播资源的当前分片后,先将所述节点列表中的可用节点复位为状态未知的节点,再执行所述遍历所述节点列表中的节点,筛选出满足探测条件的节点的步骤;其中,所述满足探测条件的节点为状态未知,且未在禁止探测的时间窗口内的节点。

根据本发明的第二方面,还提供了一种下载资源的装置,其包括:

节点列表获取模块,用于获取待确认的节点列表;

任务分配模块,用于在所述节点列表中筛选出可用节点,分配下载所述资源的任务;

其中,所述可用节点包括被标记为具有所述资源的节点。

根据本发明的第三方面,还提供了一种终端设备,其包括本发明第二方面中的下载资源的装置;或者,包括存储器和处理器,所述存储器用于存储可执行的指令;所述处理器用于在所述指令的控制下执行根据本发明第一方面中的下载资源的方法。

根据本发明的第四方面,还提供了一种资源分发系统,包括服务器和多个本发明第三方面所述的终端设备,多个所述终端设备组成资源分发网络,每一所述终端设备为所述资源分发网络上的一个节点;每一所述终端设备响应于自身的下载任务从所述服务器获取节点列表,其中,所述节点列表中的每一节点均为所述资源分发网络上的节点。

根据本发明的第五方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本发明第一方面中任一项所述的下载资源的方法。

本发明的一个有益效果在于,根据本发明实施例的方法、装置、终端设备及系统,其在获取待确认的节点列表之后,会从节点列表中筛选出可用节点,并在可用节点的范围内分配下载该资源的任务。对于本申请实施例的方法,由于从节点列表中筛选出的可用节点包括被标记为具有资源的节点,即可用节点为因高概率具有该资源而被标记的节点,从而,在可用节点的范围内分配下载任务,将大大提高分配下载任务的成功率,进而避免任务被不具有该资源的节点抢占,减少数据空洞,提高下载速率。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1是显示可用于实现本发明实施例的资源分发系统的硬件配置的原理框图;

图2是根据本发明实施例的终端设备的硬件结构示意图;

图3是根据本发明实施例的下载资源的方法的流程示意图;

图4是根据本发明另一实施例的下载资源的方法的流程图;

图5是根据本发明第三实施例的下载资源的方法的流程图;

图6是根据本发明第四实施例的下载资源的方法的流程图;

图7是根据本发明一个例子的下载资源的方法的流程图;

图8是根据本发明实施例的下载资源的装置的原理框图。

图9是根据本发明实施例的终端设备的硬件结构示意图;

图10是根据本发明另一实施例的终端设备的硬件结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<硬件配置>

图1是根据本发明实施例的资源分发系统100的组成结构示意图。

根据图1所示,本实施例的资源分发系统100包括服务器1000和多个终端设备2000,图1中示出了4个终端设备2000,分别为终端设备2000a、终端设备2000b、终端设备2000c和终端设备2000d。

在本实施例中,这些终端设备2000组成资源分发网络,每一终端设备2000为资源分发网络中的一个节点,每一终端设备2000可以响应于自身的下载任务从服务器1000中获取节点列表,其中,该节点列表中的每一节点均为资源分发网络上的节点。

在本实施例中,资源分发系统100具有的终端设备2000的数量可以根据实际场景确定,在此不做任何限定。

服务器1000提供处理、数据库、通讯设施的业务点。服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。

在一个实施例中,服务器1000可以如图1所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600。

在该实施例中,服务器1000还可以包括扬声器、麦克风等等,在此不做限定。

处理器1100可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括各种总线接口,例如串行总线接口(包括usb接口)、并行总线接口等。通信装置1400能够进行有线或无线通信。显示装置1500例如是液晶显示屏、led显示屏触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。

尽管在图1中示出了服务器1000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器1000只涉及存储器1200、通信装置1400以及处理器1100。

终端设备2000可以是任意的具有通过网络3000连接服务器1000及其他终端设备2000的功能的电子设备,例如是手机、pc机、便携式电脑、平板电脑、掌上电脑、可穿戴设备等,在此不做限定。

在一个实施例中,终端设备2000可以如图2所示,包括处理器2100、存储器2200、接口装置2300、通信装置2400、显示装置2500、输入装置2600、扬声器2700、麦克风2800等等。

处理器2100可以是中央处理器cpu、微处理器mcu等。存储器2200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括usb接口、耳机接口等。通信装置2400能够进行有线或无线通信,显示装置2500例如是液晶显示屏、触摸显示屏等。输入装置2600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器2700和麦克风2800输入/输出语音信息。

尽管在图2中示出了终端设备2000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,终端设备2000只涉及通信装置2400、存储器2200和处理器2100。

该实施例中,终端设备2000的存储器2200用于存储指令,该指令用于控制处理器2100进行操作以至少执行根据本发明任意实施例的下载资源的方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

通信网络3000可以是无线通信网络也可以是有线通信网络,可以是局域网也可以是广域网。在图1所示的资源分发系统100中,服务器1000与多个终端设备2000,多个终端设备2000之间,可以通过网络3000进行通信。此外,服务器1000与多个终端设备2000,以及多个终端设备2000之间通信所基于的网络3000可以是同一个,也可以是不同的。

<方法实施例>

图3是根据本发明实施例的下载资源的方法的流程示意图,该方法由资源分发系统100中的任意一个终端设备2000实施,本实施例的下载资源的方法可以包括如下步骤:

步骤s3100,任一终端设备2000获取待确认的节点列表。

节点列表中至少包括与该终端设备2000组成资源分发网络的其他终端设备2000,这里的每一个终端设备2000均为资源分发网络上的一个节点。例如,参照图1,终端设备2000a为执行本实施例下载资源的方法的主体,即,步骤s3100中的任一终端设备2000为终端设备2000a,在此,终端设备2000b、终端设备2000c和终端设备2000d均可以作为节点列表中的节点。

在一个例子中,该步骤s3100中终端设备2000获取待确认的节点列表可以进一步包括:终端设备2000响应于下载资源的任务触发,从服务器1000获取待确认的节点列表。

在该例子中,例如可以是用户在终端设备2000中实施下载资源的任务触发操作,终端设备2000响应于用户实施的下载资源的任务触发操作,从服务器1000中获取待确认的节点列表。用户实施的下载资源的任务触发操作例如可以是用户在终端设备2000的应用界面上实施点击操作点击与资源对应的链接或者图标。

该下载资源的任务触发中至少携带有资源信息,该资源信息例如可以包括资源的资源标志和资源的期望下载点,其中,该资源标志用以将不同的资源进行区分,该期望下载点可以为当前的起始下载点。

步骤s3200,该终端设备2000在节点列表中筛选出可用节点,分配下载资源的任务。

本实施例中,可用节点包括被标记为具有该资源的节点。

本实施例中,可用节点为因高概率具有该资源而被该终端设备2000标记为“可用”的节点。例如,终端设备2000可以根据用户标记、探测节点列表中节点的探测结果、及被其他节点探测的探测结果等,决定是否将节点列表中的对应节点标记为可用节点。

本实施例中,该终端设备可以在获取到待确认的节点列表之后,检测对应节点列表中节点的标记事件,并在检测到该标记事件时,将对应的节点标记为可用节点。例如,该标记事件包括以下至少一项:接收到用户对于节点列表中某一节点输入的标记操作;对节点列表中某一节点进行主动探测的探测结果为具有该资源;以及,被节点列表中某一节点探测的探测结果为不具有该资源。

本实施例中,终端设备2000可以采用任意的标记形式标记可用节点,例如,可以是在节点的名称之前或者名称之后新增符号用以表明该节点为可用节点,该符号例如但不限于是“*”号或者“#”号,只要是根据约定能够区分可用节点和状态未知的节点即可,在此不做限定。

本实施例中,对于被分配下载资源的任务的可用节点而言,该下载资源的任务也可以理解为是分享所要下载的资源的任务。

本实施例中,资源分发网络可以为p2p网络,该任务可以是基于p2p网络的点对点任务,一个点对点任务简称为p2p任务。

在本实施例中,该步骤s3200中终端设备2000在节点列表中筛选出可用节点,分配下载资源的任务的步骤可以进一步包括:

步骤s3210,该终端设备2000响应于设定的触发事件,检测任务是否已完成。

该步骤s3210中,终端设备2000可以设置至少一个触发事件,该至少一个触发事件可以包括节点列表中出现新的可用节点和已被分配任务的节点完成所分配的任务中的任意一项或者两项。

该步骤s3210中,终端设备2000在成功接收到已被分配任务的节点返回的相应资源数据时,便可以确认该已被分配任务的节点完成了所分配的任务。

根据该步骤s3210,在发生任一触发事件时,终端设备2000便可以响应于该触发事件,检测任务是否已完成。

参照图1,仍以终端设备2000a为执行本实施例下载资源的方法的主体,终端设备2000b、终端设备2000c和终端设备2000d均可以作为节点列表中的节点为例,可以是在本地建立下载资源的多个p2p任务,例如包括4个p2p任务,在此,筛选出的可用节点可以包括终端设备2000b和终端设备2000c,此时,可以是先将任意两个下载资源的p2p任务分别分配给终端设备2000b和终端设备2000c,并在终端设备2000b和终端设备2000c中的至少一个完成所分配的下载资源的p2p任务时,检测任务是否完成;也可以是在节点列表中出现新的可用节点时,例如终端设备2000d成为新的可用节点时,检测任务是否完成。

步骤s3220,该终端设备2000在未完成的情况下,为可用节点分配下载资源的任务。

例如,可以是通过步骤s3210获得节点列表中出现新的可用节点为终端设备2000d时,检测任务是否完成,并在检测到任务未完成的情况下,通过该步骤s3220从剩余的2个下载资源的p2p任务中任意选择一个分配给终端设备2000d。

又例如,也可以是通过步骤s3210获得分配下载资源的p2p任务的终端设备2000b已经完成所分配的下载资源的p2p任务时,检测任务是否完成,并在检测到任务未完成的情况下,通过该步骤s3220从剩余的2个下载资源的p2p任务中任意选择一个分配给终端设备2000b。

该例子在节点列表中出现新的可用节点或者已被分配任务的节点完成所分配的任务时,会检测任务是否完成,并在任务未完成的情况下,为可用节点分配下载资源的任务,以保证当前未完成的任务能够尽快地得以分配,提高下载资源的速率。

根据本发明实施例的方法,其在获取待确认的节点列表之后,会从节点列表中筛选出可用节点,并在可用节点的范围内分配下载该资源的任务,在此,由于从节点列表中筛选出的可用节点为因高概率具有该资源而被标记的节点,从而,在可用节点的范围内分配下载任务,将大大提高分配下载任务的成功率,进而避免任务被不具有该资源的节点抢占,减少数据空洞,提高下载速率。

在一个实施例中,根据图4所示,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s4100,该终端设备2000探测节点列表中的节点是否具有资源。

本实施例中,该终端设备2000在向节点列表中的节点发送下载资源的任务之前,会先探测该节点是否具有该资源,并根据被探测节点返回的探测结果,决策是否能够向该节点分配下载资源的任务。

在本实施例中,该步骤s4100中终端设备2000探测节点列表中的节点是否具有资源可以进一步包括:终端设备2000向节点列表中的节点发送探测请求。

该探测请求携带资源的资源标志和期望下载点,其中,该资源标志用以将不同的资源进行区分,该期望下载点可以为当前的起始下载点。

仍以终端设备2000a为执行本实施例下载资源的方法的主体,终端设备2000b、终端设备2000c和终端设备2000d均可以作为节点列表中的节点为例,终端设备2000a可以在不同的时间依次向节点列表中的终端设备2000b、终端设备2000c和终端设备2000d发送探测请求;也可以是终端设备2000a同时向节点列表中的终端设备2000b、终端设备2000c和终端设备2000d发送探测请求。

步骤s4200,该终端设备2000获取被探测节点返回的探测结果。

例如,继续步骤s4100的例子,当根据步骤s4100向节点列表中的终端设备2000b发送探测请求之后,终端设备2000b会根据探测请求中携带的资源标志查找本地是否存在该资源,在查找到本地有该资源的情况下,进一步获取本地对应该资源的当前下载点,并比较该当前下载点和期望下载点,在该当前下载点超前于该期望下载点的情况下,向终端设备2000a返回表示具有资源的探测结果,即终端设备2000b返回的探测结果表示探测成功。

又例如,继续步骤s4100的例子,当根据步骤s4100向节点列表中的终端设备2000c发送探测请求之后,终端设备2000c会根据探测请求中携带的资源标志查找本地是否存在该资源,在查找到本地有该资源的情况下,进一步获取本地对应该资源的当前下载点,并比较该当前下载点和期望下载点,在期望下载点超前于该当前下载点的情况下,向终端设备2000a返回表示不具有资源的探测结果,即终端设备2000c返回的探测结果表示探测失败。

步骤s4300,该终端设备2000在探测结果表示探测成功的情况下,将被探测节点标记为可用节点。

继续上述步骤s4200的例子,终端设备2000a根据步骤s4200获得了终端设备2000b返回的表示具有资源的探测结果,则终端设备2000a将根据步骤s4300将终端设备2000b标记为可用节点。

根据本实施例的方法,终端设备2000在分配下载任务之前,会主动探测节点列表中的节点是否具有所要下载的资源,以根据探测成功的探测结果将被探测节点标记为可用节点,该种根据主动探测的探测结果进行可用节点标记的方式,可以明显提高被标记的可用节点能够完成被分配的下载资源的任务的概率,提高任务分配的靶向性,减少数据空洞,进而提高下载速度。

在一个实施例中,根据图4所示,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s4400,该终端设备2000在探测结果表示探测失败的情况下,为被探测节点设置禁止探测的时间窗口。

在本实施例中,在为被探测节点设置禁止探测的时间窗口的情况下,在禁止探测的时间窗口内,终端设备2000将不会根据上述步骤s4100再去主动探测该节点。

在一个例子中,该禁止探测的时间窗口可以是预设的固定数值,在该例子中,可以为所有探测失败的被探测节点均设置该固定数值。

该固定数值可以根据节点列表中的节点的数量进行设定,节点的数量越多,禁止探测的时间窗口可以越大,节点的数量越少,禁止探测的时间窗口可以越小。

在一个例子中,对于视频直播资源,可以设置禁止探测的时间窗口为设定数量的分片(ts)任务期间,例如,设置禁止探测的时间窗口为三个ts任务期间,即在三个ts任务期间屏蔽该节点,而不再进行主动探测。

在一个例子中,终端设备2000也可以为每一个探测失败的被探测节点设置各自对应的禁止探测的时间窗口,对应不同探测失败的被探测节点的禁止探测的时间窗口可以相同,也可以不同。

在一个例子中,终端设备2000可以是获取探测结果中携带的被探测节点的当前下载点,比较当前下载点和期望下载点,根据比较结果设置对应探测失败的被探测节点的禁止探测的时间窗口。例如,当前下载点和期望下载点之间的距离越远,禁止探测的时间窗口可以越大,当前下载点和期望下载点之间的距离越近,禁止探测的时间窗口可以越小。

根据本实施例的方法,为探测失败的被探测节点设置禁止探测的时间窗口,以在该禁止探测的时间窗口内不再探测该节点,这样既避免了频繁重试,也能适应不同网络环境下下载点的动态变化。

在一个实施例中,根据图4所示,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s4500,该终端设备2000在探测结果表示探测失败的情况下,获取被探测节点被连续探测失败的累计次数。

根据该步骤s4500,连续探测失败也即接连探测失败,被探测节点只要有一次被探测成功,该累计次数即被清零,并重新开始计数。

继续上述步骤s4200的例子,根据步骤s4200获得终端设备2000c向终端设备2000a返回表示不具有资源的探测结果,即终端设备2000a针对终端设备2000c的探测结果表示探测失败,根据该步骤s4500,终端设备2000a将获取终端设备2000c被自身连续探测失败的累计次数,例如,终端设备2000a根据步骤s4500获得终端设备2000c被连续探测失败的累计次数为4次。

步骤s4600,该终端设备2000在累计次数超过设定次数的情况下,在节点列表中删除被探测节点。

该设定次数可以是根据网络性能设置的参数,例如,该设定次数可以为3次,当然,该设定次数也可以是其他数值,在此不做限定。

继续上述步骤s4500的例子,终端设备2000a根据步骤s4500获得终端设备2000c被连续探测失败的累计次数为4次,根据该步骤s4500比较累计次数(4次)和设定次数(3次),可以得知累计次数大于设定次数,则在节点列表中删除终端设备2000c。

根据本实施例的方法,其在针对被探测节点探测失败的情况下,会将该被探测节点被连续探测失败的累计次数和设定次数进行比较,以在累计次数超过设定次数的情况下,在节点列表中删除该被探测节点,这样能够滤除节点列表中基本不可能具有所需要资源的节点,避免对这类节点再次进行探测,进一步提高获取节点列表中的可用节点的效率。

在一个实施例中,根据图5所示,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s5100,该终端设备2000响应于所在网络的其他节点发起的询问是否具有该资源的探测,比较本地对于该资源的当前下载点与其他节点对于该资源的期望下载点。

所在网络的其他节点可以是包括在节点列表中,也可以是不包括在节点列表中,在此不做限定。

所在网络的其他节点发起的询问是否具有该资源的探测可以通过发送探测请求的形式进行,这也可以理解为是,所在网络的其他节点通过发送探测请求来探测终端设备2000是否具有该资源,其中,该探测请求中可以携带该资源的资源标志和其他节点对于该资源的期望下载点,该资源标志用以将不同的资源进行区分,该期望下载点即为对于该资源的期望的当前起始下载点。

仍以终端设备2000a为执行本实施例下载资源的方法的主体为例,终端设备2000e(图1中未示出)向终端设备2000a发送探测请求,该探测请求中携带终端设备2000e所需资源的资源标志和对所需资源的期望下载点,终端设备2000a查找本地存在该资源标志的情况下,获取本地对于该资源的当前下载点,进而比较当前下载点和期望下载点,获得比较结果。

步骤s5200,该终端设备2000在期望下载点超前于当前下载点的情况下,将其他节点加入至节点列表中,并将其他节点标记为可用节点。

在本实施例中,终端设备2000可以是在期望下载点超前于当前下载点的情况下,先判断其他节点是否位于节点列表中,在其他节点未位于节点列表中的情况下,将其他节点加入至节点列表中,并将其他节点标记为可用节点;而在其他节点已位于节点列表中的情况下,执行该步骤s5200相当于是直接将其他节点标记为可用节点。

仍以上述步骤s5100中的终端设备2000a和终端设备2000e为例,终端设备2000a根据步骤s5100获得的比较结果为期望下载点超前于当前下载点,则终端设备2000a可以根据该步骤s5200将终端设备2000e加入至节点列表中,并将终端设备2000e标记为可用节点,在此,如果终端设备2000e已经位于节点列表中,则执行该步骤s5200相当于直接将终端设备2000e标记为可用节点。

根据本实施例的方法,任一终端设备2000能够响应于其他终端设备2000发送的是否具有资源的探测请求,并在其他终端设备2000对于资源的期望下载点超前于本地对于资源的当前下载点的情况下,将发起探测请求的终端设备2000,或者称发起探测请求的节点,标记为可用节点,从而被探测的该终端设备2000将可以直接分配下载资源的任务至该发起探测请求的节点,而不需要再反过来主动探测该发起探测请求的节点,提高节点的筛选效率,提高下载资源的效率。

另外,根据本实施例的方法,由于终端设备2000对于资源的期望下载点超前于本地对于资源的当前下载点的情况下,会将发起探测请求的节点标记为可用节点,以实现对节点的复用,从而让原本用于单向任务请求的连接,能够支持双向任务请求,提高连接的利用率。

在一个实施例中,根据图5所示,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s5300,该终端设备2000在当前下载点超前于期望下载点的情况下,向其他节点返回表示具有资源的探测结果。

仍以上述步骤s5100中的终端设备2000a和终端设备2000e为例,根据步骤s5100获得比较结果为当前下载点超前于期望下载点,终端设备2000a将根据该步骤s5300向终端设备2000e返回表示具有资源的探测结果,此时,终端设备2000e会将终端设备2000a标记为是可用节点。

步骤s5400,该终端设备2000在期望下载点超前于当前下载点的情况下,向其他节点返回表示不具有资源的探测结果。

仍以上述步骤s5100中的终端设备2000a和终端设备2000e为例,根据步骤s5100获得比较结果为期望下载点超前于当前下载点,根据该步骤s5400向终端设备2000e返回表示不具有资源的探测结果。

在一个实施例中,所需资源为视频直播资源,根据图6所示,以上步骤s3200中分配下载资源的任务还可以进一步包括如下步骤:

步骤s6100,该终端设备2000将视频直播资源的当前分片划分为多个任务块。

视频直播可以基于不同的流媒体直播协议划分为不同的视频直播方式。例如,基于http的流媒体传输协议(hls)的视频直播方式为hls直播;又例如,基于实时消息传输协议(realtimemessagingprotocol,rtmp)的视频直播方式为rtmp直播;再例如,基于实时流传输协议(realtimestreamingprotocol,rtsp)的视频直播方式为rtsp直播。

以视频直播是hls直播为例,hls直播方式为:将hls直播资源存储为连续的、很短时长的媒体文件,一个媒体文件可以称之为一个ts片,终端设备2000不断的下载并播放连续的ts片,即可实现视频直播。根据步骤s3100获取用于下载hls直播资源的待确认的节点列表,根据步骤s3200从节点列表中筛选出可用节点,根据该步骤s6100将hls直播资源的当前ts片划分为多个任务块,即将当前ts片划分为多个连续的数据段,每一数据段对应一个任务块。

在一个例子中,可以是根据设定的资源分块值将当前分片划分为多个任务块,该资源分块值表示被划分得到的每一任务块的数据量。例如,当前ts片大小为1024k,设定的资源分块值可以为64k,此时,将当前ts片以64k为分割点进行相应的划分,得到16个任务块。

步骤s6200,该终端设备2000以任务块为单位,分配下载资源的任务。

仍以视频直播是hls直播为例,通过步骤s6100将当前ts片划分为多个任务块,根据该步骤s6200以任务块为单元,分配下载资源的任务至筛选出的可用节点,即,在分配下载资源的任务时,会将一个任务块完整地分给一个可用节点。

根据本实施例的方法,其将视频直播资源的当前分片划分为多个任务块之后,以任务块为单元分配下载视频直播资源的任务,可以进一步提高下载视频直播资源的效率。

在一个实施例中,本发明的下载资源的方法还可以进一步包括如下步骤:

步骤s7100,该终端设备2000在获得视频直播资源的当前分片后,遍历节点列表中的节点,筛选出满足探测条件的节点。

在一个例子中,该探测条件可以包括:节点未被标记为可用节点。

在一个例子中,该探测条件可以包括:节点未在禁止探测的时间窗口内。

在一个例子中,该探测条件可以包括:节点未被标记为可用节点,且节点未在禁止探测的时间窗口内。

步骤s7200,该终端设备2000探测满足探测条件的节点是否具有当前分片。

在本实施例中,终端设备2000可以是向满足探测条件的节点发送探测请求,以探测是否具有当前分片,该探测请求中可以携带资源的资源标志、当前分片的序号及当前分片的起始下载点(即期望下载点),满足探测条件的节点根据资源标志和当前分片的序号查找本地是否具有该资源的该当前分片,并在不具有该资源的该当前分片的情况下,返回不具有该资源的探测结果;而在具有该资源的该当前分片的情况下,再根据期望下载点和本地下载点进行下载点位置的比较,以根据比较结果返回探测结果。

步骤s7300,该终端设备2000获取被探测节点返回的探测结果。

在本实施例中,当满足探测条件的节点具有当前分片的情况下,返回的探测结果为探测成功,当满足探测条件的节点不具有当前分片的情况下,返回的探测结果为探测失败。

步骤s7400,该终端设备2000在探测结果表示探测成功的情况下,将被探测节点标记为可用节点。

根据本实施例的方法,其可以通过遍历节点列表中的每一节点,准确地筛选出满足探测条件的节点。

根据本实施例的方法,每次筛选出满足探测条件的一个节点,执行探测操作的线程便可以开始探测该满足探测条件的节点是否具有当前分片,并再满足探测条件的节点具有该当前分片的情况下,将该满足探测条件的节点标记为可用节点,以加快从节点列表中筛选出可用节点的速度,进而提高响应下载任务的速度,提高下载资源的速率。

根据本实施例的方法,终端设备2000在获得所需资源的当前分片后,针对该当前分片,根据步骤s7100进行了是否满足探测条件的筛选,在完成一次遍历后即结束,直到开始下一分片时再根据步骤s7100重新开始遍历,以减少数据处理量。

在一个实施例中,本发明的下载资源的方法还可以进一步包括如下步骤:

该终端设备2000在获得视频直播资源的当前分片后,先将节点列表中的可用节点复位为状态未知的节点,再执行遍历节点列表中的节点,筛选出满足探测条件的节点的步骤;其中,满足探测条件的节点为状态未知,且未在禁止探测的时间窗口内的节点。

根据本实施例的方法,其在获得视频直播资源的当前分片后,先将节点列表中的可用节点复位为状态未知的节点,即去除其作为可用节点的标识,再执行遍历节点列表中的节点,筛选出满足探测条件的节点的步骤,即对于不同的分片,会重新遍历节点列表中的节点,以筛选出满足探测条件的节点,进而再对这些节点进行探测,这可以提高下载视频直播资源的成功率。

<例子>

图7以视频直播为hls直播,终端设备2000a为执行本实施例下载资源的方法的主体为例示出了对应下载资源的方法,该例子中,对应下载资源的方法可以包括如下步骤:

步骤s8110,终端设备2000a响应于下载视频直播资源的任务触发,获取所需下载的视频直播资源。

步骤s8120,终端设备2000a从服务器1000中获取下载该视频直播资源的待确认的节点列表,将视频直播资源的当前分片划分为多个任务块。

该节点列表中至少可以包括有终端设备2000b、终端设备2000c和终端设备2000d。

步骤s8131,终端设备2000a依次遍历节点列表中的节点。

根据该步骤s8131,在开始当前分片时,会先将节点列表中的可用节点复位为状态未知的节点,即取消可用节点的“可用”标识,再根据步骤s8131依次遍历节点列表中的节点,以判断被遍历到的节点是否为不可用节点。

步骤s8132,终端设备2000a判断被遍历到的节点是否为不可用节点,若是,则执行步骤s8140,反之,继续执行步骤s8131。

该步骤s8132中,节点列表中的节点可以是可用节点,也可以是不可用节点,可用节点为具有“可用”标记的节点。

该例子中,终端设备2000a可以在被其他节点探测时,将发起探测的其他节点(其他节点具有该资源,且其他节点的期望下载点超前于终端设备2000a的本地下载点)直接标记为可用节点,对于这些可用节点,将不会再执行步骤s8140,而是根据步骤s8131开始遍历下一节点。

步骤s8140,终端设备2000a在被遍历到的节点是不可用节点的情况下,进一步判断该不可用节点是否在对应的禁止探测的时间窗口内,若是,则执行步骤s8131,反之,执行步骤8150。

步骤s8150,终端设备2000a在该不可用节点不在对应的禁止探测的时间窗口内的情况下,将该不可用节点列入探测集合中。

步骤s8210,终端设备2000a判断探测集合中是否有未被探测的节点,若有,则执行步骤s8220,反之,则继续执行步骤s8210。

步骤s8220,终端设备2000a在探测集合中有未被探测的节点的情况下,向探测集合中的被探测节点发送探测请求。

该探测请求中至少携带资源的资源标志、期望下载点和当前分片的序号。

步骤s8230,终端设备2000a获取被探测节点返回的探测结果,判断探测结果是否表示探测成功,若是,执行步骤s8240,反之,执行步骤s8250。

步骤s8240,终端设备2000a在探测结果表示探测成功的情况下,将被探测节点标记为可用节点。

步骤s8250,终端设备2000a在探测结果表示探测失败的情况下,比较被探测节点被连续探测失败的累计次数是否超过设定次数,若是,执行步骤s8260,反之,执行步骤s8270。

步骤s8260,终端设备2000a在被探测节点被连续探测失败的累计次数超过设定次数的情况下,在节点列表中删除被探测节点。

步骤s8270,终端设备2000a在被探测节点被连续探测失败的累计次数未超过设定次数的情况下,为被探测节点设置禁止探测的时间窗口。

步骤s8310,终端设备2000a以任务块为单位,为可用节点分配下载资源的任务。

根据该步骤s8130,只要节点列表中存在未被占用的可用节点,即未被分配任务的可用节点,终端设备2000a即可在这些未被占用的可用节点的范围内,分配剩余的任务块,直至任务结束。

步骤s8320,终端设备2000a判断节点列表中是否出现新的可用节点,或者,已被分配任务的节点是否完成所分配的任务,若是,执行步骤s8330,若否,则继续执行步骤s8320。

步骤s8330,终端设备2000a在节点列表中出现新的可用节点,或者,已被分配任务的节点完成所分配的任务的情况下,检测任务是否已完成,若是,任务结束,若否,继续执行步骤s8310。

图7示意了对于当前分片的探测及任务分配的处理流程,每到一个新的分片,均将根据图7所示流程执行探测及任务分配。

图7的例子中示出了三个线程,第一个线程是遍历节点列表中的节点以筛选出满足探测条件的节点,并将满足探测条件的节点置入探测集合中;第二个线程是对探测集合中的节点发起主动探测,并根据探测结果对节点进行相应的标记;第三个线程是在节点列表中的可用节点的范围内分配下载任务直至任务结束。以上三个线程可以相互传递消息,且并列执行,例如,第一个线程在将一个满足探测条件的节点置入探测集合中,便可通知第二个线程对该节点进行主动探测,而第二个线程再通过主动探测将一个节点标记为可用节点后,便可通知第三个线程检测任务是否已经完成,如未完成,则可以为该新的可用节点分配下载任务等。

该例子通过三个线程并列执行可以有效提高响应下载任务的速度,这对于下载视频直播资源而言尤为有利。

另外,该例子还可以包括第四个线程,第四个线程为终端设备2000a在被其他节点探测时,对该其他节点发送的探测请求的处理,例如,在该其他节点具有终端设备2000a所需资源,且该其他节点的期望下载点超前于自身的本地下载点时,将该其他节点直接标记为可用节点,并向该其他节点返回探测失败的探测结果等。该第四个线程同样可以与以上三个线程并行处理,以减少满足探测条件的节点的数量,进而进一步提高响应下载任务的响应速度。

<装置实施例>

图8为根据本发明实施例的下载资源的装置8000的原理框图。

根据图8所示,本实施例的下载资源的装置8000可以包括节点列表获取模块8100和任务分配模块8200。

该节点列表获取模块8100用于获取待确认的节点列表。

该任务分配模块8200用于在节点列表中筛选出可用节点,分配下载资源的任务。

该可用节点包括被标记为具有资源的节点。

在一个实施例中,下载资源的装置8000还可以包括节点探测模块(图中未示出)。

该节点探测模块用于探测节点列表中的节点是否具有资源;获取被探测节点返回的探测结果;在探测结果表示探测成功的情况下,将被探测节点标记为可用节点。

在一个实施例中,该节点探测模块还用于在探测结果表示探测失败的情况下,为被探测节点设置禁止探测的时间窗口。

在一个实施例中,该节点探测模块还用于向节点列表中的节点发送探测请求。

该探测请求携带资源的资源标识和期望的下载点。

在一个实施例中,该节点探测模块还用于在探测结果表示探测失败的情况下,获取被探测节点被连续探测失败的累计次数;在累计次数超过设定次数的情况下,在节点列表中删除被探测节点。

在一个实施例中,该任务分配模块8200还用于响应于设定的触发事件,检测任务是否已完成;在未完成的情况下,为可用节点分配下载资源的任务。

在一个实施例中,触发事件包括节点列表中出现新的可用节点和已被分配任务的节点完成所分配的任务中的任意一项或者两项。

在一个实施例中,该节点探测模块还用于响应于所在网络的其他节点发起的询问是否具有资源的探测,比较本地对于资源的当前下载点与其他节点对于资源的期望下载点;在期望下载点超前于当前下载点的情况下,将其他节点加入至节点列表中,并将其他节点标记为可用节点。

在一个实施例中,该节点探测模块还用于在当前下载点超前于期望下载点的情况下,向其他节点返回表示具有资源的探测结果;在期望下载点超前于当前下载点的情况下,向其他节点返回表示不具有资源的探测结果。

在一个实施例中,该节点列表获取模块8100还用于响应于下载资源的任务触发,从服务器获取待确认的节点列表。

在一个实施例中,任务为基于p2p网络的点对点任务。

在一个实施例中,资源为视频直播资源,该任务分配模块8200还用于将视频直播资源的当前分片划分为多个任务块;以任务块为单位,分配下载资源的任务。

在一个实施例中,该节点探测模块还用于在获得视频直播资源的当前分片后,遍历节点列表中的节点,筛选出满足探测条件的节点;探测满足探测条件的节点是否具有当前分片;获取被探测节点返回的探测结果;在探测结果表示探测成功的情况下,将被探测节点标记为可用节点。

在一个实施例中,该下载资源的装置还包括复位模块(图中未示出)。

该复位模块8400用于在获得视频直播资源的当前分片后,将节点列表中的可用节点复位为状态未知的节点,再通过节点探测模块执行遍历所述节点列表中的节点,筛选出满足探测条件的节点;其中,该满足探测条件的节点为状态未知,且未在禁止探测的时间窗口内的节点。

<终端设备实施例>

在本实施例中,还提供一种终端设备2000,例如可以是图1中的终端设备2000a、终端设备2000b、终端设备2000c和终端设备2000d,如图9所示,其可以包括根据本发明任意实施例的下载资源的装置8000,用于实施本发明任意实施例的下载资源的方法。

在另一个实施例中,如图10所示,终端设备2000可以包括存储器2200和处理器2100。

存储器2200用于存储指令,该指令用于控制处理器2100进行操作以执行本发明任意实施例的下载资源的方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

<计算机可读存储介质>

在本实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现如本发明任意实施例的下载资源的方法。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

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