掌桥专利:专业的专利平台
掌桥专利
首页

一种资源存储系统的创建方法、电子设备及存储介质

文献发布时间:2024-04-18 19:58:30


一种资源存储系统的创建方法、电子设备及存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种资源存储系统的创建方法、电子设备及存储介质。

背景技术

内容分发网络系统(Content Delivery Network,CDN)是一种通过在多个地理位置部署服务器来提供高效内容传输的网络架构,能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,使用户可就近取得所需资源,解决网络拥挤的状况,提高用户访问网站的响应速度。

相关技术中,为了节省宽带以及提升客户访问速度,CDN厂商会尽量的把更多的数据缓存在边缘节点,避免向上层节点或源站取获取资源数据。然而,目前广泛使用的Nginx的缓存功能比较单一,只能为某个域名配置一个目录作为缓存,在一个物理服务器上具有多个硬盘的情况下,需要通过RAID方式把多个硬盘虚拟成一个硬盘,然后把该虚拟硬盘挂载为一个目录来使用。

在采用这种方式的情况下,如果多个硬盘的存储容量不同,则无法均衡各个硬盘之间的使用率,无法保证多个硬盘的负载均衡;同时,由于多个域名共用一个缓存空间,在需要持锁查找红黑树以访问资源的情况下,无法同时处理多个访问请求。

发明内容

有鉴于此,本申请提供一种资源存储系统的创建方法、电子设备及存储介质,以解决相关技术中的不足。

根据本申请第一方面的实施例,提供一种资源存储系统的创建方法,应用于存储设备,所述存储设备上装配有多个存储介质;所述方法包括:

获取域名,并根据所述域名创建缓存目录以及与所述缓存目录相关联的索引节点;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述索引节点一一对应;

针对各个存储介质分别创建对应于所述域名的专属目录,并将所述索引节点分别映射至创建的专属目录,以使得所述域名下匹配于任一索引节点的资源存储至该索引节点对应的专属目录;其中,每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关。

根据本申请第二方面的实施例,提供一种资源访问方法,应用于存储设备,所述存储设备上装配有多个存储介质;所述方法包括:

获取目标资源所属的域名及对应的资源路径,并确定所述域名对应的缓存目录以及所述目标资源对应的索引集合中的索引值;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述缓存目录中关联的索引节点一一对应;

根据所述索引值,确定所述目标资源在所述缓存目录中的索引节点,进而确定所述目标资源在各个存储介质中的专属目录;其中,所述索引节点分别映射于各个存储介质中对应于所述域名的专属目录,以使得所述域名下匹配于任一索引节点的资源存储于该索引节点对应的专属目录,且每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关;

对所述专属目录中的所述目标资源进行访问。

根据本申请第三方面的实施例,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的方法。

根据本申请第四方面的实施例,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。

在本申请提供的技术方案中,可以根据域名创建该域名的资源缓存目录以及与缓存目录相关联的索引节点,并使该域名下的资源均匀地映射于预定义的索引集合中的各个索引值。因索引值与缓存目录中的索引节点为一一对应的关系,则可以将该域名下的资源在缓存目录的各个索引节点中均匀分配。之后,因为应用该方法的存储设备中装配有多个存储介质,所以可以针对各个存储介质分别创建对应于所述域名的专属目录,并将索引节点分别映射至创建的专属目录,使得域名下匹配于任一索引节点的资源可以准确地存储至该索引节点对应的专属目录。其中,因每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关,则可以使得各个存储介质中的存储的资源数量匹配于该存储介质的容量。通过应用本申请的技术方案,在可以把存储设备中的多个存储介质联合起来以提供整体的缓存服务的基础上,使各个存储介质的使用率保持相对均衡,实现了多个存储介质之间的负载均衡;同时,由于各个域名对应着独立的缓存空间,因此可以允许多个访问请求同时查找资源,提高了资源访问时的访问效率;并且,当不需要再为该域名进行缓存加速的时候,可以通过直接删除该域名对应的缓存目录的方式来快速释放存储空间。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请实施例。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请一示例性实施例示出的一种资源存储系统的创建方法的流程图;

图2是本申请一示例性实施例示出的一种资源存储系统的目录示意图;

图3是本申请一示例性实施例示出的一种资源访问方法的流程图;

图4是本申请一示例性实施例示出的一种资源存储系统的创建装置的示意图;

图5是本申请一示例性实施例示出的一种资源存储系统的创建装置的示意图;

图6是本申请一示例性实施例示出的一种资源存储系统的创建装置的示意图;

图7是本申请一示例性实施例示出的一种资源访问装置的示意图;

图8是本申请一示例性实施例示出的一种资源访问装置的示意图;

图9是本申请一示例性实施例示出的一种电子设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本申请示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本申请所描述的更多或更少。此外,本申请中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

内容分发网络系统(Content Delivery Network,CDN)是一种通过在多个地理位置部署服务器来提供高效内容传输的网络架构,其工作原理是将网站的资源(如图片、视频、CSS文件等)缓存到离用户最近的服务器节点上。当用户请求访问网站时,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,并将资源从最近的服务器节点传输给用户,而不需要从源服务器上获取,以此尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使资源传输得更快、更稳定,解决网络拥挤的状况,提高用户访问网站的响应速度。

相关技术中,CDN厂商通常采用Nginx来提供缓存服务。Nginx是一个高性能的HTTP和反向代理Web服务器,但其缓存功能比较单一,只能为某个域名配置一个目录作为缓存。但是,Nginx并非分布式软件,当有些网站需要缓存大量资源的时候,只在单个硬盘中创建一个目录则有可能出现容量无法满足的情况。此时则需要通过RAID方式,把一个物理服务器上的多个硬盘拟成一个硬盘,然后把该虚拟硬盘挂载为一个目录来使用,并在该目录下为各个域名分别创建缓存目录。

然而,在采用上述方式的情况下,如果多个硬盘的存储容量不同,则无法均衡各个硬盘之间的使用率,无法保证多个硬盘的负载均衡;同时,由于多个域名共用一个缓存空间,而访问资源时需要持锁查找红黑树,那么上述方式就无法同时处理多个访问请求。此外,上述方式中也无法对物理服务器上的硬盘进行在线扩容或者缩容,且一旦RAID控制器损坏,所有存储的资源数据则会全部丢失;并且,因为需要缓存资源在系统存储时会使用一个哈希值组成的字符串来进行命名,如果所有的域名公用一个缓存目录,那么就无法区分缓存资源属于哪个域名,因此无法立刻删除缓存,只能等待缓存过期后Nginx自动删除。

另外,相关技术中通常还会把多种存储介质部署在同一个缓存服务器上,如在缓存服务器上同时部署固态硬盘与机械硬盘。但目前Nginx并不支持按照缓存资源的访问热度进行分级缓存,从而导致无法有效利用多种存储介质的特性进行存储,不仅无法降低硬件成本,还会对存储性能、缓存容量造成影响。

为了解决上述问题,本申请提出一种资源存储系统的创建方法、电子设备及存储介质,可以根据域名创建该域名的资源缓存目录以及与缓存目录相关联的索引节点,并使该域名下的资源均匀地映射于预定义的索引集合中的各个索引值。因索引值与缓存目录中的索引节点为一一对应的关系,则可以将该域名下的资源在缓存目录的各个索引节点中均匀分配。之后,因为应用该方法的存储设备中装配有多个存储介质,所以可以针对各个存储介质分别创建对应于所述域名的专属目录,并将索引节点分别映射至创建的专属目录,使得域名下匹配于任一索引节点的资源可以准确地存储至该索引节点对应的专属目录。其中,因每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关,则可以使得各个存储介质中的存储的资源数量匹配于该存储介质的容量。通过应用本申请的技术方案,在可以把存储设备中的多个存储介质联合起来以提供整体的缓存服务的基础上,使各个存储介质的使用率保持相对均衡,实现了多个存储介质之间的负载均衡;同时,由于各个域名对应着独立的缓存空间,因此可以允许多个访问请求同时查找资源,提高了资源访问时的访问效率。

在一示例性实施例中,本申请的资源存储系统的创建方法可以应用于存储设备中。所述存储设备可以为包含一独立主机的物理服务器,或者可以为主机集群承载的虚拟服务器,用于处理资源访问请求以及存储源服务器中的资源。具体的,在存储设备接收到资源访问请求时,如果存储设备中没有对应的资源,则向源服务器请求该资源,并在获取到该资源后存储至当前存储设备中,以便下次接收到针对该资源的资源访问请求时将该资源直接返回。

在一示例性实施例中,资源访问请求可以为其他存储设备转发过来的资源访问请求,也可以直接来自电子设备。此处,该电子设备可以包括手机、平板设备、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)、可穿戴设备(如智能眼镜、智能手表等)、户外共享设备(如智能镜面设备、智能广告牌等)等任意类型,本说明书并不对此进行限制。在运行过程中,该电子设备可以通过网络与存储设备进行数据交互,具体可以包括多种类型的有线或无线网络,如公共交换电话网络(Public Switched Telephone Network,PSTN)和因特网。

图1是本申请一示例性实施例示出的一种资源存储系统的创建方法的流程图,包括:

S101,获取域名,并根据所述域名创建缓存目录以及与所述缓存目录相关联的索引节点;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述索引节点一一对应。

S102,针对各个存储介质分别创建对应于所述域名的专属目录,并将所述索引节点分别映射至创建的专属目录,以使得所述域名下匹配于任一索引节点的资源存储至该索引节点对应的专属目录;其中,每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关。

在一示例性实施例中,存储设备可以先获取需要CDN提供资源缓存服务的域名,并为该域名创建对应的缓存目录以及多个与缓存目录相关联的索引节点。具体的,可以为每个需要提供资源缓存服务的域名分配一个唯一的标识符,并使用该标识符建立对应的缓存目录,例如可以为每个域名分配ID、唯一的字符串等等作为标识符。可以理解的是,每个域名下都有多个需要存储的资源,因此,可以将各个域名下的资源均匀地映射至预定义的索引集合中的各个索引值,那么在索引值与缓存目录中的索引节点存在一一对应的关系的情况下,则可以将各个域名下的资源均匀地映射至缓存目录中的多个索引节点。

在一示例性实施例中,由于存储设备上装配有多个存储介质,则可以在各个存储介质分别创建对应于所述域名的专属目录,并将缓存目录中的索引节点分别映射至创建的专属目录。在各个域名下的资源均匀地映射至缓存目录中的索引节点的情况下,则可以将任一域名下匹配于任一索引节点的资源存储至对应于该域名的缓存目录中的索引节点所对应的专属目录,即通过索引节点即可找到存储介质中实际存有资源的专属目录。具体的,各个专属目录下可以根据索引节点建立相应的子目录,将匹配于任一索引节点的资源存储至对应的专属目录下的子目录,以便对存储资源进行更好地划分和存储。

需要说明的是,在各个存储介质中,每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关,即某存储介质的容量越大,则该存储介质的专属目录所对应的索引节点的数量越多。例如,存储设备A中装配有10TB和6TB两个存储介质,且针对于域名“example.com”的缓存目录共有16个索引节点,那么10TB的存储介质中的创建的专属目录可以对应于其中10个索引节点,6TB的存储介质中的创建的专属目录则可以对应于其中6个索引节点。

通过应用本申请的技术方案,在可以把存储设备中的多个存储介质联合起来以提供整体的缓存服务的基础上,使各个存储介质的使用率保持相对均衡,实现了多个存储介质之间的负载均衡;同时,由于各个域名对应着独立的缓存空间,在需要持锁查找红黑树以访问资源的情况下,访问的是多个不同的红黑树,因此可以允许多个访问请求同时查找资源,提高了资源访问时的访问效率。

在一示例性实施例中,可以通过将目标哈希值的预设长度的末位取值作为预定义的索引集合中的索引值,以使资源均匀地映射于索引集合中的各个索引值,此处目标哈希值为对域名下的资源的资源路径进行一致性哈希计算后得到的哈希值。可以理解的是,每个需要存储的资源在源服务器中都有相应的资源访问路径,例如对“example.com/A.mp4”进行请求时,“example.com”为域名,“A.mp4”即为资源访问路径。对该资源访问路径进行一致性哈希计算,即可得到该资源对应的目标哈希值,如“17ef0e43f96f9a”。同时可以理解的是,在对任一资源路径进行一致性哈希计算时,可以预先得知哈希值中每一位的可能取值,如上述“17ef0e43f96f9a”为使用十六进制进行表示的目标哈希值,其中每一位都可能为“0~f”中的任一值,共16种可能的取值。此时,如果以目标哈希值的最后一位作为划分资源的依据,即取目标哈希值的最后一位,那么索引值共有16种可能性(1×16=16),同时缓存目录中也需要同时建立对应于索引值的16个索引节点;如果以目标哈希值的最后两位作为划分资源的依据,即取目标哈希值的最后两位,那么索引值共有256种可能性(16×16=256),同时缓存目录中也需要同时建立对应于索引值的256个索引节点,以此类推。

通过应用本申请的技术方案,可以将资源十分均匀地映射于预定义的索引集合中的各个索引值,同时由于索引值与索引节点一一对应、且匹配于任一索引节点的资源会被存储至该索引节点对应的不同存储介质的专属目录中,因此更好地保证了各个存储介质的使用率保持相对均衡。

在一示例性实施例中,可以将与缓存目录相关联的索引节点通过软连接指向各个存储介质中的专属目录。软连接可以为某一个资源在除该资源的存储位置之外的其他位置建立一个不同的新链接,通过访问建立的新连接即可直接访问到该资源,而无需更改资源位置。通过上述方式,可以将缓存目录的索引节点准确地映射至各个存储介质中的专属目录,在得知资源所对应的索引节点的情况下即可直接有效地获取到该资源,为存储资源的后续访问提供了保障。

在一示例性实施例中,存储介质还可能发生扩容或缩容的情况。存储介质发生扩容或者缩容为存储介质的容量发生变化,例如存储设备中增加或减少了一个或多个存储介质,或者将当前任一存储介质替换为更大或更小的存储介质等。在这种情况下,可以重新确定存储设备中各个存储介质的容量,并基于各个存储介质的容量,重新分配各个存储介质中的专属目录所对应的索引节点,并进一步更新所述专属目录与所述索引节点的映射关系。沿用前例,存储设备A中原本装配有10TB和6TB两个存储介质,此时增加一个8TB的存储介质,那么在针对于域名“example.com”的缓存目录共有16个索引节点的情况下,对三个存储介质中的专属目录所对应的索引节点进行重新分配:10TB的存储介质中的专属目录可以对应于其中7个索引节点,8TB的存储介质中的专属目录可以对应于其中5个索引节点,6TB的存储介质中的专属目录则可以对应于其中4个索引节点。

在一示例性实施例中,还可能出现针对某一域名无需再提供资源缓存服务的情况,此时则需要清除该域名下缓存的所有资源。具体的,在接收到针对任一域名的资源清除指令的情况下,可以先确定该域名对应的缓存目录。此后,相应删除该缓存目录、与该缓存目录相关联的各个索引节点以及这些索引节点所对应的专属目录即可。由于缓存目录中的索引节点分别映射至各个存储介质中的专属目录,那么在确定了缓存目录的情况下,则能够准确找到该域名下的资源的实际存储位置,将缓存目录及对应的专属目录删除即可将该域名下的所有存储的资源进行清除。通过应用本申请的技术方案,可以把存储设备中的多个存储介质联合起来以提供整体的缓存服务的基础上,快速、准确地删除针对任一域名下的所有资源,可以立刻清除该域名的缓存文件占用的空间,而无需等待缓存过期后再自动删除。

在一示例性实施例中,存储设备上可能装配有多种类型的存储介质,不同类型的存储介质的读写性能不同。例如,存储设备上可以同时装配有固态硬盘、机械硬盘,或者其他高速存储介质等;其中以固态硬盘和机械硬盘为例,机械硬盘存储容量大,但是随机读写性能差(CDN缓存中有大量的随机读写);而固态硬盘随机读写性能高,但是容量相较于机械硬盘更低一点,且成本更高。在这种情况下,可以通过Bcache工具,用读写性能相对更高的存储介质为读写性能相对更低的存储介质生成虚拟存储空间,用读写性能相对更高的存储介质来存储预设时段内请求次数相对更多的资源,用读写性能相对更低的存储介质来存储预设时段内请求次数相对更少的资源,以使得请求频繁的资源可以更快的返回到请求方,提高热门资源的访问效率。此处,预设时段可以是技术人员根据需求进行设置的时长,本申请对此不进行限制。

具体的,Bcache技术可以让一个固态硬盘为每个机械硬盘生成一个新的虚拟的bcache盘,这个bcache盘的容量等于机械硬盘的容量,能够对资源进行缓存。例如,可以在缓存服务器上为多个机械硬盘配置一块高性能固态硬盘,比如NVMe SSD。假设服务器上配置四块机械硬盘分别为HD_A、HD_B、HD_C、HD_D,与一块NVMe固态硬盘NVMe_0n1,使用Bcache工具集中的make-bcache把HD_A与NVMe_0n1进行绑定生成新的bcache盘bcache_0,同样的方法为其他三块盘生成bcache_1、bcache_2、bcache_3。这样一来我们就可以把这四块Bcache盘当做普通的存储盘来做CDN缓存盘使用。

具体的,当往bcache盘中写入数据的时候会先在固态硬盘中缓存着,等到一定量的时候再往机械硬盘中写入,这样就把很多随机写入变成了部分的顺序写入,提高了机械硬盘的写入性能。当从bcache盘中读取资源的时候,会先在固态缓存盘中查找该资源是否已存在,如果存在则直接返回,不存在的话从机械硬盘中读出,然后同时缓存到固态缓存盘中,下次再次读取的时候就可以直接从固态缓存盘中读出。

同时,Bcache技术在bcache虚拟盘中使用LRU算法在内存中保存着缓存资源的访问顺序,每次缓存空间快要满的时候进行淘汰,把预设时段内请求次数最少的资源进行淘汰掉,因此bcache技术可以按照热度进行分级缓存,把最热的数据缓存在高性能的缓存盘中,保证访问速度。

在本申请提供的技术方案中,可以通过Bcache技术使用固态硬盘为机械硬盘进行加速,用Bcache技术以达到使用固态硬盘为机械硬盘提供缓存加速功能,并完成按照热度进行分级缓存的设置。既可以降低硬件成本,也可以在不影响性能的情况下提高缓存容量。同时,因为Bcache技术是Linux中开源的技术方案,实施起来非常简单,且无需额外维护,使得技术人员不必额外研发相关组件,也不必使用其他体量庞大且复杂的软件,如ApacheTraffic Server等等,降低了人力成本和经济成本。

下面将结合图2示出的一种资源存储系统的目录示意图,对资源存储系统的创建方法进行举例说明。

如图2所示,假设需要提供资源缓存服务的域名为“example.com”,可以为该域名分配一个未被使用的ID为100,并使用该ID在存储设备上创建该域名的缓存目录,如“/dev/shm/100”。该目录包含多个索引节点,且索引节点的数量需要匹配于资源路径的目标哈希值的预设长度的末位的可能取值,因此在使用十六进制对目标哈希值进行表示、并取目标哈希值的末尾1位时作为资源划分依据时,缓存目录“/dev/shm/100”下需要有16个对应的索引节点,分别为0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。

此后,若该存储设备中有A、B、C、D四个存储介质,那么将在这四个存储介质中分别创建针对该域名的专属目录,分别为“/disk_a/100”、“/disk_b/100”、“/disk_c/100”、“/disk_d/100”。其中,由于存储介质A的容量为3TB、存储介质B的容量为3TB、存储介质C的容量为5TB、存储介质D的容量为5TB,那么将相应地根据存储介质的容量来分配每个专属目录所对应的索引节点的数量,并在专属目录中建立相应的子目录。如存储介质A中的专属目录“/disk_a/100”对应索引节点0~2,如存储介质B中的专属目录“/disk_b/100”对应索引节点3~5,如存储介质C中的专属目录“/disk_c/100”对应索引节点6~a,如存储介质D中的专属目录“/disk_D/100”对应索引节点b~f。此时则可以在缓存目录的各个索引节点中创建对应的软连接,使各个索引节点指向对应的专属目录中的子目录,比如把/dev/shm/100/0软连接至/disk_a/100/0。此时即完成了对域名、缓存目录、专属目录之间关联关系的建立,得到了一个可以在多个存储介质之间实现负载均衡的资源存储系统。

相应的,本申请还提供了一种资源访问方法,应用于存储设备,所述存储设备上装配有多个存储介质;所述方法如图3所示,包括:

S301,获取目标资源所属的域名及对应的资源路径,并确定所述域名对应的缓存目录以及所述目标资源对应的索引集合中的索引值;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述缓存目录中关联的索引节点一一对应。

S302,根据所述索引值,确定所述目标资源在所述缓存目录中的索引节点,进而确定所述目标资源在各个存储介质中的专属目录;其中,所述索引节点分别映射于各个存储介质中对应于所述域名的专属目录,以使得所述域名下匹配于任一索引节点的资源存储于该索引节点对应的专属目录,且每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关。

S303,对所述专属目录中的所述目标资源进行访问。

在一示例性实施例中,对于第一次请求的资源,存储系统需要先从源服务器中进行获取并存储在存储设备中,在后续请求方再次对该资源发出访问请求时,即可将存储设备中的资源直接返回。具体的,可以将待访问的资源作为目标资源,获取目标资源所属的域名和对应的资源路径,并确定该域名对应的缓存目录以及该目标资源对应的索引集合中的索引值。若前述步骤中索引值是与目标哈希值的预设长度的末位取值的可能性相匹配的,那么此处可以通过一致性哈希算法对资源路径进行计算,得到该资源路径的目标哈希值。在得到目标资源的索引值之后,进而可以确定目标资源在缓存目录中的索引节点,进而确定所述目标资源在各个存储介质中的专属目录。最后,对该专属目录进行访问即可得到目标资源。

继续沿用前例,假如对“example.com/A.mp4”进行请求时,“example.com”为域名,“A.mp4”即为资源访问路径。因域名“example.com”所分配到的的ID为100,所以可以找到该域名对应的缓存目录为“/dev/shm/100”。同时,可以对该资源路径进行一致性哈希计算,得到该资源对应的目标哈希值为“17ef0e43f96f9a”。由于在创建资源存储系统时,已经约束了使用十六进制对目标哈希值进行表示、并取目标哈希值的末尾1位时作为资源划分依据,那么“17ef0e43f96f9a”中最后1位为“a”,即为该目标资源的索引值,对应着缓存目录中的索引节点a。此后,由于索引节点a映射于存储介质A的专属目录“/disk_a/100”,所以目标资源实际存储于专属目录下的子目录“/disk_a/100/a”中,对该位置进行访问即可找到目标资源。若在创建存储系统时采用了通过软连接将索引节点指向专属目录的方式,那么直接访问缓存目录“/dev/shm/100”中的索引节点a,即可直接找到目标资源。

通过应用本申请的技术方案,在把存储设备中的多个存储介质联合起来以提供整体的缓存服务的情况下,可以快速、准确地对资源进行访问,保证存储系统中存储的资源得到有效利用。

在一示例性实施例中,单个缓存服务器(即存储设备)的缓存容量是有限的,对于访问流量大、存储规模特别大的域名而言,一个缓存服务器则无法处理这么大的访问量,因此需要部署很多缓存服务器。在这种情况下,如果每个缓存服务器都直接根据接收到的请求进行资源缓存,则会导致每个缓存服务器上缓存的资源出现重复的情况,进而造成存储资源的浪费。因此,在接收到资源访问请求的情况下,可以先对所述目标资源的资源路径进行一次哈希计算,基于得到的哈希值与预先定义的所述哈希值与存储设备之间的对应关系,确定处理所述资源访问请求的目标存储设备。若确定出的目标存储设备为当前设备,则在该设备上继续获取目标资源的相关信息进行处理;若确定出的目标存储设备为其他设备,则将该请求进行转发。例如,假如请求方对“example.com/A.mp4”进行请求,该请求首先被存储设备3所接收。那么存储设备3会先对“A.mp4”进行一次哈希计算,得到哈希值为9,则该请求会被转发至存储设备9中。假如请求方对“example.com/B.mp4”进行请求,该请求首先被存储设备3所接收,并对“B.mp4”进行一次哈希计算,得到哈希值为3,此时存储设备3则会继续处理该请求。通过应用本申请的技术方案,可以使资源均匀地存储于集群内的所有存储设备中,实现整个集群内部的负载均衡。

基于本申请提供的资源存储系统的创建方法,本申请还提供了一种资源存储系统的创建装置,应用于存储设备,所述存储设备上装配有多个存储介质,参见图4,包括:

缓存目录创建单元401,用于获取域名,并根据所述域名创建缓存目录以及与所述缓存目录相关联的索引节点;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述索引节点一一对应;

专属目录创建单元402,用于针对各个存储介质分别创建对应于所述域名的专属目录,并将所述索引节点分别映射至创建的专属目录,以使得所述域名下匹配于任一索引节点的资源存储至该索引节点对应的专属目录;其中,每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关。

可选的,所述索引集合中的索引值为目标哈希值的预设长度的末位取值,所述目标哈希值为所述域名下的资源的资源路径进行一致性哈希计算后得到的哈希值。

可选的,通过下述方式将所述索引节点分别映射至各个存储介质中的专属目录:

将所述索引节点通过软连接指向各个存储介质中的专属目录。

可选的,参见图5,还包括:

容量确定单元403,用于在存储介质发生扩容或缩容的情况下,重新确定各个存储介质的容量;

分配单元404,用于基于各个存储介质的容量,重新分配各个存储介质中的专属目录所对应的索引节点,并更新所述专属目录与所述索引节点的映射关系;

迁移单元405,用于确定发生变更的变更专属目录,并将所述变更专属目录中存储的资源迁移至更新后的专属目录中。

可选的,参见图6,还包括:

域名确定单元406,用于在接收到针对所述域名的资源清除指令的情况下,确定所述域名对应的缓存目录;

删除单元407,用于删除所述缓存目录、与所述缓存目录相关联的各个索引节点、所述索引节点所对应的专属目录。

可选的,所述存储设备上装配有多种类型的存储介质,不同类型的存储介质的读写性能不同;其中,读写性能相对更高的存储介质用于存储请求次数相对更多的资源,读写性能相对更低的存储介质用于存储请求次数相对更少的资源。

基于本申请提供的资源访问方法,本申请还提供了一种资源访问装置,应用于存储设备,所述存储设备上装配有多个存储介质,参见图7,包括:

获取单元501,用于获取目标资源所属的域名及对应的资源路径,并确定所述域名对应的缓存目录以及所述目标资源对应的索引集合中的索引值;其中,所述域名下的资源可均匀地映射于预定义的索引集合中的各个索引值,且所述索引值与所述缓存目录中关联的索引节点一一对应;

确定单元502,用于根据所述索引值,确定所述目标资源在所述缓存目录中的索引节点,进而确定所述目标资源在各个存储介质中的专属目录;其中,所述索引节点分别映射于各个存储介质中对应于所述域名的专属目录,以使得所述域名下匹配于任一索引节点的资源存储于该索引节点对应的专属目录,且每一专属目录对应的索引节点的数量与该专属目录所属存储介质的容量呈正相关;

访问单元503,用于对所述专属目录中的所述目标资源进行访问。

可选的,参见图8,还包括:

哈希计算单元504,用于在接收到资源访问请求的情况下,对所述目标资源的资源路径进行哈希计算,得到哈希值;

存储设备确定单元505,用于基于所述哈希值与预先定义的所述哈希值与存储设备之间的对应关系,确定处理所述资源访问请求的目标存储设备;

所述获取单元501具体用于:在所述目标存储设备为当前节点的情况下,获取所述资源访问请求中的目标资源所属的域名及对应的资源路径;

转发单元506,用于在所述目标存储设备为除当前节点外的其他节点的情况下,将所述资源访问请求转发至所述目标存储设备。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

相应的,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上任一实施例所述的资源存储系统的创建方法。

参见图9,在硬件层面,该电子设备包括处理器902、内部总线 904、网络接口906、内存908以及非易失性存储器910,当然还可能包括其他业务所需要的硬件。处理器902从非易失性存储器910中读取对应的计算机程序到内存908中然后运行,在逻辑层面上形成资源存储系统的创建的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一实施例所述的资源存储系统的创建方法。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本申请一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。

相关技术
  • 存储方法、存储系统、电子设备及存储介质
  • 一种存储系统的状态检测方法、装置、设备及存储介质
  • 一种存储系统的构建方法、装置、设备及存储介质
  • 一种数据存储系统和方法、存储介质
  • 订单创建系统、方法、电子设备及计算机可读存储介质
  • 存储系统的资源调度方法、装置、电子设备和存储介质
  • 一种资源创建方法、装置、电子设备及存储介质
技术分类

06120116497059