发明内容
有鉴于此,本发明的目的在于提供一种内容分级存储装置、内容获取方法及内容获取装置,通过对多级存储器分别采用多级分片存储文件,可以将文件的分片数据存储到具有不同分片大小的各级存储器中,并且在各级存储器中灵活地进行切换,将热点的内容存储到高速的存储器上,并自动从网络侧获取内容,提高访问的效率。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明提供一种内容分级存储的装置,包括多级存储器和多级存储映射表,其特征在于,所述存储器包括多个空间大小相同的分片存储单元,所述分片存储单元用于存储文件的分片数据;且N级存储器(N为大于1的整数)的分片存储单元的空间大小为一级存储器的分片存储单元的空间大小的整数倍;
所述多级存储映射表用于记录存储在各级存储器中的文件的分片数据与各级存储器的分片存储单元的映射关系。
进一步,所述装置包括三级存储器,一级存储器为内存,二级存储器为SSD,三级存储器为HDD。
进一步,所述多级存储映射表中的第一级存储映射表包括文件索引表和分片索引表,所述文件索引表用于记录第一级存储器所存储的文件的文件名称和所述文件名称对应的分片索引表的地址的映射关系,所述分片索引表用于记录第一级存储器所存储的文件的各个文件偏移值和第一级存储器的分片存储单元地址的映射表。
进一步,所述N级存储器(N为大于1的整数)对应的第N级存储映射表用于存储所述N级存储器中每个分片存储单元对应的文件存储信息,所述文件存储信息包括文件存储单元名称和文件存储单元位图。
进一步,所述装置还包括多级写策略模块,用于根据对应层级预设的写策略将文件数据按照一级存储器的分片存储单元的空间大小写入到对应层级存储器。
进一步,所述装置还包括多级老化模块,用于统计对应层级的存储器内分片存储单元的使用频率,当对应层级的存储器空间不足时,将对应层级的存储器内使用频率低的分片存储单元存储的分片文件数据进行删除,并更新对应层级的存储映射表。
本发明提供一种内容获取的方法,包括:
接收客户端发送的文件读取请求,所述文件读取请求携带有文件名、文件读取偏移量和文件读取长度;
根据文件读取偏移量和文件读取长度,计算出与一级存储器的分片存储单元的空间大小相对应的文件偏移值数组;
获取所述文件偏移值数组中的一个文件偏移值;
向所述一级存储器发起第一数据读取请求,所述第一数据读取请求携带有文件名和所述文件偏移值;
查询所述一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据,若存在,则读取所述分片数据;
否则,从所述一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,依次向下一级存储器发起第二数据读取请求,直到将所述分片数据读取到所述缓存为止,所述第二数据读取请求携带有所述文件名、所述文件偏移值和缓存地址,当所有存储器中都不存在所述分片数据时,则从网络侧读取所述分片数据到所述缓存;
将所述分片数据根据所述文件读取偏移量和文件读取长度进行相应的处理后发送给所述客户端;
获取下一个文件偏移值,继续上述的流程,直到所述文件偏移值数组中的所有文件偏移值都处理完毕。
进一步,所述查询所述一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据包括:
根据所述文件名在一级存储器对应的文件索引表中查询所述文件名对应的分片索引表的地址,
若找到,则根据所述分片索引表的地址,查询所述分片索引表中是否存在所述文件偏移值对应的分片数据。
进一步,所述下一级存储器接收到所述第二数据读取请求后,包括:
根据所述下一级存储器的分片存储单元的空间大小和所述第二数据读取请求携带的所述文件偏移值,计算出所述文件偏移值对应的文件存储单元名称;
根据所述文件存储单元名称,查询每个分片存储单元的文件存储信息中是否存在所述文件存储单元名称;
若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求,若否,则向下一级存储器发起所述第二数据请求;
若存在,则查询对应的文件存储信息包含的文件存储单元位图中是否存在所述文件偏移值对应的分片数据;若存在,则将所述分片数据读取到所述缓存中;若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求,若否,则向下一级存储器发起所述第二数据请求。
进一步,所述方法还包括:
当所述分片数据是从一级存储器以外的其他层级存储器或者网络侧读取到时,还用于将所述缓存数据由所述分片数据所在存储器的所有上级存储器根据该层级的写策略进行存储。
本发明还提供一种内容获取的装置,包括:
文件请求接收模块,用于接收客户端发送的文件读取请求,所述文件读取请求携带有文件名、文件读取偏移量和文件读取长度;
数据适配模块,用于根据文件读取偏移量和文件读取长度,计算出与一级存储器的分片存储单元的空间大小相对应的文件偏移值数组,并将所述分片数据根据所述文件读取偏移量和文件读取长度进行相应的处理后发送给所述客户端;
循环处理模块,用于依次获取所述文件偏移值数组中的一个文件偏移值,向一级存储器发起第一数据读取请求,所述第一数据读取请求携带有文件名和所述文件偏移值;
一级数据读取模块,用于查询一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据;若存在,则读取所述分片数据;若不存在,则从所述一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,向二级存储器发起第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址;
N(N为大于1的整数)级数据读取模块,用于查询N级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据,若存在,则读取所述分片数据到所述缓存;若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求;若否,则向下一级存储器发起所述第二数据请求。
进一步,所述一级数据读取模块包括:
文件查询单元,用于根据所述文件名在一级存储器对应的文件索引表中查询所述文件名对应的分片索引表的地址;
第一分片查询单元,用于根据所述文件偏移值查询所述分片索引表中是否存在所述文件偏移值对应的分片数据;
第一数据读取单元,用于当根据所述文件名和所述文件偏移值查询到所述分片数据时,读取所述分片数据;
第一读请求发送单元,用于当根据所述文件名和所述文件偏移值没有查询到所述分片数据时,从一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,向二级存储器发起第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址。
进一步,所述N(N为大于1的整数)级数据读取模块包括:
文件片计算单元,用于根据所述N级存储器的分片存储单元的空间大小和所述第二数据读取请求携带的所述文件偏移值,计算出所述文件偏移值对应的文件存储单元名称;
文件片查询单元,用于根据所述文件存储单元名称查询所有分片存储单元的文件存储信息中是否存在所述文件存储单元名称;
第二分片查询单元,用于当所述文件片查询单元查询结果为是时,查询对应的文件存储信息包含的文件存储单元位图中是否存在所述文件偏移值对应的分片数据;
第二数据读取单元,用于当所述第二分片单元查询结果为是时,读取所述分片数据到所述缓存;
判断单元,用于当所述第二分片查询单元查询结果为否或者当所述文件片查询单元查询结果为否时,判断所有存储器是否已经访问完毕;
第二读请求发送单元,用于当所述判断单元判端结果为否时,向下一级存储器发起第二数据请求,用于当所述判断单元判端结果为是时,向网络侧发起所述第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址。
进一步,所述装置还包括:
存储通知模块,当所述分片数据是从一级存储器以外的其他层级存储器获或者网络侧读取到时,通知读取到所述分片数据所在存储器的所有上级存储器将所述分片数据存储到对应层级的存储器。
由上述的技术方案可见,通过对多级存储器分别采用多级分片存储文件,同时建立存储在各级存储器中的文件的分片数据和存储器分片存储单元之间的映射关系,可以将文件的分片数据存储到具有不同分片大小的各级存储器中,并且在各级存储器中灵活地进行切换,将热点的内容存储到高速的存储器上,并自动从网络侧获取内容,提高访问的效率。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明提供一种内容分级存储的装置,包括多级存储器和多级存储映射表,其特征在于,所述存储器包括多个空间大小相同的分片存储单元,所述分片存储单元用于存储文件的分片数据;且N级存储器(N为大于1的整数)的分片存储单元的空间大小为一级存储器的分片存储单元的空间大小的整数倍;
所述多级存储映射表用于记录存储在各级存储器中的文件的分片数据与各级存储器的分片存储单元的映射关系。
如图1所示为本发明实施例提供的一种内容分级存储的装置的示意图,共包括三级存储器,一级存储器为内存,二级存储器为SSD(Solid State Disk,固态硬盘),三级存储器为HDD(Hard Disk Drive,硬盘驱动器),其中,内存的读写速度最快,但容量下,一般只有几十G,断电后数据丢失;SSD的读写速度较快,容量适中,一般有几个T,断电后数据不会丢失,HDD的读写速度较慢,但容量大,断电后数据不会丢失。
以CDN边缘服务器为例,假设该CDN边缘服务器中包含图1所示的内容分级存储装置,则当边缘服务器接收到CDN中心分发的媒资文件时,可以根据各级的存储器的写策略决定是否需要将媒资文件的全部或部分写入到各级存储器中。
根据各级存储器的读写速度和存储容量,一般情况下,对内存的切片的粒度最小,SSD次之,HDD的切片的粒度最大。如,在内存中采用的分片大小为2M,SSD中采用的分片大小为8M,HDD中采用的分片大小为16M,假设一个文件有20M,如果全部在内存中存储,则需要10个内存片,如果全部在SSD中存储,则需要3个SDD分片,如果全部在HDD中存储则需要2个HDD分片。
为了在各级存储器中查找是否存储有某个文件对应的分片数据,需要在各级存储器中建立存储映射表,该存储映射表用来记录在各级存储器中的文件的分片数据与各级存储器分片存储单元的映射关系。
优选地,所述多级存储映射表中的第一级存储映射表包括文件索引表和分片索引表,所述文件索引表用于记录第一级存储器所存储的文件的文件名称和所述文件名称对应的分片索引表的地址的映射关系,所述分片索引表用于记录第一级存储器所存储的文件的各个文件偏移值和第一级存储器的分片存储单元地址的映射表。
如图2所示为一级存储映射表的结构示意图。文件索引表中包含3条记录,分别为:文件名称为“Test1”,分片索引表地址“0x00000001”、文件名称为“Test2”、分片索引表地址“0x00000002”、文件名称为“Test3”分片索引表地址“0x00000003”。“Test1”文件对应的分片索引表包含4条记录,分别为:<2,0x10000000>、<4,0x20000000>、<10,0x50000000>、<12,0x70000000>。
为了简化起见,假设文件偏移值是文件偏移量按M字节取整后的值,“Test1”文件的大小为20M,内存的切片大小为2M,则根据图2中“Test1”文件对应的分片索引表记录可知,从“0x20000开始至0x5fffff”和从“0xA00000开始至0xA3fffff”的“Test1”文件数据在内存中有存储。
N级存储器(N为大于1的整数)对应的第N级存储映射表用于存储所述N级存储器中每个分片存储单元对应的文件存储信息,所述文件存储信息包括文件存储单元名称和文件存储单元位图。
由于N级存储器的分片大小为一级存储器的分片大小的整数倍,因此,一个N级存储器的分片存储单元可以看成是多个一级存储器的分片存储单元的组合,文件存储单元位图的每一位用来标识N级存储器的分片存储单元中对应的一级存储器的分片存储单元是否存储有数据。
如图3所示为N(N为大于1的整数)级存储映射表的结构示意图。其中,文件存储单元名称由文件名和文件偏移值来唯一确定,具体地,将文件偏移值除以N级存储器的分片存储单元的空间大小取整得到该文件的存储单元序号,将文件名和文件的存储单元序号组合在一起形成文件存储单元名称。如某个文件名称为Test1的文件的文件偏移值为2(M),N级存储器的分片存储单元大小为8M,则其文件存储单元名称为Test1_0,表示是Test1文件在N级存储器中的第0个文件存储单元。Test1_0的文件存储单元位图为:1011,假设从右往左数,依次标识第0个一级存储器的分片存储单元、第1个一级存储器的分片存储单元、第2个一级存储器的分片存储单元和第3个一级存储器的分片存储单元是否存储有数据,从该文件存储单元位图可看出,从0~0x3fffff和从0x500000~0x7fffff的“Test1”文件数据在该N级存储器中有存储。
优选地,内容分级存储装置多级写策略模块,用于根据对应层级预设的写策略将文件数据按照一级存储器的分片存储单元的空间大小写入到对应层级存储器。
具体的,每级存储器都设置有一定阈值的写队列,当有文件数据需要写入到存储器中时,就将写入地址加入到写队列,写队列线程检查写队列的情况,如果队列个数达到阈值,则不写入到存储器,否则,写入到存储器,同时更新该存储器对应的存储映射表。
优选地,内容分级存储装置还包括多级老化模块,用于统计对应层级的存储器内分片存储单元的使用频率,当对应层级的存储器空间不足时,将对应层级的存储器内使用频率低的分片存储单元存储的分片文件数据进行删除,并更新对应层级的存储映射表。
具体的,对于N(N为大于1的整数)级存储器,如SSD和HDD,可以在文件存储信息中增加一个分片使用频率的参数,当该SSD片或HDD片被读取时,将该分片使用频率加1。另外,在N级存储器中设置单独的线程实时检查磁盘空间使用情况,当N级存储器的空间不足时,根据文件存储信息中的分片使用频率,将使用频率低的分片内容进行删除。
对于一级存储器,如内存,可以通过额外的分片使用频率统计方法对每个分片的使用热度进行统计,同理,一级存储器中也设置有单独的线程实时检查内存的使用情况,当内存空间不足时,根据每个内存片的使用频率统计,将使用频率低的内存片放到空闲队列中。
本发明提供的内容分级存储装置,通过对多级存储器分别采用多级分片存储文件,同时建立存储在各级存储器中的文件的分片数据和存储器分片存储单元之间的映射关系,可以将文件的分片数据存储到具有不同分片大小的各级存储器中,并且在各级存储器中灵活地进行切换,将热点的内容存储到高速的存储器上,并自动从网络侧获取内容,提高访问的效率。
本发明提供一种内容获取的方法,包括:
步骤1,接收客户端发送的文件读取请求,所述文件读取请求携带有文件名、文件读取偏移量和文件读取长度;
步骤2,根据文件读取偏移量和文件读取长度,计算出与一级存储器的分片存储单元的空间大小相对应的文件偏移值数组;
步骤3,获取所述文件偏移值数组中的一个文件偏移值;
步骤4,向所述一级存储器发起第一数据读取请求,所述第一数据读取请求携带有文件名和所述文件偏移值;
步骤5,查询所述一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据,若存在,则读取所述分片数据后转步骤7;
步骤6,否则,从所述一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,依次向下一级存储器发起第二数据读取请求,直到将所述分片数据读取到所述缓存为止,所述第二数据读取请求携带有所述文件名、所述文件偏移值和缓存地址,当所有存储器中都不存在所述分片数据时,则从网络侧读取所述分片数据到所述缓存;
步骤7,将所述分片数据根据所述文件读取偏移量和文件读取长度进行相应的处理后发送给所述客户端;
步骤8,判断所述文件偏移值数组中的所有文件偏移值是否已经处理完毕,若是,则结束处理,否则,获取下一个文件偏移值,转步骤4。
优选地,步骤5中查询所述一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据包括:
根据所述文件名在一级存储器对应的文件索引表中查询所述文件名对应的分片索引表的地址,
若找到,则根据所述分片索引表的地址,查询所述分片索引表中是否存在所述文件偏移值对应的分片数据。
优选地,所述下一级存储器接收到所述第二数据读取请求后,包括:
根据所述下一级存储器的分片存储单元的空间大小和所述第二数据读取请求携带的所述文件偏移值,计算出所述文件偏移值对应的文件存储单元名称;
根据所述文件存储单元名称,查询每个分片存储单元的文件存储信息中是否存在所述文件存储单元名称;
若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求,若否,则向下一级存储器发起所述第二数据请求;
若存在,则查询对应的文件存储信息包含的文件存储单元位图中是否存在所述文件偏移值对应的分片数据;若存在,则将所述分片数据读取到所述缓存中;若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求,若否,则向下一级存储器发起所述第二数据请求。
优选地,所述方法还包括:
当所述分片数据是从一级存储器以外的其他层级存储器或者网络侧读取到时,还用于将所述缓存数据由所述分片数据所在存储器的所有上级存储器根据该层级的写策略进行存储。
下面,结合图4来描述本发明提供的内容获取的方法在CDN边缘服务器中的使用。
简单起见,假设内存中采用的分片大小为2M,SSD中采用的分片大小为8M,HDD中采用的分片大小为16M。
客户端发送文件请求至CDN边缘服务器,携带文件名filename、文件读取偏移量offset和文件读取长度len。
CDN边缘服务器的应用层接收到上述请求后,需要将文件读取偏移量offset和文件读取长度len调整成内存片大小对齐的方式才能向内存发起读请求。如果客户端请求的数据大于内存片的大小,则应用层需要向内存层发起多次读请求。
例如,假设客户端发送的文件请求为:请求CDN边缘服务器发送Test1文件的如下数据,从第2.5M数据开始,读取5M长度的数据。应用层通过取整和适配,计算出其文件偏移值数组为[2,4,6,8],根据计算,应用层需要向内存层发起4次读请求。
首先,根据第一个文件偏移值2,向内存层发起读请求,该读请求携带文件名Test1、文件偏移值2;
当内存层收到应用层的读请求,根据Test1查询内存的文件索引表(同图2中的文件索引表),若存在与Test1对应的记录,则获取Test1对应的分片索引表(同图2中的分片索引表),继续在分片索引表中查询是否存文件偏移值为2的记录,若存在,则将文件偏移值2对应的一级分片地址返回给应用层。若不存在,则取出一块空闲的缓存,假设该缓存的地址为buffer,然后向SSD层发起读请求,请求的参数包括文件名Test1、文件偏移值2和buffer。
SSD层收到内存层的读请求后,根据文件偏移值2和SSD层的分片存储单元大小,计算出该文件偏移值对应的文件存储单元名称为Test1_0。根据Test1_0查询SSD层的存储映射表是否存在该文件存储单元名称的分片,若存在,继续根据文件偏移值2查询该分片对应的文件存储单元位图的相应位置是否表示存储有数据。如该分片对应的文件存储单元位图为1011,从右往左数,第1位标识偏移值为0的分片是否存储有数据,第2位标识偏移值为2的分片是否存储有数据,第3位标识偏移值为4的分片是否存储有数据,第4位标识偏移值为6的分片是否存储有数据。文件偏移值为2对应的值为1,表示请求的分片数据存在,将所述数据读取到buffer地址对应的内存。若该分片对应的文件存储单元位图为1001,文件偏移值为2对应的值为0,表示该分片不存在,则继续向HDD层发起读请求,请求的参数包括文件名Test1、文件偏移值2和buffer。
HDD层接收到读请求后,采取与SSD层同样的方式进行判断,如果存在,则读取数据到buffer,并将buffer返回给应用层,如果不存在,则向网络层发起读请求,请求的参数包括文件名Test1、文件偏移值2和buffer。
网络层收到读请求后,直接向CDN中心存储设备读取数据到buffer地址对应的内存,并将buffer返回给应用层。由于CDN中心存储上存储有所有上线的媒资文件,所以网络层接收到读请求后,肯定能读取到对应的数据到buffer。
当应用层向内存层发起读请求没有找到对应的数据时,会依次将读请求传递给SSD层、HDD层和网络层,直到读取到相应数据为止。当所述数据不是在内存读取到时,根据各层级的写策略,可以将缓存数据存储到读取到分片数据所在存储器的上级存储器中。
如,在HDD层获取到数据后,将数据填充到buffer地址对应的内存,则SDD层根据本层的写策略决定是否要将buffer地址的数据写入到SDD层。具体的,SDD层有一个写队列,队列里记录了要写磁盘的buffer地址。应用层接收到HDD层返回的buffer地址后,通知SDD层,SDD层检查写队列的情况,如果队列个数没有达到阈值,则把buffer地址加入到写队列,如果达到阈值,则不加入写队列,即不保存对应数据。另外,SDD层有专门的线程从写队列中取出buffer,写到SDD的分片中,同时更新SDD的存储映射表。
内存层获知HDD层返回的buffer地址后,将buffer地址对应的信息记录到文件索引表和分片索引表中。
应用层根据接收到的一级分片地址或者buffer地址读取数据到应用层的缓存中,并根据文件读取偏移量和文件读取长度进行处理后发送给客户端。由于从内容分级存储装置中每次读取的数据为一级分片的大小,如内存的分片大小为2M,则每次请求读取的数据固定为2M,而来自于客户端的请求并不一定是2M字节对齐方式的,此时,应用层需要根据文件本身的索引信息对其进行拼接和拆分后再发送给客户端。
对于件片偏移序号为4、6、8的数据读取流程同上。
本发明提供的内容获取的方法,将文件读取请求拆分成按片读取请求,由上至下依次访问各级存储器,直到读取到对应的分片数据为止,按分片方式读取数据,并自动从网络侧获取内容,能提高访问速率和命中率。
如图5所示为本发明实施例提供的一种内容获取的装置的结构图,内容获取装置10包括:
文件请求接收模块101,用于接收客户端发送的文件读取请求,所述文件读取请求携带有文件名、文件读取偏移量和文件读取长度;
数据适配模块102,用于根据文件读取偏移量和文件读取长度,计算出与一级存储器的分片存储单元的空间大小相对应的文件偏移值数组,并将所述分片数据根据所述文件读取偏移量和文件读取长度进行相应的处理后发送给所述客户端;
循环处理模块103,用于依次获取所述文件偏移值数组中的一个文件偏移值,向一级存储器发起第一数据读取请求,所述第一数据读取请求携带有文件名和所述文件偏移值;
一级数据读取模块104,查询一级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据;若存在,则读取所述分片数据;若不存在,则从所述一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,向二级存储器发起第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址;
N(N为大于1的整数)级数据读取模块105,用于查询N级存储器中是否存在与所述文件名和所述文件偏移值对应的分片数据,若存在,则读取所述分片数据到所述缓存;若不存在,则判断所有存储器是否已经访问完毕,若是,则向网络侧发起所述第二数据请求;若否,则向下一级存储器发起所述第二数据请求。
优选地,一级数据读取模块104包括(如图6所示):
文件查询单元1041,用于根据所述文件名在一级存储器对应的文件索引表中查询所述文件名对应的分片索引表的地址;
第一分片查询单元1042,用于根据所述文件偏移值查询所述分片索引表中是否存在所述文件偏移值对应的分片数据;
第一数据读取单元1043,用于当根据所述文件名和所述文件偏移值查询到所述分片数据时,读取所述分片数据;
第一读请求发送单元1044,用于当根据所述文件名和所述文件偏移值没有查询到所述分片数据时,从一级存储器中取出一块空闲的缓存,所述缓存大小大于等于所述一级分片大小,向二级存储器发起第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址。
优选地,N(N为大于1的整数)级数据读取模块105包括(如图7所示):
文件片计算单元1051,用于根据所述N级存储器的分片存储单元的空间大小和所述第二数据读取请求携带的所述文件偏移值,计算出所述文件偏移值对应的文件存储单元名称;
文件片查询单元1052,用于根据所述文件存储单元名称查询所有分片存储单元的文件存储信息中是否存在所述文件存储单元名称;
第二分片查询单元1053,用于当文件片查询单元1052查询结果为是时,查询对应的文件存储信息包含的文件存储单元位图中是否存在所述文件偏移值对应的分片数据;
第二数据读取单元1054,用于当第二分片单元1053查询结果为是时,读取所述分片数据到所述缓存;
判断单元1055,用于当第二分片查询单元1053查询结果为否或者当文件片查询单元1052查询结果为否时,判断所有存储器是否已经访问完毕;
第二读请求发送单元1056,用于当判断单元1055判端结果为否时,向下一级存储器发起第二数据请求,用于当判断单元1055判端结果为是时,向网络侧发起所述第二数据请求,所述第二数据请求携带有所述文件名、所述文件偏移值和缓存地址。
优选地,内容获取装置10还包括存储通知模块(未在图中示出),用于当所述分片数据是从一级存储器以外的其他层级存储器获或者网络侧读取到时,通知读取到所述分片数据所在存储器的所有上级存储器将所述分片数据存储到对应层级的存储器。
具体的,当所述分片数据是从N(N为大于1的整数)级存储器获取到时,用于通知一级存储器、二级存储器、…、(N-1)级存储器对分片数据进行存储;
当所述分片数据是从网络侧获取到时,用于通知一级存储器、二级存储器、…、N级存储器对分片数据进行存储。
本发明提供的内容获取的装置,为上述提供的内容获取的方法相对应的装置,具体的示例描述参见上述对图4的使用方法,本发明实施例通过将文件读取请求拆分成按片读取请求,由上至下依次访问各级存储器,直到读取到对应的分片数据为止,按分片方式读取数据,并自动从网络侧获取内容,能提高访问速率和命中率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。