一种流媒体资源的下载方法及缓存服务器与流程

文档序号:17356421发布日期:2019-04-09 21:43阅读:968来源:国知局
一种流媒体资源的下载方法及缓存服务器与流程

本发明涉及互联网技术领域,特别涉及一种流媒体资源的下载方法及缓存服务器。



背景技术:

在cdn(contentdeliverynetwork,内容分发网络)中,通常可以包括缓存服务器和源站服务器,其中,缓存服务器可以根据地理位置规划,部署于不同的地理位置处。用户的客户端在通过cdn访问网络资源时,访问请求可以先通过负载均衡策略被分发至某个缓存服务器处。然后缓存服务器可以将本地缓存中对应的网络资源提供给客户端,或者从源站服务器处下载对应的网络资源后再提供给客户端。

目前,cdn中的缓存服务器为了尽快向用户提供网络资源,通常会采用最快的速度从源站服务器处下载网络资源,这样会使得在某些时段,cdn中缓存服务器的整体回源带宽较高。而cdn中的回源带宽是cdn成本的重要组成之一,回源带宽越高,cdn运营商的支出也会越多。



技术实现要素:

本申请的目的在于提供一种流媒体资源的下载方法及缓存服务器,能够降低cdn中的回源带宽,从而节省cdn的运营成本。

为实现上述目的,本申请一方面提供一种流媒体资源的下载方法,所述方法包括:接收指向目标流媒体资源的资源获取请求;在所述目标流媒体资源未缓存的情况下,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求;所述指定数据段至少用于表征所述目标流媒体资源的播放时长;接收所述源站服务器反馈的包含所述指定数据段的响应报文,并根据所述响应报文计算适配于所述目标流媒体资源的回源速率;按照所述回源速率从所述源站服务器处下载所述目标流媒体资源,并在下载所述目标流媒体资源时,将下载的内容反馈给所述资源获取请求的发起方。

为实现上述目的,本申请另一方面还提供一种缓存服务器,所述缓存服务器包括:资源获取请求接收单元,用于接收指向目标流媒体资源的资源获取请求;数据下载请求发送单元,用于在所述目标流媒体资源未缓存的情况下,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求;所述指定数据段至少用于表征所述目标流媒体资源的播放时长;响应报文接收单元,用于接收所述源站服务器反馈的包含所述指定数据段的响应报文,并根据所述响应报文计算适配于所述目标流媒体资源的回源速率;回源下载单元,用于按照所述回源速率从所述源站服务器处下载所述目标流媒体资源,并在下载所述目标流媒体资源时,将下载的内容反馈给所述资源获取请求的发起方。

为实现上述目的,本申请另一方面还提供一种缓存服务器,所述缓存服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。

由上可见,本申请提供的技术方案,缓存服务器接收到指向目标流媒体资源的资源获取请求后,若本地缓存中不存在该目标流媒体资源,那么缓存服务器可以向存储所述目标流媒体资源的源站服务器发送数据下载请求,该数据下载请求可以仅请求下载目标流媒体资源中的指定数据段,所述指定数据段可以表征目标流媒体资源的播放时长。

源站服务器接收到该数据下载请求后,可以获取所述指定数据段的内容,并将指定数据段放置于响应报文中,向缓存服务器反馈该响应报文。

缓存服务器在接收到包含所述指定数据段的响应报文后,可以计算出适配于该目标流媒体资源的回源速率。后续,缓存服务器可以按照该回源速率从源站服务器处下载该目标流媒体资源,并且在一边下载目标流媒体资源时,一边将下载的内容反馈给资源获取请求的发起方。

在本申请中,通过获取目标流媒体资源中的指定数据段,并按照响应报文的内容计算出适配于目标流媒体资源的回源速率,一方面可以保证按照该回源速率下载目标流媒体资源时,反馈给发起方的内容能够流畅地播放,另一方面,按照该回源速率下载目标流媒体资源时,不会占用全部的回源带宽,从而避免了cdn中缓存服务器的整体回源带宽较高的情况,进而降低了cdn中的回源带宽,节省了cdn的运营成本。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施方式中的系统结构示意图;

图2是本发明实施方式中流媒体资源的下载方法步骤图;

图3是本发明实施方式中流媒体资源的下载方法流程图;

图4是本发明实施方式中缓存服务器的功能模块示意图;

图5是本发明实施方式中缓存服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本申请提供一种流媒体资源的下载方法,所述方法可以应用于如图1所示的系统架构中。在该系统架构中,可以包括用户客户端、分发器、缓存服务器以及源站服务器。

其中,所述用户客户端可以是用户使用的终端设备,还可以是运行于所述终端设备中的用于浏览流媒体资源的软件。

所述分发器可以接收用户客户端发出的目标流媒体资源的资源获取请求,在所述分发器中可以预先设置负载均衡策略,该分发器可以与多台缓存服务器相连,从而根据缓存服务器的负载或者网络状况,将用户客户端发出的资源获取请求分发至其中一台缓存服务器中。

缓存服务器接收到所述资源获取请求后,便可以将本地已缓存的目标流媒体资源反馈给分发器,如果在本地没有缓存对应的目标流媒体资源,那么缓存服务器可以从源站服务器处下载对应的流媒体资源,并将下载到的流媒体资源反馈给分发器。后续,分发器便可以将缓存服务器提供的目标流媒体资源下发给用户客户端。

本实施方式提供的流媒体资源的下载方法,可以被上述的缓存服务器执行,请参阅图2和图3,所述方法可以包括以下步骤。

s1:接收指向目标流媒体资源的资源获取请求。

在本实施方式中,所述流媒体资源可以是具备一定数据长度的网络资源,例如,可以是视频文件或者音频文件。目标流媒体资源是指用户客户端所指定的流媒体资源。

当用户客户端需要下载所述目标流媒体资源时,可以根据该目标流媒体资源的url(uniformresourcelocator,统一资源定位符),向存储所述目标流媒体资源的服务器发起用于获取所述目标流媒体资源的资源获取请求。

在本实施方式中,在接入cdn进行网络服务加速后,用户客户端发出的资源获取请求可以被cdn中的分发器接收。该分发器可以根据预设的负载均衡策略,将该资源获取请求分发到缓存服务器集群中的一台缓存服务器处。这样,缓存服务器便可以接收到分发器转发的所述资源获取请求。

所述资源获取请求中可以携带所述目标流媒体资源的资源标识,所述资源标识例如可以是上述的url或者是url中的部分字段。这样,缓存服务器通过解析所述资源获取请求,便可以确定该资源获取请求的发起方需要获取的目标流媒体资源。

s3:在所述目标流媒体资源未缓存的情况下,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求;所述指定数据段至少可用于表征所述目标流媒体资源的播放时长。

在本实施方式中,缓存服务器可以解析出所述资源获取请求中的所述目标流媒体资源的资源标识,然后可以在本地缓存中查询是否存在所述资源标识对应的流媒体资源。若有,那么缓存服务器便无需从源站服务器处获取所述目标流媒体资源,而是可以直接将本地缓存的所述目标流媒体资源反馈给所述分发器,并由所述分发器下发给所述用户客户端。

在本实施方式中,若缓存服务器的缓存中不存在所述资源标识对应的流媒体资源,则表明所述目标流媒体资源并没有在缓存服务器中缓存。在这种情况下,缓存服务器则需要从源站服务器中下载所述目标流媒体资源。

具体地,诸如视频、音乐这种具备一定播放时长的网络资源,在源站服务器或者缓存服务器中存储时可以被划分为多个数据包。当用户客户端需要下载这些网络资源时,可以逐一下载各个数据包,在下载完一个数据包之后,用户客户端便可以播放对应的内容,这样可以实现边下载边播放的功能。

在本实施方式中,为了使得用户客户端能够流畅地播放所述目标流媒体资源,向用户客户端提供的目标流媒体资源的数据,需要比用户客户端中已经播放的目标流媒体资源的数据多一些。也就是说,只要保证下载所述目标流媒体资源的速度比播放所述目标流媒体资源的速度稍大一些,就能保证用户客户端在不出现卡顿的情况下顺利播放完整个目标流媒体资源。鉴于此,在本实施方式中,缓存服务器在从源站服务器下载目标流媒体资源时,不需要占用当前所有的回源带宽,而只需要按照目标流媒体资源的总数据量和总播放时长,计算出一个适配于目标流媒体资源的回源速率即可。

在本实施方式中,为了计算出适配于目标流媒体资源的回源速率(即下载速率),缓存服务器首先需要知晓该目标流媒体资源的总数据量,以及该目标流媒体资源的播放时长。在目标流媒体的数据中,通常会在开头的一段字节中,注明该目标流媒体资源的播放时长、分辨率等信息。

例如,在视频资源的0至10k字节或者0至20k字节中,会注明该视频的播放总时长以及当前该视频的分辨率等信息。那么,缓存服务器在下载所述目标流媒体资源之前,可以向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求,其中,所述指定数据段便可以是上述的开头的一段固定字节长度的数据,该指定数据段至少可以用于表征所述目标流媒体资源的播放时长。

具体地,缓存服务器可以按照目标流媒体资源的数据结构,确定出所述指定数据段在所述目标流媒体资源中所处的数据区间,该数据区间可以通过字节来表示。例如,目标流媒体资源中用于表征播放时长的数据位于前11k个字节,那么该数据区间便可以表示为[0,10k]。后续,缓存服务器可以向源站服务器发送包含所述数据区间,并指向所述目标流媒体资源的数据下载请求。在该数据下载请求中可以携带所述目标流媒体资源的资源标识,同时还可以包含上述确定出的数据区间。这样,源站服务器在接收到所述数据下载请求后,便可以从目标流媒体资源中提取位于该数据区间内的指定数据段,并基于该指定数据段构建出响应报文后,向缓存服务器反馈所述响应报文。

s5:接收所述源站服务器反馈的包含所述指定数据段的响应报文,并根据所述响应报文计算适配于所述目标流媒体资源的回源速率。

在本实施方式中,缓存服务器反馈的响应报文通常具备固定的格式。该响应报文可以是http报文,那么该响应报文可以具备报文头(head)和报文体(body),在报文头中,可以注明报文体的数据长度,同时,若报文体中的数据是一整段数据中截取出的部分数据,那么在报文头中还可以注明这一整段数据的总数据长度。

具体地,在报文头中,可以通过content-length和content-range这两个字节长度标识来注明数据的长度。其中,content-length的赋值可以是一个具体的数值,该数值可以表示报文体中数据的长度。例如,若所述指定数据段的长度为11,那么在响应报文的报文头中,content-length的赋值便可以是11。而content-range的赋值通常是数值范围和数值的组合,其中,数值范围可以表示报文体中的数据在整个数据中所处的数据区间,数值则可以表示整个数据的字节长度。例如,假设所述指定数据段在目标流媒体资源中的数据区间为[0,10k],而目标流媒体资源的整个数据的字节长度为2048k,那么在响应报文的报文头中,content-range的赋值可以表示为:bytes0-10k/2048k,其中,bytes可以表示字节,0-10k则表示指定数据段在目标流媒体资源中的数据区间为[0,10k],2048k则表示目标流媒体资源的整个数据的字节长度为2048k。

这样,所述响应报文的报文头中可以包含用于表征所述目标流媒体资源的总数据量的字节长度标识,并且所述指定数据段位于所述响应报文的报文体中。缓存服务器从所述响应报文的报文头中读取上述的content-range的字节长度标识,便可以根据所述字节长度标识的赋值确定所述目标流媒体资源的总数据量。然后,缓存服务器可以从所述响应报文的报文体中读取所述指定数据段,从而可以从所述指定数据段中识别所述目标流媒体资源的播放时长。这样,根据所述目标流媒体资源的总数据量和所述目标流媒体资源的播放时长,缓存服务器便可以计算适配于所述目标流媒体资源的回源速率。

具体地,可以直接将所述目标流媒体资源的总数据量和所述目标流媒体资源的播放时长的比值作为适配于所述目标流媒体资源的回源速率。但是,这样的缺陷在于下载速度与播放速度一致,有可能会因为网络波动而引起播放卡顿。

鉴于此,在一个实施方式中,可以计算所述目标流媒体资源的总数据量和所述目标流媒体资源的播放时长的比值,并将所述比值与预设冗余系数的乘积作为适配于所述目标流媒体资源的回源速率,其中,所述预设冗余系数大于1。这样,通过在播放速率的基础上,通过预设冗余系数将回源速率放大,从而可以给用户客户端预留出一部分冗余的缓存量,在网络发生小幅度波动时,也可以通过冗余的缓存量进行缓冲,避免播放过程的卡顿。在实际应用中,所述预设冗余系数可以设置为1.3或者1.5,具体地可以根据实际情况灵活调整。

s7:按照所述回源速率从所述源站服务器处下载所述目标流媒体资源,并在下载所述目标流媒体资源时,将下载的内容反馈给所述资源获取请求的发起方。

在本实施方式中,在确定出适配于所述目标流媒体资源的回源速率后,缓存服务器便可以按照所述回源速率从所述源站服务器处下载所述目标流媒体资源。由于目标流媒体资源在源站服务器中可以被划分为多个数据包。那么缓存服务器在下载目标流媒体资源时,可以逐一下载各个数据包,并在下载完一个数据包后,将已下载的数据包反馈给分发器,从而经由分发器将数据包下发至用户客户端,以使得用户客户端处可先播放该数据包的内容,从而实现边下载边播放的功能。这样,缓存服务器在下载所述目标流媒体资源时,可以将下载的内容反馈给所述资源获取请求的发起方,只要回源速率高于用户客户端的播放速率,便可以保证用户客户端能够持续播放目标流媒体资源。

在本实施方式中,缓存服务器在下载所述目标流媒体资源时,可以将下载的内容在本地缓存,以便后续直接提供给其它用户客户端。

在一个实施方式中,采用上述限制回源速率的方式,可以避免高峰时段或者可用的回源带宽较少时,各个缓存服务器争抢回源带宽的情况。如果当前没有处于高峰时段,或者cdn可用的回源带宽较多,那么可以直接按照最快的回源速率下载目标流媒体资源。也就是说,在使用上述方式之前,可以对使用时机进行判定。具体地,在向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求之前,缓存服务器可以检测当前可供缓存服务器使用的剩余带宽量,或者判断当前时刻是否处于指定时段内。所述指定时段可以是按照历史回源带宽的使用量进行统计汇总出的高峰时段,在该指定时段内,cdn中的回源带宽可以具备较高的占用率。这样,若所述剩余带宽量小于或者等于指定带宽阈值,或者当前时刻位于所述指定时段内,则表示此时各个缓存服务器可能都需要使用一定量的回源带宽,若按照最快的速率下载目标流媒体资源,会造成其它缓存服务器没有足够的回源带宽。在这种情况下,便可以采用上述的方式,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求,后续可以计算出适配的回源速率。而如果所述剩余带宽量大于所述指定带宽阈值,或者当前时刻位于所述指定时段外,则表明cdn中当前具备足够的回源带宽,此时缓存服务器可以按照预设回源速率从所述源站服务器处下载所述目标流媒体资源,该预设回源速率可以是最快的回源速率,从而充分利用此时闲置的回源带宽,而无需计算相适配的回源速率。上述的指定带宽阈值可以是cdn运营商预先设置的,该指定带宽阈值可以用于判断当前可用的回源带宽是否充足。该指定带宽阈值可以根据实际情况灵活调整。

在一个实施方式中,除了从时段或者可用的剩余带宽量来判断是否需要采用上述的限制回源速率的方式,还可以从目标流媒体资源的类型来判断。具体地,cdn运营商可以预先设置需要限制回源速率的资源类型。例如,对于数据量相对较大的mkv、avi等格式的视频,可以采用限制回源速率的方式。而对于数据量相对较小的mp4格式的视频,则可以全速回源下载。也就是说,可以判断所述目标流媒体资源的类型是否为指定类型,若是,则按照限制回源速率的方式,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求。若所述目标流媒体资源的类型不是所述指定类型,则可以按照最快的预设回源速率从所述源站服务器处下载所述目标流媒体资源。

当然,在实际应用中,可以将上述的多种判断机制结合起来使用。例如,可以在处于高峰时段,并且目标流媒体资源为指定类型时,才采用限制回源速率的方式。如果仅仅处于高峰时段,或者仅仅是指定类型,则都可以全速下载目标流媒体资源。具体的判断策略,可以随着cdn运营商的策略进行改变,可以采用上述任意一种的判断策略,也可以将多种判断策略组合使用,本申请对此并不做限定。

如图3所示,在一个实施方式中,由于表征目标流媒体资源的播放时间和总数据量的播放信息相对会占用较少的存储空间,因此缓存服务器可能没有缓存目标流媒体资源,但却可能缓存了上述的播放信息。因此,在向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求之前,缓存服务器可以判断缓存中是否存在所述目标流媒体资源的播放信息,若缓存中存在所述目标流媒体资源的播放信息,则可以直接基于所述播放信息计算适配于所述目标流媒体资源的回源速率,而无需发送数据下载请求。相反地,若缓存中不存在所述目标流媒体资源的播放信息,则需要向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求。

在一个实施方式中,针对同一个目标流媒体资源,可以具备多种不同的清晰度,而不同的清晰度会对应不同的总数据量,因此,在本实施方式中,可以根据用户客户端选择的清晰度参数,同步更改目标流媒体资源的回源速率。具体地,所述资源获取请求中可以包括所述目标流媒体资源的清晰度参数。相应地,向源站服务器发送的数据下载请求中也可以包括所述清晰度参数,从而使得源站服务器可以知晓应当从哪个版本的目标流媒体资源的数据中截取对应的指定数据段。这样,接收到的所述响应报文中便可以包含所述清晰度参数对应的目标流媒体资源中的指定数据段。

在本实施方式中,在将下载的内容反馈给所述资源获取请求的发起方之后,若接收到所述发起方发来的清晰度切换请求,可以停止将下载的内容反馈给所述发起方。然后可以解析所述清晰度切换请求中包含的切换后的清晰度参数,并可以按照步骤s1至s7中的类似步骤,向所述源站服务器发送用于获取切换清晰度后的目标流媒体资源中指定数据段的数据下载请求。然后可以接收所述源站服务器反馈的包含所述切换清晰度后的目标流媒体资源中指定数据段的响应报文,并根据所述响应报文计算适配于所述切换清晰度后的目标流媒体资源的回源速率。最终,可以按照所述回源速率从所述源站服务器处下载所述切换清晰度后的目标流媒体资源,并在下载所述切换清晰度后的目标流媒体资源时,将下载的内容反馈给所述发起方。这样,当用户客户端切换目标流媒体资源的清晰度时,缓存服务器可以随即计算出新的相适配的回源速率,并按照新的回源速率获取对应清晰度的目标流媒体资源,从而保证用户客户端依然能够流畅地播放清晰度切换后的目标流媒体资源。

请参阅图4,本申请还提供一种缓存服务器,所述缓存服务器包括:

资源获取请求接收单元,用于接收指向目标流媒体资源的资源获取请求;

数据下载请求发送单元,用于在所述目标流媒体资源未缓存的情况下,向源站服务器发送用于获取所述目标流媒体资源中指定数据段的数据下载请求;所述指定数据段至少用于表征所述目标流媒体资源的播放时长;

响应报文接收单元,用于接收所述源站服务器反馈的包含所述指定数据段的响应报文,并根据所述响应报文计算适配于所述目标流媒体资源的回源速率;

回源下载单元,用于按照所述回源速率从所述源站服务器处下载所述目标流媒体资源,并在下载所述目标流媒体资源时,将下载的内容反馈给所述资源获取请求的发起方。

请参阅图5,本申请还提供一种缓存服务器,所述缓存服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现如上述的流媒体资源的下载方法。具体地,如图5所示,在硬件层面,该缓存服务器可以包括处理器、内部总线和存储器。所述存储器可以包括内存以及非易失性存储器。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述识别装置的结构造成限定。例如,所述缓存服务器还可包括比图5中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如gpu(graphicsprocessingunit,图像处理器),或者具有与图5所示不同的配置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等。

本实施方式中,所述的处理器可以包括中央处理器(cpu)或图形处理器(gpu),当然也可以包括其他的具有逻辑处理能力的单片机、逻辑门电路、集成电路等,或其适当组合。本实施方式所述的存储器可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如ram、fifo等;在系统中,具有实物形式的存储设备也可以叫存储器等。实现的时候,该存储器也可以采用云存储器的方式实现,具体实现方式,本说明书不错限定。

需要说明的是,本说明书中的缓存服务器,具体的实现方式可以参照方法实施方式的描述,在此不作一一赘述。

由上可见,本申请提供的技术方案,缓存服务器接收到指向目标流媒体资源的资源获取请求后,若本地缓存中不存在该目标流媒体资源,那么缓存服务器可以向存储所述目标流媒体资源的源站服务器发送数据下载请求,该数据下载请求可以仅请求下载目标流媒体资源中的指定数据段,所述指定数据段可以表征目标流媒体资源的播放时长。

源站服务器接收到该数据下载请求后,可以获取所述指定数据段的内容,并将指定数据段放置于响应报文中,向缓存服务器反馈该响应报文。

缓存服务器在接收到包含所述指定数据段的响应报文后,可以计算出适配于该目标流媒体资源的回源速率。后续,缓存服务器可以按照该回源速率从源站服务器处下载该目标流媒体资源,并且在一边下载目标流媒体资源时,一边将下载的内容反馈给资源获取请求的发起方。

在本申请中,通过获取目标流媒体资源中的指定数据段,并按照响应报文的内容计算出适配于目标流媒体资源的回源速率,一方面可以保证按照该回源速率下载目标流媒体资源时,反馈给发起方的内容能够流畅地播放,另一方面,按照该回源速率下载目标流媒体资源时,不会占用全部的回源带宽,从而避免了cdn中缓存服务器的整体回源带宽较高的情况,进而降低了cdn中的回源带宽,节省了cdn的运营成本。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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