CDN服务器及其缓存数据的方法与流程

文档序号:13109461阅读:348来源:国知局
技术领域本发明实施例涉及网络通信领域,尤其涉及一种CDN服务器及其缓存数据的方法。

背景技术:
内容分发网络(ContentDeliveryNetwork,CDN)依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。CDN网络中的一个节点即为一个CDN服务器,这些CDN服务器分布到用户访问相对集中的地区或网络中。在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的CDN服务器上,在CDN服务器缓存有用户访问的数据时,该CDN服务器可以直接响应用户请求,在CDN服务器未缓存有用户访问的数据时,该CDN服务器才向CDN源站请求数据,降低了CDN源站的负载,所述CDN源站是指发布内容的原始站点。现有技术中,客户端可以发送超文本传输协议(HyperTextTransferProtocol,HTTP)请求消息至CDN服务器,用于请求数据,若该CDN服务器缓存有该客户端需求的数据,则该CDN服务器将缓存的该数据发送至该客户端,若该CDN服务器未缓存有该客户端需求的数据,则该CDN服务器可以将该HTTP请求消息发送至CDN源站,从该CDN源站中获取该客户端需求的数据并进行缓存。但是,由于客户端发送至CDN服务器的HTTP请求消息可能仅请求文件中的部分数据,而非文件的完整数据,在此种情况下,若多个HTTP请求消息请求的是同一文件中不同但是互有重叠的数据,重叠的这部分数据将被CDN服务器重复缓存,例如,第一个HTTP请求消息要求获取文件中的0至100MB(兆字节)数据,第二个HTTP请求消息要求获取同一文件中的4至100MB数据,此时,该文件中的4至100MB数据会被CDN服务器重复缓存,浪费了CDN服务器的缓存资源。

技术实现要素:
本发明实施例提供一种CDN服务器及其缓存数据的方法,以解决现有技术对CDN服务器的缓存资源浪费较大的缺陷,实现对数据进行分片缓存。本发明实施例提供一种CDN服务器缓存数据的方法,包括:CDN服务器接收第一超文本传输协议HTTP请求消息,所述第一HTTP请求消息用于访问第一文件中目标范围内的数据;所述CDN服务器将所述目标范围划分为至少两个子范围,并在所述至少两个子范围中确定数据未在所述CDN服务器缓存的目标子范围;所述CDN服务器针对每个所述目标子范围生成一个用于请求所述目标子范围内的数据的HTTP请求消息;所述CDN服务器将生成的所述HTTP请求消息发送至CDN源站;所述CDN服务器接收所述CDN源站发送的包括所述目标子范围内的数据的HTTP响应消息,并对所述目标子范围内的数据进行缓存。本发明实施例提供一种CDN服务器,包括:第一接收单元,用于接收第一超文本传输协议HTTP请求消息,所述第一HTTP请求消息用于访问第一文件中目标范围内的数据;划分单元,用于将所述目标范围划分为至少两个子范围,并在所述至少两个子范围中确定数据未在所述CDN服务器缓存的目标子范围;生成单元,用于针对每个所述目标子范围生成一个用于请求所述目标子范围内的数据的HTTP请求消息;发送单元,用于将生成的所述HTTP请求消息发送至CDN源站;第二接收单元,用于接收所述CDN源站发送的包括所述目标子范围内的数据的HTTP响应消息;缓存单元,用于对所述目标子范围内的数据进行缓存。本发明实施例提供的一种CDN服务器及其缓存数据的方法,所述CDN服务器在接收到所述第一HTTP请求消息后,将请求的目标范围划分为至少两个子范围,并在所述至少两个子范围中确定数据未在所述CDN服务器缓存的目标子范围;所述CDN服务器针对每个所述目标子范围生成一个用于请求所述目标子范围内的数据的HTTP请求消息;所述CDN服务器将生成的所述HTTP请求消息发送至CDN源站;所述CDN服务器接收所述CDN源站发送的包括所述目标子范围内的数据的HTTP响应消息,并对所述目标子范围内的数据进行缓存。也就是说,CDN服务器将HTTP请求消息请求的目标数据分成更小粒度的数据分片进行存储,这样,所述CDN服务器接收多个请求同一文件中不同但是互有重叠的数据的HTTP请求消息时,所述CDN服务器对于重叠的那部分数据中已经进行分片缓存的数据,无需再从所述CDN源站进行获取,避免了对这部分数据的重复缓存,并且,数据粒度越小,两个数据分片中可能存在的重复数据也越少,降低了对CDN处理器缓存资源的浪费。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种CDN服务器缓存数据的方法的流程示意图;图2为本发明实施例提供的另一种CDN服务器缓存数据的方法的流程示意图;图3为本发明实施例提供的一种CDN服务器的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了使本领域的技术人员更容易理解本发明实施例提供的技术方案,下面首先对本发明实施例涉及到的相关技术进行简单介绍。HTTP是一套计算机通过网络进行通信的规则,使用HTTP客户端通过发送HTTP请求消息能够向HTTP服务器请求信息和服务,所述HTTP客户端可以为Web浏览器,所述HTTP服务器可以为Web服务器。HTTP请求消息由三个部分组成:请求行(RequestLine)、消息头(MessageHeaders)和消息体(EntityBody),其中,消息头与消息体之间通过空行来分隔。具体地,请求行由三个标记组成:请求方法、统一资源标识符(UniformResourceIdentifier,URI)和HTTP版本,例如:GET/news.aspHTTP/1.1。以上代码中“GET”代表请求方法,“/news.asp”表示URI,“HTTP/1.1”代表协议版本。值得说明的是,URI完整地指定了要访问的HTTP服务器中的网络资源,通常只要给出相对于服务器的根目录的相对目录即可。消息头允许HTTP客户端向HTTP服务器传递关于请求或者关于客户端的附加信息。消息头包括Host头域,Referer头域等字段,其中,Host头域表示请求资源的主机和端口号,Referer头域允许客户端指定请求URI的源资源地址。值得说明的是,Range是在HTTP/1.1里新增的一个头域,range头域允许客户端请求实体的一个或者多个子范围。这样,若HTTP请求消息中包括统一资源标识符以及range信息,则请求的数据的目标范围即为对应该统一资源标识符的文件中该range信息指示的范围,若该HTTP请求消息中包括统一资源标识符不包括range信息,则请求的数据的目标范围即为对应该统一资源标识符的文件中的完整数据的范围。消息体用于携带与请求相关联的数据,例如一些请求需要的参数等。由消息头中的内容长度Content-Type和内容类型Content-Length来指示。现有技术中,CDN服务器对于请求同一文件中不同但是互有重叠的数据的多个HTTP请求消息的处理,导致CDN服务器重复缓存重叠的这部分数据,浪费缓存资源。本发明实施例提供一种CDN服务器缓存数据的方法,如图1所示,该方法包括:步骤100、CDN服务器接收第一超文本传输协议HTTP请求消息,所述第一HTTP请求消息用于访问第一文件中目标范围内的数据。其中,所述第一HTTP请求消息包括所述第一文件的统一资源标识符。所述第一HTTP请求消息还可以包括指示待读取的数据在所述第一文件中的位置的range信息,在此种情况下,所述目标范围即该range信息指示的范围,所述第一HTTP请求消息也可以不包括range信息,此时,所述目标范围即为所述第一文件中的完整数据的范围。步骤101、所述CDN服务器将所述目标范围划分为至少两个子范围,并在所述至少两个子范围中确定数据未在所述CDN服务器缓存的目标子范围。可选地,所述CDN服务器可以是按照预设分片规则将所述目标范围划分为至少两个子范围。在具体实施时,可以根据实际需求对所述分片规则进行设定,例如,预先设定每个分片的大小,或者,预先设定每个分片的数量。值得说明的是,所述CDN服务器在接收到所述第一HTTP请求消息之前,可能已经分片缓存有所述第一文件的完整数据,也可能是已经分片缓存有所述第一文件中的部分数据,因此,所述CDN服务器将所述目标范围划分为至少两个子范围后,所述CDN服务器的缓存中可能存在某些子范围内的数据。对于数据已经缓存在所述CDN服务器中的子范围,所述CDN服务器无需生成对应的HTTP请求消息,避免了再次从CDN源站获取,进而避免了再次缓存,降低了缓存资源浪费。步骤102、所述CDN服务器针对每个所述目标子范围生成一个用于请求所述目标子范围内的数据的HTTP请求消息。具体地,所述CDN服务器生成的每个HTTP请求消息中的统一资源标识符均为第一文件在CDN源站的统一资源标识符,与所述第一HTTP请求消息中的统一资源标识符相同,并且,所述CDN服务器生成的每个HTTP请求消息中还包括用于指示所述子范围的range信息。步骤103、所述CDN服务器将生成的所述HTTP请求消息发送至CDN源站。步骤104、所述CDN服务器接收所述CDN源站发送的包括所述目标子范围内的数据的HTTP响应消息,并对所述目标子范围内的数据进行缓存。值得说明的是,现有的CDN源站在接收到包括range信息的HTTP请求消息时,该CDN源站返回的HTTP响应消息除了携带该range信息指示的范围内的数据,还携带的响应码为206。在本发明实施例中,所述CDN服务器可以在接收到包括所述HTTP响应消息后,根据所述HTTP响应消息包括的响应码206对所述目标子范围内的数据进行缓存。采用上述方法,所述CDN服务器接收多个请求同一文件中不同但是互有重叠的数据的HTTP请求消息时,所述CDN服务器对于重叠的那部分数据中已经进行分片缓存的数据,无需再从所述CDN源站进行获取,避免了对这部分数据的重复缓存,并且,数据粒度越小,两个数据分片中可能存在的重复数据也越少,降低了对CDN处理器缓存资源的浪费。为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供的一种CDN服务器缓存数据的方法进行详细说明,如图2所示,该方法包括:步骤200、CDN服务器接收客户端发送的第一HTTP请求消息,所述第一HTTP请求消息用于请求第一文件中目标范围为0至99MB的数据。示例地,所述第一HTTP请求消息包括该第一文件的统一资源标识符,还包括如下所示的range信息:Range:bytes=0-99MB。步骤201、所述CDN服务器将所述0至99MB的目标范围划分为大小均为10MB的10个子范围。也就是说,将目标范围0至100MB划分为0至9MB、10至19MB、20至29MB、30至39MB、40至49MB、50至59MB、60至69MB、70至79MB、80至89MB、90至99MB共10个子范围。步骤202、所述CDN服务器确定所述CDN服务器未缓存所述10个子范围中的数据。步骤203、所述CDN服务器针对所述10个子范围中的每个子范围生成一个对应的HTTP请求消息。示例地,针对子范围0至9MB,生成的HTTP请求消息中的range信息为:Range:bytes=0-9MB;针对子范围10至19MB,生成的HTTP请求消息中的range信息为:Range:bytes=10-19MB;针对子范围20至29MB,生成的HTTP请求消息中的range信息为:Range:bytes=20-29MB;针对子范围30至39MB,生成的HTTP请求消息中的range信息为:Range:bytes=30-39MB;针对子范围40至49MB,生成的HTTP请求消息中的range信息为:Range:bytes=40-49MB;针对子范围50至59MB,生成的HTTP请求消息中的range信息为:Range:bytes=50-59MB;针对子范围60至69MB,生成的HTTP请求消息中的range信息为:Range:bytes=60-69MB;针对子范围70至79MB,生成的HTTP请求消息中的range信息为:Range:bytes=70-79MB;针对子范围80至89MB,生成的HTTP请求消息中的range信息为:Range:bytes=80-89MB;针对子范围90至99MB,生成的HTTP请求消息中的range信息为:Range:bytes=90-99MB。并且,上述所有CDN服务器生成的HTTP请求消息均包括所述第一文件的统一资源标识符。上述对目标范围的划分方式仅是本发明实施例的一种可能的实现方式,在具体实施时,用户可以根据实际需求预先设置划分方式,包括对于每个子范围的大小的设置,或者,对子范围数量的设置,本发明对此不做限定。步骤204、所述CDN服务器将生成的所述HTTP请求消息发送至CDN源站。值得说明的是,本发明实施例对于CDN服务器生成的多个HTTP请求消息的发送顺序不做限定,并且可以同步发送也可以异步发送。步骤205、所述CDN源站根据接收到的所述HTTP请求消息获取所述10个子范围中的数据。步骤206、所述CDN源站将包括每个子范围中的数据的每个HTTP响应消息分别发送至所述CDN服务器。具体地,针对上述CDN服务器发送的10个HTTP请求消息,所述CDN源站将发送10个对应的HTTP响应消息至所述CDN服务器,每个HTTP响应消息包括对应的子范围中的数据。步骤207、所述CDN服务器接收所述CDN源站发送的所述HTTP响应消息,并分别缓存所述10个子范围内的数据。示例地,每个HTTP响应消息除了包括对应的子范围内的数据,还包括响应码206,所述CDN服务器每接收到一个HTTP响应消息后,根据所述HTTP响应消息中的响应码206缓存一个子范围内的数据,实现了对0至99MB的目标范围中的数据的分片存储。步骤208、所述CDN服务器合并所述10个子范围内的数据得到目标范围0至100MB内的数据,并将所述数据发送至所述客户端。步骤209、所述CDN服务器接收所述客户端发送的第二HTTP请求消息,所述第二HTTP请求消息用于请求第一文件中目标范围为0至96MB的数据。步骤210、所述CDN服务器将所述0至89MB的范围划分为大小均为10MB的9个子范围,剩余的90至96MB为第10个子范围。具体地,所述大小均为10MB的9个子范围具体为第一文件中的范围0至9MB、10至19MB、20至29MB、30至39MB、40至49MB、50至59MB、60至69MB、70至79MB、80至89MB。步骤211、所述CDN服务器确定所述CDN服务器中缓存有所述大小均为10MB的9个子范围中的数据,且未缓存所述第10个子范围中的数据。步骤212、所述CDN服务器生成用于请求所述第10个子范围中的数据的HTTP请求消息。由上述步骤200至步骤207可知,所述CDN服务器已缓存有第一文件的0至9MB、10至19MB、20至29MB、30至39MB、40至49MB、50至59MB、60至69MB、70至79MB、80至89MB共9个子范围中的数据,未单独缓存90至96MB范围内的数据。因此,所述CDN服务器无需针对上述9个子范围生成对应的HTTP请求消息,避免了再次从CDN源站获取,进而避免了再次缓存,降低了缓存资源浪费。步骤213、所述CDN服务器将生成的所述HTTP请求消息发送至所述CDN源站。步骤214、所述CDN服务器接收所述CDN源站发送的包括所述第10个子范围中的数据的HTTP响应消息,并缓存所述第10个子范围中的数据。值得说明的是,步骤207中,所述CDN服务器缓存有90至99MB范围内的数据,步骤214中,所述CDN服务器缓存90至96MB范围内的数据,两次缓存中90至96MB范围内的数据被重复缓存,但是,由于数据分片较小,重复的数据量较少,相比现有技术分别缓存0至99MB范围内的数据以及0至96MB范围内的数据,本发明实施例降低了缓存资源的浪费。步骤215、所述CDN服务器合并所述9个子范围中的数据与所述第10个子范围中的数据,得到所述目标范围0至96MB内的数据,并将所述数据发送至所述客户端。采用上述方法,所述CDN服务器将HTTP请求消息请求的目标数据分成更小粒度的数据分片进行存储,降低了CDN缓存资源的浪费,并且,更小粒度的数据缓存有利于提高缓存效率,并且,同一文件的数据的每个数据分片之间异步缓存,避免了只有在所述文件的完整数据全部缓存后,客户端才能进行访问的缺陷,提高了对客户端的响应速度。值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。本发明实施例还提供一种CDN服务器30,用于实施上述方法实施例提供的一种CDN缓存数据的方法,如图3所示,所述CDN服务器30包括:第一接收单元31,用于接收第一超文本传输协议HTTP请求消息,所述第一HTTP请求消息用于访问第一文件中目标范围内的数据;划分单元32,用于将所述目标范围划分为至少两个子范围,并在所述至少两个子范围中确定数据未在所述CDN服务器缓存的目标子范围;生成单元33,用于针对每个所述目标子范围生成一个用于请求所述目标子范围内的数据的HTTP请求消息;发送单元34,用于将生成的所述HTTP请求消息发送至CDN源站;第二接收单元35,用于接收所述CDN源站发送的包括所述目标子范围内的数据的HTTP响应消息;缓存单元36,用于对所述目标子范围内的数据进行缓存。其中,所述第一HTTP请求消息可以包括range信息,在此种情况下,所述目标范围为所述range信息指示的待读取数据在所述第一文件中的范围。所述第一HTTP请求消息也可以不包括range信息,在此种情况下,所述目标范围为所述第一文件的完整数据的范围。可选地,所述划分单元32具体用于:按照预设分片规则将所述目标范围划分为至少两个子范围。在具体实施时,可以根据实际需求对所述分片规则进行设定,例如,预先设定每个分片的大小,或者,预先设定每个分片的数量。可选地,所述生成单元33生成的所述HTTP请求消息包括用于指示所述目标子范围的range信息。参照上述对图2所示方法实施例中的步骤203的描述,此处不再赘述。可选地,所述HTTP响应消息还包括响应码206;所述缓存单元36具体用于:根据所述响应码206对所述目标子范围内的数据进行缓存。值得说明的是,现有的CDN服务器在接收到HTTP响应消息后,若该HTTP响应消息中携带的响应码为206,则不对该HTTP响应消息携带的数据进行缓存,而本发明实施例提供的CDN服务器可以在HTTP响应消息中的响应码为206时,也对数据进行缓存。采用上述CDN服务器,所述CDN服务器将HTTP请求消息请求的目标数据分成更小粒度的数据分片进行存储,这样,所述CDN服务器接收多个请求同一文件中不同但是互有重叠的数据的HTTP请求消息时,所述CDN服务器对于重叠的那部分数据中已经进行分片缓存的数据,无需再从所述CDN源站进行获取,避免了对这部分数据的重复缓存,并且,数据粒度越小,两个数据分片中可能存在的重复数据也越少,降低了对CDN处理器缓存资源的浪费。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的各单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1