一种面向大文件分发场景的分片缓存及重组方法与流程

文档序号:16545405发布日期:2019-01-08 20:49阅读:610来源:国知局
一种面向大文件分发场景的分片缓存及重组方法与流程

本发明涉及一种cdn(contentdeliverynetwork内容分发网络)领域,尤其是涉及一种面向大文件分发场景的分片缓存及重组方法。



背景技术:

在提供互联网服务的网站中大多已经使用了cdn进行网站内容的分发加速传输,以提升用户的访问体验,降低源站的负载。cdn是在传统的网络架构中,在服务器与客户端之间增加了一系列部署在不同区域的缓存节点,从而通过缓存是同区域用户快速获取内容。

在目前针对视频、软件下载等大文件的请求,客户端通常会有range请求和非range请求,cdn服务器也会根据客户端的请求类型向源站发起同样的类型的请求,但是针对range请求,cdn节点不会将请求下来的分片文件进行缓存的。

基于上述场景,在大文件分发过程中会有以下几点不足:(1)对于客户端的range请求,cdn直接转发该range请求进行回源,因range的不确定性通常节点不会对应的片段进行缓存,从而每个来自客户端的range请求都要回源获取,会造成大量的回源,回源带宽浪费;(2)即便对(1)中描述的片段进行缓存,cdn节点也无法对其再次利用,属于无意义缓存,会造成存储空间的浪费;(3)大文件完整缓存回源时间长,分发性能低,必须要做预缓存,否则分发成功率很低。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种面向大文件分发场景的分片缓存及重组方法。

本发明的目的可以通过以下技术方案来实现:

一种面向大文件分发场景的分片缓存及重组方法,该方法在cdn内容分发网络的各个节点中进行部署实现,用于对网站的页面、图片、视频文件、下载大文件通过缓存进行分发加速服务,旨在让终端用户能够更快速的获取到要访问的内容或文件。

优选地,所述的方法包括:

cdn节点收到来自客户端的文件访问请求,包括情形一:客户端请求整个文件,以及情形二:客户端进行range请求,请求文件某个片段。

优选地,所述的情形一:客户端请求整个文件,具体过程如下:

(1.1)如果当前节点已经缓存被请求文件的所有分片,则直接将这些文件分片进行重组,并返回给客户端;

(1.2)如果当前节点没有对该文件进行缓存,则该节点会进行回源;

(1.3)如果当前节点缓存了部分片段,则cdn节点会首先向源站以range请求的方式请求该文件未被缓存的片段,并进行片段重组,返回给客户端。

优选地,所述的节点会进行回源具体为:

首先节点向源站发起一个获取文件大小的请求,得到文件大小之后,当前节点会按照分片回源的配置确定将源文件分成多少个片段;

之后cdn节点会向源站发起range请求,并按照请求下来的片段进行缓存,同时将已经缓存的片段进行重组,返回给客户端。

优选地,所述的情形二:客户端进行range请求,请求文件某个片段,具体过程如下:

(2.1)如果请求的片段字节范围全部包含在当前节点已经缓存的片段中,则当前节点会从已缓存片段中截取客户端请求的片段字节范围,并进行重组,然后将重组的片段返回给客户端;

(2.2)如果请求的片段字节范围全部不包含在当前节点已经缓存的片段中,则当前节点会按照分片回源的配置去向源站发起range请求,来请求包含客户端请求的片段字节范围的片段,将回源获取的片段进行重组,然后将重组的片段返回给客户端。

优选地,所述的情形二:客户端进行range请求,请求文件某个片段,具体过程还包括:

(2.3)如果请求的片段字节范围部分包含在当前节点已经缓存的片段中,则当前节点会从已缓存片段中截取客户端请求的片段字节范围,按照分片回源的配置去向源站发起range请求,来请求包含客户端请求的片段字节范围但未被当前节点缓存的片段进行缓存,节点将从缓存的片段中截取截取客户端请求的片段字节范围,并进行重组,然后将重组的片段返回给客户端。

与现有技术相比,本发明具有以下优点:

由于在cdn节点添加了针对大文件分发的分片缓存和重组机制,节点可以根据该机制进行range回源,并缓存获取的片段,因该机制中包含对片段的标记,可以被节点识别和再次利用。从而实现了在节点收到来自客户端对相应文件的请求时,从缓存的片段中选择客户端请求的字节范围并进行重组返回。解决了以下问题:(1)减少了回源次数,节省了回源带宽;(2)不进行无意义缓存,节省了存储空间;(3)对于没能进行预缓存的大文件,可在回源同时向客户端转发,提升了大文件分发效率。

附图说明

图1为本发明客户端进行range请求并请求文件某个片段的流程图;

图2为本发明客户端请求整个文件的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

本发明提供了一种面向大文件分发场景的分片缓存及重组机制。在cdn内容分发网络的各个节点中进行部署实现。详细实现方法如下:

cdn节点收到来自客户端的文件访问请求:

(1)情形一:客户端请求整个文件,如图2所示;

(1.1)如果当前节点已经缓存被请求文件的所有分片,则直接将这些文件分片进行重组,并返回给客户端;

(1.2)如果当前节点没有对该文件进行缓存,则该节点会进行回源。首先节点向源站发起一个获取文件大小的请求,得到文件大小之后,当前节点会按照分片回源的配置确定将源文件分成多少个片段。之后cdn节点会向源站发起range请求,并按照请求下来的片段进行缓存。同时将已经缓存的片段进行重组,返回给客户端。

(1.3)如果当前节点缓存了部分片段,则cdn节点会首先想源站以range请求的方式请求该文件未被缓存的片段,并进行片段重组,返回给客户端。

(2)情形二:客户端进行range请求,请求文件某个片段,如图1所示:

(2.1)如果请求的片段字节范围全部包含在当前节点已经缓存的片段中,则当前节点会从已缓存片段中截取客户端请求的片段字节范围,并进行重组,然后将重组的片段返回给客户端;

(2.2)如果请求的片段字节范围全部不包含在当前节点已经缓存的片段中,则当前节点会按照分片回源的配置去向源站发起range请求,来请求包含客户端请求的片段字节范围的片段,将回源获取的片段进行重组,然后将重组的片段返回给客户端;

(2.3)如果请求的片段字节范围部分包含在当前节点已经缓存的片段中,则当前节点会从已缓存片段中截取客户端请求的片段字节范围,按照分片回源的配置去向源站发起range请求,来请求包含客户端请求的片段字节范围但未被当前节点缓存的片段进行缓存。节点将从缓存的片段中截取截取客户端请求的片段字节范围,并进行重组,然后将重组的片段返回给客户端。

具体实施例:

某文件大小100mb,客户端向cdn节点请求该文件。

(1)可能的请求类型一:range请求

(1.1)客户端发起的range请求,http状态码为206片段范围是[3.6m,5.4m],即该请求要获取文件的第3.6m个字节到第5.4m个字节。

(1.2)cdn某节点收到该请求,首先判断[3.6m,5.4m]是否包含在已经缓存的片段中。

(1.3)可能的情况一:[3.6m,5.4m]部包含在已经缓存的片段中,则当前节点按照配置的range回源规则进行回源。回源的range大小是预设好的,默认为1m。如果想要获取[3.6m,5.4m]这个范围的文件,就要回源请求[3m,4m]、[4m,5m]、[5m,6m]这三个片段。当前节点得到上述三个片段并缓存。按照客户端请求的[3.6m,5.4m]这个范围要求,节点会调用重组机制,从[3m,4m]获取[3.6m,4m],从[5m,6m]获取[5m,5.4m],在将[3.6m,4m]、[4m,5m]、[5m,5.4m]重组返回给客户端。节点不会缓存重组后的数据。

(1.4)可能的情况二:[3.6m,5.4m]包含在已经缓存的片段中,则当前节点不需要回源,只是从已经缓存的[3m,4m]、[4m,5m]、[5m,6m]这三个片段中获取对应数据并重组。按照客户端请求的[3.6m,5.4m]这个范围要求,节点会调用重组机制,从[3m,4m]获取[3.6m,4m],从[5m,6m]获取[5m,5.4m],在将[3.6m,4m]、[4m,5m]、[5m,5.4m]重组返回给客户端。节点不会缓存重组后的数据。

(1.5)可能的情况三:[3.6m,5.4m]部分包含在已经缓存的片段中,则当前节点只回源获取未缓存的片段,例如已经缓存[3m,4m]、[4m,5m],则只需回源获取[5m,6m]。按照客户端请求的[3.6m,5.4m]这个范围要求,节点会调用重组机制,从[3m,4m]获取[3.6m,4m],从[5m,6m]获取[5m,5.4m],在将[3.6m,4m]、[4m,5m]、[5m,5.4m]重组返回给客户端。节点不会缓存重组后的数据。

(2)可能的请求类型一二:客户端请求整个文件。

(2.1)客户端发起的对整个文件的请求,http状态码为200;

(2.2)cdn某节点收到该请求,首先判断当前节点缓存了该文件的哪些片段。

(2.3)可能的情况一:该文件全部片段都缓存在当前节点,则节点会调用重组机制,将文件从第一个片段开始重组,并将重组的文件返回给客户端。节点不会缓存重组后的数据。

(2.4)可能的情况二:该文件全部片段都未缓存在当前节点,则当前节点按照配置的range方式回源规则进行回源。回源的range大小是预设好的,默认为1m。回源获取[0m,1m]、[1m,2m]、[2m,3m]……直至获取该文件的全部片段。同时,获得[0m,1m]、[1m,2m]片段后,节点会开始调用重组机制,将片段进行重组,边回源边重组边向客户端返回文件。节点不会缓存重组后的数据。

(2.5)可能的情况三:该文件部分片段已经缓存在当前节点,则当前节点按照配置的range方式回源规则进行回源获取未缓存的片段。回源的range大小是预设好的,默认为1m。同时,在当前节点获得或者已有缓存[0m,1m]、[1m,2m]片段的情况下,节点会开始调用重组机制,将片段进行重组,边回源边重组边向客户端返回文件。节点不会缓存重组后的数据。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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