CN104935648B - 一种高性价比的cdn系统及文件预推、分片缓存的方法 - Google Patents

一种高性价比的cdn系统及文件预推、分片缓存的方法 Download PDF

Info

Publication number
CN104935648B
CN104935648B CN201510296893.3A CN201510296893A CN104935648B CN 104935648 B CN104935648 B CN 104935648B CN 201510296893 A CN201510296893 A CN 201510296893A CN 104935648 B CN104935648 B CN 104935648B
Authority
CN
China
Prior art keywords
file
advance
request
cache
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201510296893.3A
Other languages
English (en)
Other versions
CN104935648A (zh
Inventor
吴泽林
李灵韵
张敬春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING FASTWEB Tech Inc
Original Assignee
BEIJING FASTWEB Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING FASTWEB Tech Inc filed Critical BEIJING FASTWEB Tech Inc
Priority to CN201510296893.3A priority Critical patent/CN104935648B/zh
Publication of CN104935648A publication Critical patent/CN104935648A/zh
Application granted granted Critical
Publication of CN104935648B publication Critical patent/CN104935648B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种高性价比的CDN系统及文件预推、分片缓存的方法,涉及计算机网络、用于提高IO子系统的性能的技术领域。通过文件预推后台和带有一致性Hash模块的缓存服务器,实现了大文件主动预推,同时,通过利用回源代理模块,实现了大文件分片缓存,有效地降低了系统服务中每个文件使用的回源带宽和存储空间,提高了资源使用率,降低了使用成本;另外,本发明中,通过多层存储系统,有效地提高了系统整体的存储性能,进一步提高了系统的服务性能。

Description

一种高性价比的CDN系统及文件预推、分片缓存的方法
技术领域
本发明涉及计算机网络、用于提高IO子系统的性能的技术领域,尤其涉及一种高性价比的CDN系统及文件预推、分片缓存的方法。
背景技术
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各地放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网缀流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
目前,CDN系统都使用反向代理缓存服务器处理用户请求。其工作原理是在文件的第一次请求时,被动回源拉取文件,响应用户的请求的同时,将文件存放在本地缓存。以后的请求将直接由本地缓存吐出。目前常见的开源缓存服务器,如Squid等,对小文件服务良好。但对大文件服务的效果不好,主要原因在于客户请求大文件时,往往未等待文件下载完毕就中断连接,这时缓存服务器将放弃对该文件的缓存,以后的请求将一直回源,直至到有一次完整下载为止。虽然有选项可以忽略用户中止继续回源,但这样又可能浪费回源带宽。同时大文件的请求很可能是分片请求,这时Squid等又将直接回源,而不能缓存文件。
另外,节点内的缓存服务器被DNS调度,同一条URL可能均匀打到节点内每台缓存服务器上,这样导致同一个文件在节点内重复存储,变相于降低整个节点的存储空间,导致冷门文件频繁被淘汰,增加回源带宽。
发明内容
本发明的目的在于提供一种高性价比的CDN系统及文件预推、分片缓存的方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种高性价比的CDN系统,包括:
文件预推后台:用于记录客户的文件预推请求,还用于将文件预推请求进行转换处理后,发送至一个或多个缓存节点;
缓存节点:包括一个Linux虚拟服务器和多台缓存服务器,多台所述缓存服务器分别与所述Linux虚拟服务器数据连接;
Linux虚拟服务器:用于挑选一台缓存服务器,还用于将所述文件预推后台发送的文件预推请求转发到挑选出的缓存服务器上;
缓存服务器:包括一致性Hash模块、多层存储系统和回源代理模块;所述一致性Hash模块用于接收所述Linux虚拟服务器转发的文件预推请求,并根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的缓存服务器的地址和磁盘号;所述多层存储系统用于文件的调度存储;所述回源代理模块用于通过分片缓存的方式处理回源请求。
进一步地,所述缓存服务器还包括业务接入层,所述业务接入层用于满足用户的个性化需求。
可选地,所述文件预推后台采用如下方法实现:
A1,通过任务接入接口接收客户发送的需要预推的任务,并存入数据库;
A2,定时从数据库中读取需要分发的任务,并发送到所有的缓存节点上;
A3,定时从数据库中读取需要进行回调的任务,将任务的完成状态发送到客户提供的任务回调接口;
A4,任务回调接口接收任务的完成状态的信息,并在后台显示每个缓存节点的任务完成情况。
可选地,所述Linux虚拟服务器采用如下方法实现:Linux虚拟服务器使用RoundRobin算法,挑选一台缓存服务器,再将文件预推请求转发到该台挑选好的缓存服务器上。
可选地,所述一致性Hash模块采用如下方法实现:
一致性Hash模块按以下格式保存缓存服务器的地址和磁盘号:
192.168.0.1/data1
192.168.0.1/data2
192.168.0.1/data3
192.168.0.10/data1
192.168.0.10/data2
192.168.0.10/data3
其中,data1、data2和data3均为对应缓存服务器上的磁盘挂载目录,以预推请求URL为Key,使用一致性Hash算法,确定URL对应的缓存服务器的地址和磁盘号,修改URL,加上服务域名和磁盘号,并代理到缓存服务器的地址上。
可选地,所述多层存储系统包括:内存盘、SSD和机械硬盘。
可选地,所述多层存储系统采用如下方法实现调度存储:
B1,统计设定时间段内每个文件的访问热度;
B2,按访问热度从高到低的顺序对所有文件进行排序,并划分为最热文件、次热文件和冷门文件;
B3,将最热文件装载到内存盘中,次热文件装载到SSD中,冷门文件存放在机械硬盘中。
一种利用上述高性价比的CDN系统进行文件预推的方法,包括如下步骤:
C1,文件预推后台将文件预推请求发送至Linux虚拟服务器;
C2,Linux虚拟服务器将文件预推请求转发到节点内的一台缓存服务器上;
C3,缓存服务器根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的本地缓存服务器的地址和磁盘号;
C4,根据文件预推请求,调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中。
可选地,B4中,所述调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中,包括如下步骤:
D1,接收文件拉取请求,所述文件拉取请求包括请求URL、文件存储路径、回调标志位和/或源IP、源URL以及文件校验码;
D2,判断源IP是否存在,如果存在,则使用源IP替换请求URL中的服务器地址回源,否则,使用本地缓存服务器的回源代理模块的地址回源或转到D3;
D3,判断源URL是否存在,如果存在,则使用源URL替代请求URL回源,否则,使用本地缓存服务器的回源代理模块的地址回源;
D4,发起文件获取请求,并判断请求是否成功,如果成功,则拉回文件并转到D5,否则,转到D7;
D5,判断所述文件拉取请求中是否存在文件校验码,如果存在,则执行D6,否则,转到D7;
D6,将文件拉取请求中的文件校验码与拉回文件的校验码进行比较,如果文件拉取请求中的文件校验码与拉回文件的校验码不一致,则删除拉回文件;否则,保留拉回文件,并转到D7;
D7,向文件预推后台回报文件拉取任务完成情况。
一种利用上述高性价比的CDN系统分片缓存的方法,包括如下步骤:
E1,判断缓存服务器中是否已经存储文件的大小信息,如果是,则转到E3,否则,继续;
E2,使用HTTP HEAD请求回源,返回响应头,捕获响应头里的Content-Length字段,确定文件的大小;
E3,按照设定的分片大小,对文件构造多个分片;
E4,判断分片是否存在于本地缓存服务器中,如存在,则直接取出;如不存在,则构造带Range头的HTTP GET请求,Range头指示所需的文件分片字节偏移,请求回来所需分片;
E5,拼接全部分片,响应用户请求。
本发明的有益效果是:本发明的目的是提供一种能同时服务于大文件和小文件的CDN系统,主要针对现有技术中的CDN系统对小文件服务良好,但是对大文件服务中存在的回源带宽高,存储空间浪费等问题,构建了一种CDN系统,通过利用该系统中的文件预推后台和带有一致性Hash模块的缓存服务器,实现了大文件主动预推,同时,通过利用回源代理模块,实现了大文件分片缓存,有效地降低了系统服务中每个文件使用的回源带宽和存储空间,提高了资源使用率,降低了使用成本;另外,本发明中,通过多层存储系统,有效地提高了系统整体的存储性能,进一步提高了系统的服务性能。
附图说明
图1是本发明实施例一提供的CDN系统的整体结构示意图;
图2是本发明实施例一提供的缓存服务器的结构示意图;
图3是本发明实施例一提供的文件预推后台实现方法的流程示意图;
图4是本发明实施例一提供的一致性Hash模块实现方法的流程示意图;
图5是本发明实施例一提供的多层存储系统的结构示意图;
图6是本发明实施例一提供的多层存储系统实现调度存储的方法流程示意图;
图7是本发明实施例一提供的多层存储系统实现请求响应的方法流程示意图;
图8是本发明实施例二提供的文件预推方法的流程示意图;
图9是本发明实施例二提供的文件拉取程序的流程示意图;
图10是本发明实施例三提供的分片缓存方式的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例一
如图1-2所示,本发明实施例提供了一种高性价比的CDN系统,包括:
文件预推后台:用于记录客户的文件预推请求,还用于将文件预推请求进行转换处理后,发送至一个或多个缓存节点;
缓存节点:包括一个Linux虚拟服务器和多台缓存服务器,多台所述缓存服务器分别与所述Linux虚拟服务器数据连接;
Linux虚拟服务器:用于挑选一台缓存服务器,还用于将所述文件预推后台发送的文件预推请求转发到挑选出的缓存服务器上;
缓存服务器:包括一致性Hash模块、多层存储系统和回源代理模块;所述一致性Hash模块用于接收所述Linux虚拟服务器转发的文件预推请求,并根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的缓存服务器的地址和磁盘号;所述多层存储系统用于文件的调度存储;所述回源代理模块用于通过分片缓存的方式处理回源请求。
现有技术中,当用户访问本地时,如果本地缓存服务器中存在文件,则本地缓存直接响应用户需求,而如果本地缓存服务器中存在文件,则需要回源。当用户访问量比较大时,则回源量就会比较大,耗费大量的回源带宽,不利于系统的性能提高,不利于缓存服务。
本发明实施例中,采用上述CDN系统,可以在预推后台和缓存节点之间进行文件预推,即客户通过预推后台将预上线的服务分发到缓存节点上,实现文件的预推。则用户访问本地缓存时,则缓存可以直接响应用户请求,从而降低了回源带宽,提高了缓存服务器的服务性价比。
在实际使用过程中,文件预推的实现方法可以包括如下步骤:
文件预推后台将文件预推请求发送至Linux虚拟服务器;
Linux虚拟服务器将文件预推请求转发到节点内的一台缓存服务器上;
缓存服务器根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的本地缓存服务器的地址和磁盘号;
根据文件预推请求,调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中。
其中,文件预推后台可以采用java语言编写,基于spring+dbc的框架搭建,主要功能包括预推节点管理、域名管理、预推任务列表、定时预推程序、预推任务接入/回调接口,
如图3所示,本发明实施例中,文件预推后台可以采用如下方法实现:
A1,通过任务接入接口接收客户发送的需要预推的任务,并存入数据库;
A2,定时从数据库中读取需要分发的任务,并发送到所有的缓存节点上;
A3,定时从数据库中读取需要进行回调的任务,将任务的完成状态发送到客户提供的任务回调接口;
A4,任务回调接口接收任务的完成状态的信息,并在后台显示每个缓存节点的任务完成情况。
本发明实施例中,所述Linux虚拟服务器可以采用如下方法实现:Linux虚拟服务器使用Round Robin算法,挑选一台缓存服务器,再将文件预推请求转发到该台挑选好的缓存服务器上。
在实际使用过程中,缓存节点内的Linux虚拟服务器接收到文件预推请求后,使用Round Robin算法,挑选一台缓存服务器,再将文件预推请求转发到该台挑选好的缓存服务器上。
轮询调度(Round Robin Scheduling)算法就是以轮询的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1)mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
在实际使用过程中,Linux虚拟服务器将文件预推请求发送至缓存服务器的一致性Hash模块中,Linux虚拟服务器与一致性Hash模块组成负载均匀层,负载均匀层提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络网据处理能力、提高网络的灵活性和可用性。
在本发明实施例中,一致性Hash模块按以下格式保存缓存服务器的地址和磁盘号:
192.168.0.1/data1
192.168.0.1/data2
192.168.0.1/data3
192.168.0.10/data1
192.168.0.10/data2
192.168.0.10/data3
其中,data1、data2和data3均为对应缓存服务器上的磁盘挂载目录。
如图4所示,本实施例中,所述一致性Hash模块可以采用如下方法实现:
一致性Hash模块以预推请求URL为Key,使用一致性Hash算法,确定URL对应的缓存服务器的地址和磁盘号,修改URL,加上服务域名和磁盘号,并代理到缓存服务器的地址上。
例如,原请求URL为http://domain/file,假定一致式Hash后得到的结果是192.168.0.3/data1,则将URL修改为http://192.168.0.3/data1/domain/file。
使用一致性Hash算法可以确保每一个文件在缓存节点内只存储一份,以节省存储空间,从而增加存储空间,减少冷门文件被淘汰的机会,从而降低回源带宽以及节点带宽成本。
根据预推文件请求URL,使用一致性Hash算法,确定URL对应的缓存服务器的地址和磁盘号后,调用文件拉取程序,如果拉取成功,则在本地缓存对应的文件,本发明实施例中,构建了多层存储系统。
如图5所示,本发明实施例中,所述多层存储系统包括:内存盘、SSD和机械硬盘。
其中,内存盘是使用Linux系统的tmpfs挂载到文件系统的虚拟盘,内存的随机读写性能和顺序读写性能都比普通硬盘快几个数量级,但由于系统内存空间有限,实作中设定内存盘的大小不超过系统可用内存的一半,所以只用来存放访问最频繁的数据。
SSD是基于NAND等flash存储介质的新型硬盘。相对于机械硬盘,主要优势是具有较高的随机读写性能,可用来存放访问次频繁的数据。但SSD的写入寿命相对较短,SLC型SSD为10万次,MLC型SSD为1万次,TLC型SSD为0.1万次,故SSD应避免频繁写入。
机械硬盘主要具有存储空间大,存储成本小的优势。劣势是较低的随机读写性能。
本实施例中,采用多层存储系统,可以实现对文件的调度存储和调度响应请求。调度存储中,将访问热度不同的文件分别存储在不同的子系统中,则用户访问文件时,系统会先读取随机读取性能最高的子系统中的文件,如果不存在,再读取其他的子系统。
如图6所示,本发明实施例中,所述多层存储系统可以采用如下方法实现调度存储:
B1,统计设定时间段内每个文件的访问热度;
B2,按访问热度从高到低的顺序对所有文件进行排序,并划分为最热文件、次热文件和冷门文件;
B3,将最热文件装载到内存盘中,次热文件装载到SSD中,冷门文件存放在机械硬盘中。
初始情况下,所有的文件均存放在机械硬盘中。随着文件被访问,文件的热度将增加,文件被访问的越频繁,其热度越高。本实施例中,统计设定时间段内每个文件的访问热度,并按热度从高到低对所有文件进行排序,将文件按照热度的高低划分为:最热文件、次热文件和冷门文件,再将最热的文件装载到内存盘,次热的文件装载到SSD,冷门文件继续存放在机械硬盘。
另外,本实施例中,由于存储系统空间有限,需要对存储空间进行管理,存储调度程序将记录每个文件的最后访问时间,在空间不足的情况下,定期清理掉最长时间没有访问的文件。
本实施例中,通过由内存盘、SSD和机械硬盘构成的多层存储系统,由存储调度程度按访问热度智能决定某个文件的存放位置,使最热的文件由最快的内存盘服务,次热的文件由较快的SSD服务,冷门文件由机械硬盘服务,从而优化了系统整体的文件访问性能。
如图7所示,本发明实施例中,所述多层存储系统采用如下方法实现请求响应:
用户访问本地服务器时,首先访问内存盘,当内存盘中不存在访问的文件时,再访问SSD,最后访问机械硬盘,当本地服务器中,不存在用户访问的文件时,则添加拉取任务,通过文件拉取程序,回源拉取文件。
例如,原请求URL为http://domain/file,采用本实施例提供的CDN系统,修改后的URL为http://192.168.0.3/data1/domain/file。则用户访问该文件时,192.168.0.3接到文件访问请求后,首先进行通用的防盗链处理,再查看内存盘的挂载目录/hdata,是否存在domain/file这个文件,存在则直接响应请求,如果不存在,再查看SSD的挂载目录/wdata,是否存在domain/file这个文件,存在则直接响应请求,如果不存在,再查看/data1/domain/file这个文件,存在则直接响应请求,如果仍然不存在,则向Worker插入一条文件拉取任务,再转为本机的回源代理服务器处理当次请求。
本发明实施例中,所述缓存服务器还包括业务接入层,所述业务接入层用于满足用户的个性化需求。
业务接入层处理用户请求,实现业务逻辑。业务接入层也在Nginx Web服务器上实现。每一个请求,通过通用的防盗链处理后,会进入每一个服务域名的相关处理。根据每一个服务域名的配置,可以实现:
1.直接转发到本机的缓存服务器,这个主要针对小文件;
2.直接吐出多层存储系统上的静态文件,这个主要针对大文件。
业务接入层直接访问多层存储系统上的静态文件。多层存储系统由内存盘、SSD和机械硬盘构成,业务接入层按内存盘->SSD->机械硬盘的顺序依次判断文件是否存在,如存在则中止判断,直接吐出。由于被磁盘清理、预推尚未到位等原因,存储系统上请求的静态文件不一定存在,所以在文件不存在的时候,需要转由本机的缓存服务器服务,同时向本机的Worker程序插入一条文件拉取任务。
业务接入层还实现了用于接收文件预推后台发送的预推任务的Dispatch接口,Dispatch接口在接到文件预推任务后,将向本机的Worker程序转发请求。
除防盗链处理外,业务接入层还包括对流媒体文件的流化、实时转封装(如flv格式转换mp4格式、mp4格式转换flv格式)等功能。
实施例二
如图8所示,本发明实施例提供了一种利用实施例一提供的高性价比的CDN系统进行文件预推的方法,包括如下步骤:
C1,文件预推后台将文件预推请求发送至Linux虚拟服务器;
C2,Linux虚拟服务器将文件预推请求转发到节点内的一台缓存服务器上;
C3,缓存服务器根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的本地缓存服务器的地址和磁盘号;
C4,根据文件预推请求,调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中。
如图9所示,本发明实施例的C4中,所述调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中,包括如下步骤:
D1,接收文件拉取请求,所述文件拉取请求包括请求URL、文件存储路径、回调标志位和/或源IP、源URL以及文件校验码;
D2,判断源IP是否存在,如果存在,则使用源IP替换请求URL中的服务器地址回源,并转到D3,否则,使用本地缓存服务器的回源代理模块的地址回源或转到D3;
D3,判断源URL是否存在,如果存在,则使用源URL替代请求URL回源,否则,使用本地缓存服务器的回源代理模块的地址回源;
D4,发起文件获取请求,并判断请求是否成功,如果成功,则拉回文件并转到D5,否则,转到D7;
D5,判断所述文件拉取请求中是否存在文件校验码,如果存在,则执行D6,否则,转到D7;
D6,将文件拉取请求中的文件校验码与拉回文件的校验码进行比较,如果文件拉取请求中的文件校验码与拉回文件的校验码不一致,则删除拉回文件;否则,保留拉回文件,并转到D7;
D7,向文件预推后台回报文件拉取任务完成情况。
文件拉取程序监听在本地端口上,接收文件拉取和文件刷新请求,经由本机的缓存服务器回源,以尽可能地利用缓存服务器的合并回源功能,以节省回源带宽。
文件拉取请求可能来自于:
客户访问文件不存在引起的文件拉取任务;
预推后台发来的文件预推任务。
在是否对预推后台发送回调通知上,针对上述两种来源,需要做区分。客户访问文件不存在不需要发送回调通知,而如果是预推后台发来的文件预推任务,则需要向预推后台发送回调通知,通知是否拉取成功。这个回调方式的区分通过回调标志位实现,为真时则需要发送回调通知。
所以,上述文件拉取程序也可以适用于被动回源的情况。
文件刷新请求只可能来自于文件预推后台。文件刷新有两种类型:
只删除旧文件;
删除旧文件,拉回新文件。
在类型2中,会比较新旧文件的MD5,如果新文件的MD5跟旧文件的MD5一致,则无需拉回文件,直接返回。
实施例三
用户访问文件时,如果本地缓存服务其中不存在该文件时,就会转为本机的回源代理服务器处理当次请求。如果是小文件,则可以直接回源,如果是大文件,本发明实施例提供了一种利用实施例一所述的高性价比的CDN系统处理回源请求的方法,包括如下步骤:
E1,判断缓存服务器中是否已经存储文件的大小信息,如果是,则转到E3,否则,继续;
E2,使用HTTP HEAD请求回源,返回响应头,捕获响应头里的Content-Length字段,确定文件的大小;
E3,按照设定的分片大小,对文件构造多个分片;
E4,判断分片是否存在于本地缓存服务器中,如存在,则直接取出;如不存在,则构造带Range头的HTTP GET请求,Range头指示所需的文件分片字节偏移,请求回来所需分片;
E5,拼接全部分片,响应用户请求。
上述方法中通过分片缓存的方式对大文件回源服务的优化,节约了回源带宽,提高了缓存服务器的服务性价比。
如本领域技术人员可以理解的,回本发明实施例中,除了实现合并回源之外,还实现了分片缓存。
实现了对大文件服务的优化,原理是对于大文件的请求,在回源时转换为对源的同一文件的多个206请求分片,如果本地缓存中分片存在,则用户访问时,可以直接取出;如果分片不存在,则构造相应的206请求回源,并存储到本地缓存中。最后拼接所有分片响应用户请求。如果用户请求本身是206分片请求,则计算用户请求的分片包括在哪些分片中,只回源拉取所需的分片。如图10所示,用户请求的某个文件被分成7个分片,其中,块1、块3、块6和块7已存在于本地缓存中,则直接命中;块2、块4和块5在本地缓存中不存在,需要回源请求,响应用户请求的同时存储在本地缓存,下次用户请求该文件,该文件的所有分片将能全部本地命中,无需再回源请求。由于现有的缓存服务器,如Squid比较成熟,具备回源合并的功能,所以,本实施例提供的缓存服务器只需在Squid上实现分片缓存自定义模块。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
为了能同时服务于大文件和小文件,降低回源带宽,降低带宽成本,充分利用多层存储系统,节省存储空间,降低存储成本,本实施例提供的技术方案实现了一个大文件主动预推、大文件分片缓存、小文件直接缓存以及按照文件热度分别存储的CDN系统,相比于传统的CDN系统,它有如下优点:
1.系统性价比高。本实施例中,通过大文件预推,大文件分片缓存的方式,克服了传统缓存服务器对大文件服务不好,导致回源带宽偏高的缺点;通过一致式Hash,确保每一个文件在节点内只存储一份,克服了存储空间浪费的缺点,因此,本发明提供的技术方案节约了回源带宽和存储空间,使系统具有较高的性价比,提高了缓存服务器对大文件的服务性能。
2.系统存储性能高。通过由内存盘、SSD和机械硬盘构成的多层存储系统,由存储调度程度按访问热度智能决定某个文件的存放位置,使最热的文件由最快的内存盘服务,次热的文件由较快的SSD服务,冷门文件由机械硬盘服务,从而优化整体的文件访问性能。
3.业务定制灵活度高。由于引入一个业务接入层,可实现对各个服务域名的个性化定制。同时由于大文件以静态文件存放,特别对视频业务而说,方便实现对视频的流化拖放和转封装。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (8)

1.一种高性价比的CDN系统,其特征在于,包括:
文件预推后台:用于记录客户的文件预推请求,还用于将文件预推请求进行转换处理后,发送至一个或多个缓存节点;
缓存节点:包括一个Linux虚拟服务器和多台缓存服务器,多台所述缓存服务器分别与所述Linux虚拟服务器数据连接;
Linux虚拟服务器:用于挑选一台缓存服务器,还用于将所述文件预推后台发送的文件预推请求转发到挑选出的缓存服务器上;
缓存服务器:包括一致性Hash模块、多层存储系统和回源代理模块;所述一致性Hash模块用于接收所述Linux虚拟服务器转发的文件预推请求,并根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的缓存服务器的地址和磁盘号;所述多层存储系统用于文件的调度存储;所述回源代理模块用于通过分片缓存的方式处理回源请求;
其中,所述多层存储系统包括:内存盘、SSD和机械硬盘;所述多层存储系统采用如下方法实现调度存储:
B1,统计设定时间段内每个文件的访问热度;
B2,按访问热度从高到低的顺序对所有文件进行排序,并划分为最热文件、次热文件和冷门文件;
B3,将最热文件装载到内存盘中,次热文件装载到SSD中,冷门文件存放在机械硬盘中;
所述回源代理模块用于通过分片缓存的方式处理回源请求具体为:
E1,判断缓存服务器中是否已经存储文件的大小信息,如果是,则转到E3,否则,继续;
E2,使用HTTP HEAD请求回源,返回响应头,捕获响应头里的Content-Length字段,确定文件的大小;
E3,按照设定的分片大小,对文件构造多个分片;
E4,判断分片是否存在于本地缓存服务器中,如存在,则直接取出;如不存在,则构造带Range头的HTTP GET请求,Range头指示所需的文件分片字节偏移,请求回来所需分片;
E5,拼接全部分片,响应用户请求。
2.根据权利要求1所述的高性价比的CDN系统,其特征在于,所述缓存服务器还包括业务接入层,所述业务接入层用于满足用户的个性化需求。
3.根据权利要求1所述的高性价比的CDN系统,其特征在于,所述文件预推后台采用如下方法实现:
A1,通过任务接入接口接收客户发送的需要预推的任务,并存入数据库;
A2,定时从数据库中读取需要分发的任务,并发送到所有的缓存节点上;
A3,定时从数据库中读取需要进行回调的任务,将任务的完成状态发送到客户提供的任务回调接口;
A4,任务回调接口接收任务的完成状态的信息,并在后台显示每个缓存节点的任务完成情况。
4.根据权利要求1所述的高性价比的CDN系统,其特征在于,所述Linux虚拟服务器采用如下方法实现:Linux虚拟服务器使用Round Robin算法,挑选一台缓存服务器,再将文件预推请求转发到该台挑选好的缓存服务器上。
5.根据权利要求1所述的高性价比的CDN系统,其特征在于,所述一致性Hash模块采用如下方法实现:
一致性Hash模块按以下格式保存缓存服务器的地址和磁盘号:
192.168.0.1/data1
192.168.0.1/data2
192.168.0.1/data3
192.168.0.10/data1
192.168.0.10/data2
192.168.0.10/data3
其中,data1、data2和data3均为对应缓存服务器上的磁盘挂载目录,以预推请求URL为Key,使用一致性Hash算法,确定URL对应的缓存服务器的地址和磁盘号,修改URL,加上服务域名和磁盘号,并代理到缓存服务器的地址上。
6.一种利用权利要求1-5任一项所述的高性价比的CDN系统进行文件预推的方法,其特征在于,包括如下步骤:
C1,文件预推后台将文件预推请求发送至Linux虚拟服务器;
C2,Linux虚拟服务器将文件预推请求转发到节点内的一台缓存服务器上;
C3,缓存服务器根据文件预推请求URL,使用一致性Hash算法确定存储预推文件的本地缓存服务器的地址和磁盘号;
C4,根据文件预推请求,调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中。
7.根据权利要求6所述的实现文件预推的方法,其特征在于,C4中,所述调用文件拉取程序,将预推文件由上级源拉回装载到本地缓存服务器中,包括如下步骤:
D1,接收文件拉取请求,所述文件拉取请求包括请求URL、文件存储路径、回调标志位和/或源IP、源URL以及文件校验码;
D2,判断源IP是否存在,如果存在,则使用源IP替换请求URL中的服务器地址回源,否则,使用本地缓存服务器的回源代理模块的地址回源或转到D3;
D3,判断源URL是否存在,如果存在,则使用源URL替代请求URL回源,否则,使用本地缓存服务器的回源代理模块的地址回源;
D4,发起文件获取请求,并判断请求是否成功,如果成功,则拉回文件并转到D5,否则,转到D7;
D5,判断所述文件拉取请求中是否存在文件校验码,如果存在,则执行D6,否则,转到D7;
D6,将文件拉取请求中的文件校验码与拉回文件的校验码进行比较,如果文件拉取请求中的文件校验码与拉回文件的校验码不一致,则删除拉回文件;否则,保留拉回文件,并转到D7;
D7,向文件预推后台回报文件拉取任务完成情况。
8.一种利用权利要求1-5任一项所述的高性价比的CDN系统分片缓存的方法,其特征在于,包括如下步骤:
E1,判断缓存服务器中是否已经存储文件的大小信息,如果是,则转到E3,否则,继续;
E2,使用HTTP HEAD请求回源,返回响应头,捕获响应头里的Content-Length字段,确定文件的大小;
E3,按照设定的分片大小,对文件构造多个分片;
E4,判断分片是否存在于本地缓存服务器中,如存在,则直接取出;如不存在,则构造带Range头的HTTP GET请求,Range头指示所需的文件分片字节偏移,请求回来所需分片;
E5,拼接全部分片,响应用户请求。
CN201510296893.3A 2015-06-03 2015-06-03 一种高性价比的cdn系统及文件预推、分片缓存的方法 Expired - Fee Related CN104935648B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510296893.3A CN104935648B (zh) 2015-06-03 2015-06-03 一种高性价比的cdn系统及文件预推、分片缓存的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510296893.3A CN104935648B (zh) 2015-06-03 2015-06-03 一种高性价比的cdn系统及文件预推、分片缓存的方法

Publications (2)

Publication Number Publication Date
CN104935648A CN104935648A (zh) 2015-09-23
CN104935648B true CN104935648B (zh) 2018-07-17

Family

ID=54122617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510296893.3A Expired - Fee Related CN104935648B (zh) 2015-06-03 2015-06-03 一种高性价比的cdn系统及文件预推、分片缓存的方法

Country Status (1)

Country Link
CN (1) CN104935648B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106657196B (zh) * 2015-11-02 2020-07-24 华为技术有限公司 一种缓存内容淘汰方法及缓存装置
CN106790324B (zh) 2015-11-20 2020-06-16 华为技术有限公司 内容分发方法、虚拟服务器管理方法、云平台和系统
CN105871994A (zh) * 2015-12-15 2016-08-17 乐视网信息技术(北京)股份有限公司 一种静态文件服务方法及装置
CN105812833A (zh) * 2016-04-07 2016-07-27 网宿科技股份有限公司 文件处理方法和装置
CN105978936A (zh) * 2016-04-25 2016-09-28 乐视控股(北京)有限公司 Cdn服务器及其缓存数据的方法
CN105959358A (zh) * 2016-04-25 2016-09-21 乐视控股(北京)有限公司 Cdn服务器及其缓存数据的方法
CN105959362A (zh) * 2016-04-25 2016-09-21 乐视控股(北京)有限公司 Cdn服务器及其缓存数据的方法
CN106101183A (zh) * 2016-05-30 2016-11-09 乐视控股(北京)有限公司 回源请求的中转方法和装置及回源系统
CN106203514B (zh) * 2016-07-12 2019-02-12 腾讯科技(深圳)有限公司 图像识别回调通知的方法和装置
CN107872478A (zh) * 2016-09-26 2018-04-03 中国移动通信有限公司研究院 一种内容缓存方法、装置和系统
CN106550023A (zh) * 2016-10-31 2017-03-29 北京百度网讯科技有限公司 一种用于为用户提供指定文件分块的方法与装置
CN106993054B (zh) * 2017-05-05 2022-06-03 腾讯科技(深圳)有限公司 文件分发方法、节点及系统
CN107071072A (zh) * 2017-06-19 2017-08-18 山东浪潮云服务信息科技有限公司 一种处理对象存储高并发请求的分布式网关方法
CN107463342B (zh) * 2017-08-28 2021-04-20 北京奇艺世纪科技有限公司 一种cdn边缘节点文件的存储方法及装置
CN109525867B (zh) * 2017-09-18 2022-06-03 中兴通讯股份有限公司 负载均衡方法、装置及移动终端
CN107911713B (zh) * 2017-11-08 2020-05-22 北京奇艺世纪科技有限公司 一种磁盘的确定方法及装置
CN110300132A (zh) * 2018-03-22 2019-10-01 贵州白山云科技股份有限公司 服务器数据缓存方法、装置和系统
CN110582007B (zh) * 2018-06-08 2022-04-15 阿里巴巴集团控股有限公司 多媒体数据预热的方法、装置、系统和存储介质
CN109240611A (zh) * 2018-08-28 2019-01-18 郑州云海信息技术有限公司 小文件冷热数据分层方法、小文件数据访问方法及其装置
CN109167845A (zh) * 2018-11-27 2019-01-08 云之端网络(江苏)股份有限公司 一种面向大文件分发场景的分片缓存及重组方法
CN109639801A (zh) * 2018-12-17 2019-04-16 深圳市网心科技有限公司 数据节点分配及数据获取方法及系统
CN111343225B (zh) * 2018-12-19 2024-04-09 三六零科技集团有限公司 一种文件处理方法和装置
CN111367860A (zh) * 2018-12-26 2020-07-03 北京奇虎科技有限公司 文件刷新方法及装置
CN111404761B (zh) * 2019-01-02 2022-03-25 中国移动通信有限公司研究院 内容成环检测处理方法、装置和计算机可读存储介质
CN110601802B (zh) * 2019-08-16 2022-05-20 网宿科技股份有限公司 一种降低集群回父带宽的方法及装置
CN110650182B (zh) * 2019-08-30 2023-03-07 深圳壹账通智能科技有限公司 网络缓存方法、装置、计算机设备及存储介质
CN112866310B (zh) * 2019-11-12 2022-03-04 北京金山云网络技术有限公司 Cdn回源的校验方法和校验服务器、cdn集群
CN111339057A (zh) * 2020-02-29 2020-06-26 平安科技(深圳)有限公司 减少回源请求的方法、装置及计算机可读存储介质
CN111565195A (zh) * 2020-05-21 2020-08-21 杭州安恒信息技术股份有限公司 分布式系统的挑战黑洞攻击防御方法和分布式系统
CN113691581B (zh) * 2021-07-08 2023-05-09 杭州又拍云科技有限公司 一种高效的cdn刷新分片的方法
CN114449044B (zh) * 2021-12-27 2023-10-10 天翼云科技有限公司 一种cdn缓存验证方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848137A (zh) * 2009-03-26 2010-09-29 北京快网科技有限公司 一种应用于三层网络的负载均衡方法和系统
CN103078936A (zh) * 2012-12-31 2013-05-01 网宿科技股份有限公司 基于gfs的分布式文件系统的元数据分级存储方法和系统
CN103281394A (zh) * 2013-06-07 2013-09-04 北京奇虎科技有限公司 文件获取方法、节点服务器和系统
CN103347068A (zh) * 2013-06-26 2013-10-09 中国(南京)未来网络产业创新中心 一种基于代理集群网络缓存加速方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848137A (zh) * 2009-03-26 2010-09-29 北京快网科技有限公司 一种应用于三层网络的负载均衡方法和系统
CN103078936A (zh) * 2012-12-31 2013-05-01 网宿科技股份有限公司 基于gfs的分布式文件系统的元数据分级存储方法和系统
CN103281394A (zh) * 2013-06-07 2013-09-04 北京奇虎科技有限公司 文件获取方法、节点服务器和系统
CN103347068A (zh) * 2013-06-26 2013-10-09 中国(南京)未来网络产业创新中心 一种基于代理集群网络缓存加速方法

Also Published As

Publication number Publication date
CN104935648A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104935648B (zh) 一种高性价比的cdn系统及文件预推、分片缓存的方法
CN101916289B (zh) 支持海量小文件和动态备份数的数字图书馆存储系统的构建方法
CN102855239B (zh) 一种分布式地理文件系统
CN103312791B (zh) 物联网异构数据存储方法及系统
EP2369494A1 (en) Web application based database system and data management method therof
CN102307234A (zh) 基于移动终端的资源检索方法
CN101566927B (zh) 存储系统和存储控制器以及数据缓存方法
CN104317736B (zh) 一种分布式文件系统多级缓存实现方法
CN110457281A (zh) 数据处理方法、装置、设备及介质
CN103078936A (zh) 基于gfs的分布式文件系统的元数据分级存储方法和系统
CN102117248A (zh) 一种缓存系统和在缓存系统中缓存数据的方法
CN103856567A (zh) 基于Hadoop分布式文件系统的小文件存储方法
CN102387220A (zh) 一种基于云存储的离线下载的方法及其系统
CN103152395A (zh) 一种分布式文件系统的存储方法及装置
CN102317926A (zh) 将高速存储装置作为缓存使用的存储系统
CN102523279A (zh) 一种分布式文件系统及其热点文件存取方法
CN102722405B (zh) 高并发、多线程应用中的计数方法及系统
CN102523285A (zh) 一种基于对象分布式文件系统的存储缓存方法
CN106686113A (zh) 一种分布式文件系统智能预读实现方法
CN102724314B (zh) 一种基于元数据管理的分布式缓存客户端
CN102687112A (zh) 在分布式存储系统中管理文件的装置及方法
CN106445409A (zh) 一种分布式块存储的数据写入方法及装置
CN107368608A (zh) 基于arc替换算法的hdfs小文件缓存管理方法
CN111159176A (zh) 一种海量流数据的存储和读取的方法和系统
CN106528451B (zh) 针对小文件的二级缓存预取的云存储框架及构建方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180717

Termination date: 20200603