一种内容分发网络的缓存读写系统和方法转让专利

申请号 : CN202010937835.5

文献号 : CN111930316B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴信谊姜智余小伟

申请人 : 上海七牛信息技术有限公司

摘要 :

本发明公开一种内容分发网络的缓存读写系统,应用在CDN网络的边缘节点上,包括存储单元、缓存读写单元、内存存储处理单元、硬盘存储处理单元、abc文件缓存系统、数据迁移单元,本发明还公开一种内容分发网络的缓存读写方法,利用本发明公开的系统和方法,实现了缓存的分片存储和快速读写,充分利用磁盘空间同时降低了运营负载,节约了磁盘空间和运营成本,提高了系统的可扩展性,故有明显的技术优势和有益效果。

权利要求 :

1.一种内容分发网络的缓存读写系统,应用在CDN网络的边缘节点上,其特征在于,包括:存储单元、缓存读写单元、内存存储处理单元、硬盘存储处理单元、abc文件缓存系统、数据迁移单元,其中:

存储单元:包括内存、硬盘组;

缓存读写单元:接受来自外部的读写请求;

内存存储处理单元:利用LRU算法处理存储资源,确定资源删除的优先级;

硬盘存储处理单元:用于将硬盘映射为HASH环,使用一致性HASH算法处理存储资源,使得每个HASH值映射为HASH环中的硬盘上,实现对硬盘内容的读写;

abc文件缓存系统:所述abc文件缓存系统无需对硬盘进行处理,即无需对硬盘进行分区以及安装文件系统,通过将大对象数据拆分成多个小分片数据进行缓存,其中为每个所述小分片数据分配一个HASH键值;

数据迁移单元:用于根据迁移策略,处理存储单元间的数据迁移。

2.如权利要求1所述的系统,其特征在于,所述硬盘组包括固态硬盘组、机械硬盘组。

3.如权利要求1所述的系统,其特征在于,所述硬盘组包括固态硬盘组、机械硬盘组,所述的迁移策略包括确定资源的价值和存储单元的优先级,所述资源的价值的确定因素包括资源的访问频率,资源大小,存储介质大小,所述存储单元的优先级的确定因素包括存储单元的读写速度和存储空间。

4.一种内容分发网络的缓存读写方法,用于权利要求1‑3所述的内容分发网络的缓存读写单元中,其特征在于,所述方法包括:S1:接收内容请求端发送的HTTP资源请求;

S2:读取本地节点上是否存在所述HTTP资源的缓存;

S3:如果不存在所述HTTP资源的缓存,则转发所述HTTP资源请求到其他网络节点,等待从其他网络节点返回HTTP资源数据;

S4:接收来自其他网络节点的响应数据,将所述响应数据写入本地缓存,并同时将所述响应数据返回给内容请求端。

5.如权利要求4所述的方法,其特征在于,所述的步骤S2中,读取本地节点缓存的方法包括:

S21:使用所述HTTP资源的URL地址作为缓存键值,获取缓存的元数据,其中,所述HTTP资源存储为多个数据片段,所述的每一个数据片段分配有缓存键值,所述元数据包括所有所述数据片段的缓存键值;

S22:根据元数据中的获取的数据片段的缓存键值,获得各个数据片段的缓存内容;

S23:根据获得的各个数据片段的内容进行组装,获得HTTP资源,完成读取。

6.如权利要求5所述的方法,其特征在于,所述步骤S22根据元数据中的获取的数据片段的缓存键值,获取各个数据片段的缓存内容的方法包括:S221:从内存中读取缓存数据:若读取成功,则修改缓存的更新时间,退出;

S222:从固态硬盘组中读取缓存数据:具体包括以下步骤:S2221:根据一致性HASH算法,从固态硬盘组中找到所述缓存健值所在的固态硬盘,并根据所述缓存健值在所述abc文件缓存系统中的索引表找到具体的索引数据;

S2222:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;

S2223:若在固态硬盘组中获取缓存成功,则根据预定的迁移策略,将缓存数据迁移到内存中,删除更新时间最晚的缓存数据,并对内存容量进行检查,所述内存容量包括内存的最大容量;

S2224:若在固态硬盘组中获取缓存失败,则从机械硬盘组中获取缓存数据;

S223:从机械硬盘组中获取缓存数据:具体包括以下步骤:S2231:同样根据一致性HASH算法,从一组机械硬盘组中找到所述键值所在的机械硬盘,并根据所述键值在所述abc文件缓存系统中的索引表找到具体的索引数据;

S2232:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;

S2233:若在机械硬盘组中获取缓存成功,则根据预定的迁移策略,将缓存数据迁移到固态硬盘中。

7.如权利要求4所述的方法,其特征在于,所述的步骤S4中,缓存的写入方法包括:S41:将HTTP资源请求的响应数据分为多个数据片段,为每个数据片段产生一个缓存键值,根据所述的缓存键值将数据片段写入缓存;

S42:写完所有分片后,写入元数据,元数据中包含了所有缓存键值。

8.如权利要求7所述的方法,其特征在于,所述的S41中,所述根据缓存键值写入缓存的方法包括:

判断写入的缓存大小,确定写入的目标缓存模块;

根据一致性HASH算法,从所述存储单元中找到该键值需要写入的缓存模块,从所述abc文件缓存系统的头部中找到目前缓存模块已写入的偏移位置,并从该位置写入缓存数据;

根据写入的缓存数据所在的偏移位,生成索引数据,并将该索引数据写入索引表。

9.如权利要求8所述的方法,其特征在于,所述写入的缓存大小,确定写入的目标缓存模块具体为:如果写入的缓存小于1M,则写入到固态硬盘组,否则写入到机械硬盘组。

10.一种电子设备,所述电子设备中包括处理器及存储器,所述存储器中存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述权利要求4‑9所述的方法。

说明书 :

一种内容分发网络的缓存读写系统和方法

技术领域

[0001] 本发明涉及内容分发领域,尤其涉及一种内容分发网络的缓存系统和方法。

背景技术

[0002] 在现有的内容分发技术中,大多数是将缓存数据写入到当前linux文件系统下的某一个目录,这种方式存在的问题有:
[0003] 1. 依赖当前的linux的文件系统(如ext2、ext3、ext4)存储文件的格式,这类文件系统的树状目录结构,不利于缓存的存储与管理;
[0004] 2. 文件存储在磁盘的单一分区,如逻辑分区,无法使用完整的磁盘空间,后期将导致磁盘空间成本大大增加;
[0005] 3. 大文件写入效率过慢,因为是往单一磁盘写入数据,无法做到单文件,多点存储;
[0006] 4. 高并发时读取时,磁盘IO压力巨大,导致磁盘的读写速度变慢。

发明内容

[0007] 本发明的目的是提供一种内容分发网络的多级缓存解决方案,从而解决上述现有技术存在的问题。
[0008] 为了实现上述目的,本发明采用的技术方案如下:
[0009] 一种内容分发网络的缓存读写系统,应用在CDN网络的边缘节点上,其特征在于,包括:存储单元、缓存读写单元、内存存储处理单元、硬盘存储处理单元、abc文件缓存系统、
数据迁移单元,其中:存储单元:包括内存、硬盘组;缓存读写单元:接受来自外部的读写请
求;内存存储处理单元:利用LRU算法处理存储资源,确定资源删除的优先级;硬盘存储处理
单元:用于将硬盘映射为HASH环,使用一致性HASH算法处理存储资源,使得每个HASH值映射
为HASH环中的硬盘上,实现对硬盘内容的读写;abc文件缓存系统:所述abc文件缓存系统通
过将大对象数据拆分成多个小分片数据进行缓存,其中为每个所述小分片数据分配一个
HASH键值;数据迁移单元:用于根据迁移策略,处理存储单元间的数据迁移。
[0010] 优选的,所述硬盘组包括固态硬盘组、机械硬盘组。
[0011] 优选的,所述的迁移策略包括确定资源的价值和存储单元的优先级,所述资源的价值的确定因素包括资源的访问频率,资源大小,存储介质大小,所述存储单元的优先级的
确定因素包括存储单元的读写速度和存储空间。
[0012] 本发明还公开一种内容分发网络的缓存读写方法,包括:
[0013] S1:接收内容请求端发送的HTTP资源请求;
[0014] S2:读取本地节点上是否存在所述HTTP资源的缓存;
[0015] S3:如果不存在所述HTTP资源的缓存,则转发所述HTTP资源请求到其他网络节点,等待从其他网络节点返回HTTP资源数据;
[0016] S4:接收来自其他网络节点的响应数据,将所述响应数据写入本地缓存,并同时将所述响应数据返回给内容请求端。
[0017] 优选的,所述的步骤S2中,读取本地节点缓存的方法包括:
[0018] S21:使用所述HTTP资源的URL地址作为缓存键值,获取缓存的元数据,所述HTTP资源存储为多个数据片段,所述元数据包括所有所述数据片段的缓存键值;
[0019] S22:根据元数据中的获取的数据片段的缓存键值,获得各个数据片段的缓存内容;
[0020] S23:根据获得的各个数据片段的内容进行组装,获得HTTP资源,完成读取。
[0021] 优选的,所述步骤S22中,根据元数据中的获取的数据片段的缓存键值,获得各个数据片段的缓存内容包括:
[0022] S221:从内存中读取缓存数据:若读取成功,则修改缓存的更新时间,退出;
[0023] S222:从固态硬盘组中读取缓存数据:具体包括以下步骤:
[0024] S2221:根据一致性HASH算法,从所述固态硬盘组中找到所述缓存健值所在的固态硬盘,并根据所述缓存健值在所述abc文件缓存系统中的索引表找到具体的索引数据;
[0025] S2222:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;
[0026] S2223:若在固态硬盘组中获取缓存成功,则根据预定的迁移策略 ,将缓存数据迁移到内存中,删除更新时间最晚的缓存数据,并对内存容量进行检查,所述内存容量包括内
存的最大容量;
[0027] S2224:若在固态硬盘组中获取缓存失败,则从机械硬盘组中获取缓存数据;
[0028] S223:从机械硬盘组中获取缓存数据:具体包括以下步骤:
[0029] S2231:同样根据一致性HASH算法,从一组机械硬盘组中找到所述键值所在的机械硬盘,并根据所述键值在所述abc文件缓存系统中的索引表找到具体的索引数据;
[0030] S2232:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;
[0031] S2233:若在机械硬盘组中获取缓存成功,则根据预定的迁移策略,将缓存数据迁移到固态硬盘中。
[0032] 优选的,所述的步骤S4中,缓存的写入方法包括:
[0033] S41:将HTTP资源请求的响应数据分为多个数据片段,为每个数据片段产生一个缓存键值,根据所述的缓存键值将数据片段写入缓存;
[0034] S42:写完所有分片后,写入元数据,元数据中包含了所有缓存键值。
[0035] 优选的,所述的S41中,所述根据缓存键值写入缓存的方法包括:
[0036] 判断写入的缓存大小,确定写入的目标缓存模块;
[0037] 根据一致性HASH算法,从所述存储单元中找到该键值需要写入的缓存模块,从所述abc文件缓存系统的头部中找到目前缓存模块已写入的偏移位置,并从该位置写入缓存
数据;
[0038] 根据写入的缓存数据所在的偏移位,生成索引数据,并将该索引数据写入索引表。
[0039] 优选的,所述写入的缓存大小,确定写入的目标缓存模块具体为:如果写入的缓存小于1M,则写入到固态硬盘组,否则写入到机械硬盘组。
[0040] 本发明还公开一种电子设备,所述电子设备中包括处理器及存储器,所述存储器中存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述任一实
施例所述的方法和系统。
[0041] 本发明的有益效果是:本发明采用三级缓存技术,有效得利用了单机最大存储空间;使用多个硬盘组组成HASH环,从而解决了单硬盘带来的性能瓶颈;使用了一致性HASH算
法技术,让数据能够被均匀的分配到各个硬盘,让各个硬盘的压力得到了平均,同时支持动
态扩容,在磁盘压力增加的情况下,可以通过增加硬盘的方式来解决。这种方式,可以有效
的减轻运维成本。
[0042] 并且,本发明利用分片缓存技术,缓存大对象时直接使用磁盘,无需对硬盘进行分区,无需安装传统文件系统,可以充分利用磁盘空间,避免磁盘因为分区和安装文件系统带
来的空间浪费,如此可以节约运营成本。
[0043] 为了对本发明有更清楚全面的了解,下面结合附图,对本发明的具体实施方式进行详细描述。

附图说明

[0044] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附
图。
[0045] 图1示出了一种实施例中内容分发网络的缓存读写系统的组成框图。
[0046] 图2示出了一种实施例中内容分发网络的缓存读写流程示意图。
[0047] 图3示出了一种实施例中读取本地节点缓存的流程示意图。
[0048] 图4示出了一种实施例中获取各个数据片段的缓存内容的流程示意图。

具体实施方式

[0049] 请参阅图1,图1示出了一种实施例中内容分发网络的缓存读写系统的组成框图,系统包括存储单元10、缓存读写单元11、内存存储处理单元12、硬盘存储处理单元13、abc文
件缓存系统14、数据迁移单元15,其中:
[0050] 存储单元10包括内存101、硬盘组102;硬盘组102包括固态硬盘组和机械硬盘组。
[0051] 缓存读写单元11:接受来自外部的读写请求。
[0052] 内存存储处理单元12:利用LRU算法处理存储资源,确定资源删除的优先级。内存由于其存储介质的特殊性,其存储空间无法进行扩容,因此我们将限制内存空间的存储大
小,既然我们会将其他存储介质中的资源迁移至内存,而内存又有大小限制,当内存空间超
过极限时,我们就必须对一些资源进行淘汰(删除),而哪些资源需要被优先删除,我们采用
了LRU算法,LRU是Least Recently Used的缩写,即最近最少使用,于是我们需要找出最近
最少访问的资源,并将其删除。
[0053] 硬盘存储处理单元13:用于将硬盘映射为HASH环,使用一致性HASH算法处理存储资源,使得每个HASH值映射为HASH环中的硬盘上,实现对硬盘内容的读写。
[0054] 传统的HASH表的主要问题是会因为添加或删除一个槽位,需要对所有的关键字进行重新映射,而一致性HASH算法只需要对K/n个关键字重新映射,其中K是关键字的数量,n
是槽位数量。
[0055] 举例说明,在一种实施例中一共有10块固态硬盘,则将这10块固态硬盘编为一组,将其映射到虚拟的圆环的不同位置,此处虚拟的圆环被称之为HASH环,每块固态硬盘在环
中的位置称为槽位,于是系统对固态硬盘组进行读取的步骤如下:
[0056] 1)首先通过对缓存键值进行HASH,每个HASH值映射为HASH环中的固定位置;
[0057] 2)沿着HASH环边上一个方向查找直到遇到某个固态硬盘的槽位;
[0058] 3)则这个固态硬盘即为该缓存应该访问的位置;
[0059] 当某个固态硬盘出现故障,宕机时,该固态硬盘会被平均分配到其他几台固态硬盘节点,不会因为这个固态硬盘宕机,导致HASH重排,从引起缓存雪崩效应。
[0060] 当需要新增一个固态硬盘时,相当于往HASH环中增加一个槽位,每个固态硬盘在环中的位置通过细微的调整,使得资源可以被平均分配到各个固态硬盘中,而不会出现
HASH重排。
[0061] abc文件缓存系统14:所述abc文件缓存系统通过将大对象数据拆分成多个小分片数据进行缓存,其中为每个所述小分片数据分配一个HASH键值。abc文件缓存系统14针对各
个缓存分片进行读写,而不是针对大对象数据进行缓存,因此,该系统可以同时对各个缓存
分片进行并行读写,大大提高一个大文件读取与写入速度,而且无需对硬盘进行分区,无需
安装传统文件系统,可以充分利用磁盘空间,避免磁盘因为分区和安装文件系统带来的空
间浪费,如此可以节约运营成本。
[0062] 数据迁移单元15:用于根据迁移策略,处理存储单元间的数据迁移。
[0063] 在该实施例中,存在不同的存储单元(即存储介质),不同存储介质的读写速度各不相同,比如内存的读写速度要远大于固态硬盘,而固态硬盘的读写速度又远大于机械硬
盘,而内存的存储空间是有限的,固态硬盘又不如机械硬盘廉价,因此,需要将更有价值的
数据放在更快速读写的存储介质上,将低价值的数据放入略慢速读写的存储介质上。于是
这里就涉及到了不同的数据在各个存储介质之间进行迁移。
[0064] 决定资源价值的因素有很多,比如资源的用户访问频率,资源大小,存储介质大小等,比如用户访问较为频繁的资源,将其迁移至更高优先级的存储介质之上,则其在将来被
访问到的概率就越大,而缓存越小的文件其会频繁进行磁盘寻道,故建议放在寻道时间较
快的固态硬盘之上,存储介质空间越大,能存放的缓存就越多,能而也能提高资源的命中
率。
[0065] 迁移策略与资源的价值和存储单元的优先级有关,其中资源的价值的确定因素包括资源的访问频率,资源大小,存储介质大小,存储单元的优先级的确定因素包括存储单元
的读写速度和存储空间。
[0066] 不同资源根据其需要迁移的存储介质,以及资源大小,将命中不同的迁移策略,比如往内存迁移的策略有两条,一条是小于512k的策略,另一条是512k到2M的策略。每条策略
中配有不同的访问频率,只有达到了该访问频率后,才允许将资源迁移至目标介质。
[0067] 在该实施例中,具体的迁移方法是:
[0068] 1)当资源命中缓存时,获取命中缓存所在的存储介质;
[0069] 2)如果在固态硬盘中,根据其资源大小,获取是否有迁移至内存的迁移策略;
[0070] 3)如果迁移策略存在,判断资源的访问频率是否达到了迁移策略预设的访问频率;
[0071] 4)如果达到的迁移策略预设的访问频率,则迁移资源至内存;
[0072] 5)如果资源在机械硬盘中,则根据其大小,获取是否有迁移至内存或者固态硬盘的迁移策略;
[0073] 6)如果迁移策略存在,判断资源的访问频率是否达到了迁移至目标存储介质的迁移策略预设的访问频率;
[0074] 7)如果达到的迁移策略预设的访问频率,则迁移资源至相应的存储介质(如果迁移至内存的策略和迁移至固态硬盘的策略都符合,则优先选择迁移至内存的策略)。
[0075] 请参阅图2,图2示出了一种实施例中内容分发网络的缓存读写流程示意图,具体包括:
[0076] S1:接收内容请求端发送的HTTP资源请求;
[0077] S2:读取本地节点上是否存在所述HTTP资源的缓存;
[0078] S3:如果不存在所述HTTP资源的缓存,则转发所述HTTP资源到其他网络节点;
[0079] S4:接收来自其他网络节点的响应数据,将所述响应数据写入本地缓存,并同时将所述响应数据返回给内容请求端。
[0080] 请参阅图3,一种实施例中读取本地节点缓存的流程示意图,具体包括:
[0081] S21:使用所述HTTP资源的URL地址作为缓存键值,获取缓存的元数据,所述HTTP资源存储为多个数据片段,所述元数据包括所有所述数据片段的缓存键值;
[0082] S22:根据元数据中的获取的数据片段的缓存键值,获得各个数据片段的缓存内容;
[0083] S23:根据获得的各个数据片段的内容进行组装,获得HTTP资源,完成读取。
[0084] 请参阅图4,一种实施例中获取各个数据片段的缓存内容的流程示意图,具体包括:
[0085] S221:从内存中读取缓存数据:若读取成功,则修改缓存的更新时间,退出;
[0086] S222:从固态硬盘组中读取缓存数据;
[0087] S223:从机械硬盘组中获取缓存数据。
[0088] 在该实施例中,从固态硬盘组中读取缓存数据的步骤包括:
[0089] S2221:根据一致性HASH算法,从所述固态硬盘组中找到所述缓存健值所在的固态硬盘,并根据所述缓存健值在所述abc文件缓存系统中的索引表找到具体的索引数据;
[0090] S2222:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;
[0091] S2223:若在固态硬盘组中获取缓存成功,则根据预定的迁移策略,将缓存数据迁移到内存中,删除更新时间最晚的缓存数据,并对内存容量进行检查,所述内存容量包括内
存的最大容量;
[0092] S2224:若在固态硬盘组中获取缓存失败,则从机械硬盘组中获取缓存数据。
[0093] 在该实施例中,从机械硬盘组中获取缓存数据的步骤包括:
[0094] S2231:同样根据一致性HASH算法,从一组机械硬盘组中找到所述键值所在的机械硬盘,并根据所述键值在所述abc文件缓存系统中的索引表找到具体的索引数据;
[0095] S2232:根据具体的索引数据找到缓存数据存储的偏移位置,并获取缓存;
[0096] S2233:若在机械硬盘组中获取缓存成功,则根据预定的迁移策略,将缓存数据迁移到固态硬盘中。
[0097] 本申请实施例还提供一种电子设备,所述电子设备中包括处理器及存储器,所述存储器中存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述
任一实施例所述的方法和系统。
[0098] 需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计
算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read Only 
Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
[0099] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的
一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明
将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一
致的最宽的范围。