CN115827560A - 基于分布式的工业海量小文件的存储方法及系统 - Google Patents
基于分布式的工业海量小文件的存储方法及系统 Download PDFInfo
- Publication number
- CN115827560A CN115827560A CN202211464031.3A CN202211464031A CN115827560A CN 115827560 A CN115827560 A CN 115827560A CN 202211464031 A CN202211464031 A CN 202211464031A CN 115827560 A CN115827560 A CN 115827560A
- Authority
- CN
- China
- Prior art keywords
- file
- storage
- identification code
- semantic
- acquiring
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例涉及数据存储技术领域,特别涉及一种基于分布式的工业海量小文件的存储方法及系统,该方法包括以下步骤:根据文件语义信息,获取文件对应的文件库标识码;基于文件库标识码,获取当前文件库的文件放置规则;基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码;基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在所述存储设备中的存放目录。本申请实施例解决了在工业领域海量小文件的存储场景下,海量元数据难以管理以及如何根据文件语义分层存储的问题。
Description
技术领域
本申请实施例涉及数据存储技术领域,特别涉及一种基于分布式的工业海量小文件的存储方法及系统。
背景技术
目前的分布式存储系统通常采用基于一致性Hash算法的分布式文件存储系统,该系统根据数据块的某个或某些特征值,通过Hash函数等机制映射出实际存放的存储节点,因此在该系统中不需要中心节点进行系统管理。无中心的分布式文件系统不存在中心节点,避免了单点故障。在一般情况下,Hash函数取值呈均衡分布,各节点间负载均衡。同时每次查询数据位置时,只要通过计算就能确定存储节点,不存在单节点查询的性能瓶颈,可扩展性好。因此,在集群规模较大、I/O请求密集的情况下,无中心的分布式文件系统能够在保证可靠性的同时,表现出更加优秀的性能,正被越来越多的分布式文件系统所采用。在Swift,Gluster等存储系统中,均采用这类系统结构。
然而,无元数据服务器的存储系统,在应用于海量小文件时,数据一致问题更加复杂,文件目录遍历操作效率低下,缺乏全局监控管理功能。尤其是在工业领域,文件存在海量、文件小、一次写多次读、无修改删除追加操作这些特点,无元数据服务器的存储系统不仅存在海量元数据难以管理的问题,也会导致客户端承担了更多的职能,比如文件定位、名字空间缓存、逻辑卷视图维护等等,这些都增加了客户端的负载,占用相当的CPU和内存。而且这种系统的设计往往会比较复杂,对于中小型企业来说,搭建和运维成本比较高,同时也不利于后期开发者进行维护。
发明内容
本申请实施例提供一种基于分布式的工业海量小文件的存储方法及系统,解决在工业海量小文件的存储场景下,海量元数据难以管理以及如何根据文件语义分层存储的问题。
为解决上述技术问题,第一方面,本申请实施例提供一种基于分布式的工业海量小文件的存储方法,包括:根据文件语义信息,获取文件对应的文件库标识码;基于文件库标识码,获取当前文件库的文件放置规则;基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码;基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在存储设备中的存放目录。
一些示例性实施例中,基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在存储设备中的存放目录,包括:基于文件放置规则,获取与文件放置规则对应的文件库标识码以及副本数量;基于文件库标识码,获取与文件库标识码对应的静态拓扑图、伪随机选择算法以及副本数量;基于虚拟节点标识码、副本数量以及伪随机选择算法,计算并获取指定副本数量的存储设备的集合;基于文件名以及文件语义信息,获取文件在存储设备中的存放目录。
一些示例性实施例中,伪随机选择算法为抽签算法,公式如下所示:
length=f(wi)*hash(PGID,r,bucket_id) (1)
其中,length为存储设备对应的长度,wi是存储设备的权重,f(wi)是存储设备的权重wi的函数,PGID为虚拟节点的唯一标识,r为副本的数量,bucket_id为文件库标识码。
一些示例性实施例中,所述文件库包含多种类型,不同类型的文件库对应不同的语义模型、存储设备的静态拓扑结构以及伪随机选择算法;通过对与所述文件库关联的所有存储设备进行逻辑划分,得到所述静态拓扑结构;每个存储设备均具有自身权重信息。
一些示例性实施例中,在根据文件语义信息,获取所述文件对应的文件库标识码之前,还包括:构建文件语义模型;所述文件语义模型为多个语义标签和和多个语义值的集合;根据所述文件语义模型,得到所述文件语义信息。
一些示例性实施例中,,所述虚拟节点为多个,每个虚拟节点映射到多个物理存储节点上;映射的数量等于所述副本数量;所述虚拟节点标识码与所述文件的文件名唯一对应。
第二方面,本申请实施例还提供了一种基于分布式的工业海量小文件的存储系统,包括:数据服务层,所述数据服务层通过接口服务层与客户端通信连接;所述数据服务层包括监控模块、语义管理模块和存储集群;所述监控模块用于管理所述存储集群的配置信息;所述语义管理模块用于存储待存储对象的语义信息,并为所述接口服务层提供文件语义检索和文件统计分析的能力;所述存储集群包括多个物理存储节点,每个虚拟节点映射到多个物理存储节点上。
一些示例性实施例中,所述语义管理模块存储的数据包括结构化数据;所述结构化数据包括待存储对象的标识码、语义标签以及文件库信息。
一些示例性实施例中,所述监控模块包括至少一个监控器。
一些示例性实施例中,所述接口服务层包括多个数据服务接口,所述数据服务接口包括REST接口。
本申请实施例提供的技术方案至少具有以下优点:
本申请实施例针对在工业海量小文件的存储场景下,海量元数据难以管理以及海量小文件导致的存储空间利用率低、读写性能较差的问题,本申请实施例提供一种基于分布式的工业海量小文件的存储方法及系统,该方法包括:根据文件语义信息,获取文件对应的文件库标识码;基于文件库标识码,获取当前文件库的文件放置规则;基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码;基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在所述存储设备中的存放目录。
本申请实施例在工业海量小文件的特定场景下,提出一种简单高效且易于维护和扩展的的分布式文件存储系统,通过数据分布算法实现分布式文件系统的去中心化管理。本申请实施例通过提供一个完整的分布式存储系统,在解决海量元数据难以管理以及如何根据文件语义分层存储的问题同时,同时保证文件存储系统易于维护和管理。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,除非有特别申明,附图中的图不构成比例限制。
图1为本申请一实施例提供的一种基于分布式的工业海量小文件的存储方法的流程示意图;
图2为本申请一实施例提供的一种基于分布式的工业海量小文件的存储系统的结构示意图;
图3为本申请一实施例提供的一种文件存储的逻辑结构图;
图4为本申请一实施例提供的一种文件上传的流程示意图。
图5为本申请一实施例提供的一种存储设备逻辑层次关系的静态拓扑图。
图6为本申请一实施例提供的一种文件语义与文件目录层级对应关系图。
具体实施方式
由背景技术可知,现有技术在工业海量小文件的存储场景下,文件存在海量、文件小、一次写多次读、无修改删除追加操作这些特点,存在海量元数据难以管理以及海量小文件导致的存储空间利用率低、读写性能较差的问题。
目前分布式存储系统主要分为以下几种:一种是传统的基于元数据的分布式文件存储系统,第二种是基于一致性hash算法的分布式文件存储系统,还有一种是完全去中心化的分布式文件存储系统。
对于传统的基于元数据的分布式文件存储系统,通常包含元数据服务器,数据服务器和客户端三个部分。元数据是用来描述文件系统和文件特征的系统数据,例如文件类型,文件大小,访问权限和数据索引信息等。用户在访问文件数据之前需要访问文件的元数据以获得文件的基本属性信息和数据的索引信息。在传统的基于元数据的分布式文件存储系统中,超过50%的文件操作都是针对文件元数据的操作,因此在传统的这种架构方案下,元数据在整个系统中充当着及其重要的角色。数据的每次存储和读取都需要访问元数据集群。为了保证元数据节点的可用性,引入了元数据节点的备份节点。多个元数据节点中在某个时刻只有一个节点对外提供服务,各个元数据节点之间通过日志复制来实现数据的同步,并通过一致性协议来保证元数据节点之间的数据一致性问题。这其中最具有代表性的就是GFS和HDFS。
基于一致性Hash算法的分布式文件存储系统,即根据数据块的某个或某些特征值,通过Hash函数等机制映射出实际存放的存储节点,所以系统中不需要中心节点进行系统管理。无中心的分布式文件系统不存在中心节点,避免了单点故障。在一般情况下,Hash函数取值呈均衡分布,各节点间负载均衡。同时每次查询数据位置时,只要通过计算就能确定存储节点,不存在单节点查询的性能瓶颈,可扩展性好。因此,在集群规模较大、I/O请求密集的情况下,无中心的分布式文件系统能够在保证可靠性的同时,表现出更加优秀的性能,正被越来越多的分布式文件系统所采用。在Swift、Gluster等存储系统中,均采用这类系统结构。
还有一种是完全去中心化的分布式文件存储系统,最具代表性的就是gofastdfs。这类系统的设计往往比较简单,没有复杂的模块设计,底层存储模块和客户端之间不需要任何的代理模块,用户直接通过访问底层存储来实现文件的存储和访问。用户在上传文件的时候,需要知道具体是哪台机器,以及文件的具体存储路径。
在工业海量小文件的存储场景下,现有的技术主要存在以下缺点:
基于元数据的分布式文件系统实现简单,能够收集全局信息,比较均衡地放置数据,并且数据放置的位置灵活可变。但是在面对海量小文件存储的场景下,会产生海量的元数据信息,容易出现单点故障问题,当中心节点失效时,可能导致整个系统进入不可用的状态。同时每次获取数据存放位置时,均需要与中心节点进行交互,中心节点负载压力较大,不利于集群的扩展。面向EB(exabyte)级大规模分布式存储机群,元数据管理成本较大,位置信息等元数据查询效率影响了I/O时延和吞吐量。有中心数据放置算法需要维护大量元数据信息,维护成本较高。文件信息、目录信息、块位置信息等元数据请求使得元数据服务器成为访问热点,不利于性能优化。虽然引入了元数据的备份节点,提供分布式元数据服务,可以在一定程度上解决元数据的单点问题,但是节点之间的数据同步和切换的效率比较低。同时,存储元数据的节点可以达成共识修改元数据,缺乏可信性。特别是对于海量的小文件来说,分布式元数据服务存在性能负载和元数据同步一致性问题。
无元数据服务器设计的好处是没有单点故障和性能瓶颈问题,可提高系统扩展性、性能、可靠性和稳定性。对于工业领域海量小文件应用,这种设计能够有效解决元数据的难点问题。它的负面影响是,数据一致问题更加复杂,文件目录遍历操作效率低下,缺乏全局监控管理功能。同时也导致客户端承担了更多的职能,比如文件定位、名字空间缓存、逻辑卷视图维护等等,这些都增加了客户端的负载,占用相当的CPU和内存。而且这种系统的设计往往会比较复杂,对于中小型企业来说,搭建和运维成本比较高,同时也不利于后期开发者进行维护。同时,现有的一致性hash算法无法控制数据的具体分布情况,因此无法对具有相同文件语义信息的小文件进行合并存储。
而对于完全去中心化的分布式文件存储系统,由于设计过于简单,导致整个系统是不可管理和维护的,无法直接在实际的生产环境中落地使用,需要开发人员在此基础之上进行二次开发。
基于以上问题,本申请实施例提供了一种基于分布式的工业海量小文件的存储方法,包括:根据文件语义信息,获取文件对应的文件库标识码;基于文件库标识码,获取当前文件库的文件放置规则;基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码;基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在存储设备中的存放目录。本申请实施例在工业海量小文件的特定场景下,通过数据分布算法实现分布式文件系统的去中心化管理。在解决海量元数据难以管理以及如何根据文件语义信息划层级存储、读性能较差的问题的同时,也保证文件存储系统易于维护和管理。
下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
参考图1,本申请实施例提供了一种基于分布式的工业海量小文件的存储方法,包括以下步骤:
步骤S1、根据文件语义信息,获取文件对应的文件库标识码。
步骤S2、基于文件库标识码,获取当前文件库的文件放置规则。
步骤S3、基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码。
步骤S4、基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在存储设备中的存放目录。
本申请实施例主要针对在工业领域的海量文件难以管理以及如何根据文件语义分层存储的问题,提供一种基于分布式的工业海量小文件的存储方法,由于在工业领域其文件存在海量、文件小、一次写多次读、无修改删除追加操作这些特点,不仅存在海量元数据难以管理,还存在存储空间利用率低、读写性能较差的问题,因此,本实施例提供一种基于分布式的工业海量小文件的存储方法,通过数据分布算法实现分布式文件系统的去中心化管理,在解决海量元数据难以管理以及如何根据文件语义分层存储的问题同时,同时保证文件存储系统易于维护和管理。
需要说明的是,步骤S1是在上传文件之前的操作步骤,在上传文件之前,根据文件语义信息,获取文件对应的文件库标识码。步骤S4中文件在存储设备中的存放目录是通过文件语义信息和文件名得到的。
本申请实施例提供了一种基于分布式的工业海量小文件的存储方法,该存储方法可以理解为一种工业海量小文件存储场景下的语义感知的数据分布算法,通过该算法,在比较均衡的放置文件的同时,能够有效的将底层存储划分为不同的文件库,每个文件库代表了一类文件的集合,这类文件具有相似的语义信息。同时根据文件语义信息确定文件存放目录,使得文件的分层充分考虑了文件的语义信息,从而将不同语义信息的文件分层存储。
步骤S1中用户上传文件之前,首先要根据文件的语义信息确定待上传的文件所对应的文件库标识码,即文件库ID;步骤S2中通过待上传的文件所对应的文件库ID,可以得知当前文件库的文件放置规则;然后执行步骤S3,根据文件名通过hash映射计算出与文件名唯一对应的一个虚拟节点以及虚拟节点标识码(虚拟节点ID)。然后执行步骤S4,用上述步骤计算出的虚拟节点ID、文件库ID、文件放置规则以及集群拓扑图作为该算法的输入,最终得到指定副本数量的存储设备的集合以及文件在存储设备中的存放目录。其中,文件在存储设备中的存放目录,即文件的存放路径是根据文件名以及文件的语义信息来获取得到的。
在上述文件上传的过程中,所述集群拓扑图是一种对底层存储集群物理结构和逻辑结构上的一种划分。首先拓扑图的最底层是具体的存储设备,每个存储设备都有自己的权重信息。设备之上是代表某一类文件的集合,是对存储设备逻辑结构上的划分,统称为文件库。不同语义类型的文件库定义了不同的语义模型和伪随机选择算法。这样设计的好处是能够有效的隔离不同语义的文件,从而对文件进行分类存储。同时文件的目录充分考虑了文件的语义信息,因此我们可以快速定位具有某类特征的文件。
所述虚拟节点是为了在物理存储节点较少的情况下放置数据分布不均衡而提出的一种逻辑上的概念。一致性hash算法在物理节点(group)较少的情况下,会出现物理节点在hash环上的分布不均匀,导致数据分布不平衡,影响系统的性能。解决该问题的办法就是引入虚拟化的手段。通过添加多个分布均匀的虚拟节点(2的幂),然后将物理节点(group)映射到虚拟节点上,这样解决了数据分布不平衡的问题。每个虚拟节点映射到多个group上,这个映射的数量取决于文件库中副本数量的设置。
在一些实施例中,在步骤S1根据文件语义信息,获取所述文件对应的文件库标识码之前,还包括:构建文件语义模型;所述文件语义模型为多个语义标签和和多个语义值的集合;根据所述文件语义模型,得到所述文件语义信息。
所述文件库是逻辑上的一个概念,是对一组存储节点的一种统称。该文件库定义了文件语义模型。同一文件库的文件都具有相同的语义模型,代表了一类文件的划分,而文件语义模型是对该类文件更为细致的语义定义,是一些语义标签的集合。同时文件库还定义了文件的放置规则。
所述文件放置规则是对文件存储过程的一种详细描述,该规则定义了文件存放的具体过程。每个文件库都有自己的放置规则。其内容主要包括当前规则的ID,副本的数量,文件库ID以及选择步骤的定义。选择步骤包括选择的类型,bucket类型以及bucket数量。选择步骤的每一步输入都是上一步的输出。选择类型分为两种,一种是深度优先选择出n个类型为t的子bucket,第二种是先选择出n个类型为t的bucket,再在每个bucket下选择一个存储设备。每次的选择都是根据bucket的随机选择算法来进行计算。
在一些实施例中,步骤S4中基于所述虚拟节点标识码、文件库标识码以及所述文件放置规则,获取指定副本数量的存储设备的集合以及文件在存储设备中的存放目录,包括以下步骤:
步骤S401、基于所述文件放置规则,获取与所述文件放置规则对应的文件库标识码以及副本数量;
步骤S402、基于所述文件库标识码,获取与所述文件库标识码对应的静态拓扑图、伪随机选择算法以及副本数量;
步骤S403、基于所述虚拟节点标识码、所述副本数量以及所述伪随机选择算法,计算并获取指定副本数量的存储设备的集合;
步骤S404、基于文件名以及文件语义信息,获取文件在存储设备中的存放目录。
具体的,步骤S401中根据文件放置规则确定文件库id以及副本数量,将这些信息作为一下步的输入。然后根据步骤S402中选择的文件库ID查找文件库bucket所对应的伪随机选择算法。最后将虚拟节点ID,副本数量以及bucket ID作为步骤S402中的伪随机选择算法的输入,计算得出一组对应的bucket ID。根据文件放置规则重复步骤S402和步骤S403,直到选择出一组指定副本数量的存储设备集合。即该算法通过虚拟节点ID,集群拓扑图,文件库以及放置规则作为算法的输入,计算得到一组对应的存储设备的集合。最后,执行步骤S404、基于文件名以及文件语义信息,获取文件在存储设备中的存放目录。
在一些实施例中,所述伪随机选择算法为抽签算法,公式如下所示:
length=f(wi)*hash(PGID,r,bucket_id) (1)
其中,length为存储设备对应的长度,每次选择长度最大的存储设备,wi是存储设备的权重,f(wi)是存储设备的权重wi的函数,PGID为虚拟节点的唯一标识,r为副本的数量,bucket_id为文件库标识码。
上述数据分布算法中,所述伪随机选择算法默认为抽签(Straw)算法,该算法的定义如公式(1)所示,其中,函数f(Wi)是和item的权重Wi相关的函数,决定了每个item被选中的概率;权重(weight)越高的item则被选中的概率越大,最终选择length最长的item。
在一些实施例中,步骤S404中基于文件名和文件语义信息,获取文件在存储设备中的存放目录,包括以下步骤:
步骤S4041、基于所述文件名,通过哈希函数计算出32位16进制数组成的字符串OID。
步骤S4042、基于所述字符串OID,将这个32位字符串分成前后两部分,每部分的长度为16;将两部分的第一个字符拼接在一起,按前后顺序组成一个长度为二的字符串。
步骤S4043、基于所述长度为二的字符串,将此字符串作为输入,计算对应的哈希值;将得到的哈希值作为当前文件的一级目录。
步骤S4044、基于所述文件语义信息,根据标签对应的序号确定当前标签对应的存储位置,根据值的哈希确定当前位置存储的语义信息,最终得到一个32位长度的16进制字符串。
步骤S4045、基于所述字符串,将该字符串划分为8个长度为4的子字符串,所述子字符串从左到右分别代表了不同层级的目录。
图5为本申请一实施例提供的一种存储设备逻辑层次关系的静态拓扑图。如图5所示,在一些实施例中,文件库包含多种类型,不同类型的文件库对应不同的语义模型、存储设备的静态拓扑结构以及伪随机选择算法;通过对与所述文件库关联的所有存储设备进行逻辑划分,得到所述静态拓扑结构;每个存储设备均具有自身权重信息。
图6为本申请一实施例提供的一种文件语义与文件目录层级对应关系图。如图6所示,该字符串被划分为8个长度为4的子字符串,这些子字符串从左到右分别代表了不同层级的目录。
在一些实施例中,所述虚拟节点为多个,每个虚拟节点映射到多个物理存储节点上;映射的数量等于所述副本数量;所述虚拟节点标识码与所述文件的文件名唯一对应。
本申请实施例提供的存储方法解决了在工业海量小文件存储场景下,海量元数据造成的集群单点故障以及性能瓶颈的问题,该存储方法基于数据分布算法,实现了分布式文件存储系统的去中心化。同时,该存储方法结合现有的数据分布算法,使得文件的寻址过程能够充分考虑文件的语义信息,做到了数据分布算法的语义感知能力,在保证数据平衡分布的同时,使得相同文件的语义信息能够合并存储,解决了小文件因分散存储造成的随读写,提高了系统的读写性能。
此外,参考图2,本申请实施例还提供了一种基于分布式的工业海量小文件的存储系统,包括:数据服务层,所述数据服务层通过接口服务层与客户端通信连接;所述数据服务层包括监控模块、语义管理模块和存储集群;所述监控模块用于管理所述存储集群的配置信息;所述语义管理模块用于存储待存储对象的语义信息,并为所述接口服务层提供文件语义检索和文件统计分析的能力;所述存储集群包括多个物理存储节点,每个虚拟节点映射到多个物理存储节点上。
在一些实施例中,所述语义管理模块存储的数据包括结构化数据;所述结构化数据包括待存储对象的标识码、语义标签以及文件库信息。
本申请实施例提供的存储系统通过存储有结构化数据的语义管理模块,使得文件能够根据语义信息进行合并存储。
在一些实施例中,所述监控模块包括至少一个监控器。
在一些实施例中,所述接口服务层包括多个数据服务接口,所述数据服务接口包括REST接口。
如图2所示,本申请实施例提出了一种基于分布式的海量小文件的存储系统,即海量小文件特定存储场景之下的分布式文件存储系统架构,该架构的具体描述如下:
该系统的设计主要包括两个层次,分别是接口服务层和数据服务层。数据服务层又分为三个子模块,分别是监控模块,语义管理模块,存储集群。
在上述架构中,所述接口服务层提供了对外的REST接口,这些接口封装了底层数据服务的一些操作,方便用户进行对象的存储以及对底层存储集群的管理。
所述数据服务层是一个完整的对象存储系统,提供对象的存储功能,是本系统设计的核心模块,保证了整个存储系统的可靠性,可扩展性以及自组织的能力。接口服务处理用户或者APP的请求,然后向数据服务存取对象,数据服务处理来自接口服务的请求并在本地磁盘上存取对象。
如图3所示,所述存储集群由数目可变的大规模存储节点(group)组成的集群,负责存储所有的对象数据。每个group都运行一个独立的操作系统,如centos/ubuntu。每个group上都会运行一个osd服务,该服务将数据以对象的形式存储到对应的物理磁盘上。数据的冗余备份是通过副本的方式来实现的。Osd服务会将接受到的对象数据同步到相应的副本节点,从而保证了数据的可靠性。当某个节点发生故障,或者新加入某个节点的时候,各个osd服务之间会相互协调,根据集群的状态以数据分布算法重新计算对象的分布,并迁移对象数据,使得数据的分布动态的适应集群节点的变化,保证了集群的可扩展性以及自组织能力。
所述监控模块是由少量的监控器(Monitor)组成的强耦合,小规模集群,负责管理各个节点的状态,集群的配置信息(包括文件库的信息,存储节点的信息)。Monitors没有为接口服务层提供数据存储服务,而是维护了整个集群的物理拓扑图,客户端和其他集群节点会定期检查并更新这些信息,这些信息是数据分布算法的必要输入。各个Monitor之间通过paxos算法来保证数据的一致性,Monitor之间通过投票的方式选举leader,只有超过半数的投票才能被选举为leader。
所述语义管理模块负责存储对象的语义信息,并给接口服务层提供文件语义检索和文件统计分析的能力。该模块存储的数据为结构化数据,包括对象id,语义标签,文件库信息等。文件的上传下载不需要访问该模块。
图4示出了本申请实施例提供的一种文件上传的流程示意图。如图4所示,首先确定待上传的文件所对应的文件库ID;然后通过待上传的文件所对应的文件库ID,可以得知当前文件库的文件放置规则;接下来,根据文件名通过hash映射计算出与文件名唯一对应的一个虚拟节点以及虚拟节点ID。用上述步骤计算出的虚拟节点ID、文件库ID、文件放置规则以及集群拓扑图作为该算法的输入,最终得到一组对应的存储集群。接下来,根据文件放置规则确定文件库id以及副本数量,将这些信息作为一下步的输入。然后在选择的文件库ID查找文件库bucket所对应的伪随机选择算法。最后将虚拟节点ID,副本数量以及bucketID作为步骤S502中的伪随机选择算法的输入,计算得出一组对应的bucket ID。根据文件放置规则重复上述两个步骤,直到选择出一组指定副本数量的存储设备集合。即该算法通过虚拟节点ID,集群拓扑图,文件库以及放置规则作为算法的输入,计算得到一组对应的存储设备的集合,从而实现工业海量小文件存储,解决了海量元数据造成的集群单点故障以及性能瓶颈的问题。
本申请实施例在工业海量小文件的特定场景下,设计一种简单高效且易于维护和扩展的的分布式文件存储系统,通过数据分布算法实现分布式文件系统的去中心化管理,同时结合文件语义管理模块实现文件的语义检索。本申请实施例通过可伸缩的架构设计,使得存储集群易于维护和管理。
由以上技术方案,本申请实施例针对在工业海量小文件的存储场景下,海量元数据难以管理以及海量小文件导致的存储空间利用率低、读写性能较差的问题,本申请实施例提供一种基于分布式的工业海量小文件的存储方法及系统,该方法包括:根据文件语义信息,获取文件对应的文件库标识码;基于文件库标识码,获取当前文件库的文件放置规则;基于文件的文件名,获取与文件名对应的虚拟节点以及虚拟节点标识码;基于虚拟节点标识码、文件库标识码以及文件放置规则,获取指定副本数量的存储设备的集合以及文件在所述存储设备中的存放目录。本申请实施例在工业海量小文件的特定场景下,提出一种简单高效且易于维护和扩展的的分布式文件存储系统,通过数据分布算法实现分布式文件系统的去中心化管理。本申请实施例通过提供一个完整的分布式存储系统,在解决海量元数据难以管理以及如何根据文件语义分层存储的问题同时,同时保证文件存储系统易于维护和管理。
本领域的普通技术人员可以理解,上述各实施方式是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各自更动与修改,因此本申请的保护范围应当以权利要求限定的范围为准。
Claims (10)
1.一种基于分布式的工业海量小文件的存储方法,其特征在于,包括:
根据文件语义信息,获取所述文件对应的文件库标识码;
基于所述文件库标识码,获取当前文件库的文件放置规则;
基于所述文件的文件名,获取与所述文件名对应的虚拟节点以及虚拟节点标识码;
基于所述虚拟节点标识码、所述文件库标识码以及所述文件放置规则,获取指定副本数量的存储设备的集合以及文件在所述存储设备中的存放目录。
2.根据权利要求1所述的基于分布式的工业海量小文件的存储方法,其特征在于,所述基于所述虚拟节点标识码、所述文件库标识码以及所述文件放置规则,获取指定副本数量的存储设备的集合以及文件在所述存储设备中的存放目录,包括:
基于所述文件放置规则,获取与所述文件放置规则对应的文件库标识码以及副本数量;
基于所述文件库标识码,获取与所述文件库标识码对应的静态拓扑图、伪随机选择算法以及副本数量;
基于所述虚拟节点标识码、所述副本数量以及所述伪随机选择算法,计算并获取指定副本数量的存储设备的集合;
基于所述文件名以及所述文件语义信息,获取文件在所述存储设备中的存放目录。
3.根据权利要求2所述的基于分布式的工业海量小文件的存储方法,其特征在于,所述伪随机选择算法为抽签算法,公式如下所示:
length=f(wi)*hash(PGID,r,bucket_id) (1)
其中,length为存储设备对应的长度,wi是存储设备的权重,f(wi)是存储设备的权重wi的函数,PGID为虚拟节点的唯一标识,r为副本的数量,bucket_id为文件库标识码。
4.根据权利要求2所述的基于分布式的工业海量小文件的存储方法,其特征在于,所述文件库包含多种类型,不同类型的文件库对应不同的语义模型、存储设备的静态拓扑结构以及伪随机选择算法;
通过对与所述文件库关联的所有存储设备进行逻辑划分,得到所述静态拓扑结构;每个存储设备均具有自身权重信息。
5.根据权利要求1所述的基于分布式的工业海量小文件的存储方法,其特征在于,在根据文件语义信息,获取所述文件对应的文件库标识码之前,还包括:
构建文件语义模型;所述文件语义模型为多个语义标签和和多个语义值的集合;
根据所述文件语义模型,得到所述文件语义信息。
6.根据权利要求1所述的基于分布式的工业海量小文件的存储方法,其特征在于,所述虚拟节点为多个,每个虚拟节点映射到多个物理存储节点上;映射的数量等于所述副本数量;
所述虚拟节点标识码与所述文件的文件名唯一对应。
7.一种基于分布式的工业海量小文件的存储系统,其特征在于,包括:数据服务层,所述数据服务层通过接口服务层与客户端通信连接;所述数据服务层包括监控模块、语义管理模块和存储集群;
所述监控模块用于管理所述存储集群的配置信息;所述语义管理模块用于存储待存储对象的语义信息,并为所述接口服务层提供文件语义检索和文件统计分析的能力;所述存储集群包括多个物理存储节点,每个虚拟节点映射到多个物理存储节点上。
8.根据权利要求7所述的基于分布式的工业海量小文件的存储系统,其特征在于,所述语义管理模块存储的数据包括结构化数据;所述结构化数据包括待存储对象的标识码、语义标签以及文件库信息。
9.根据权利要求7所述的基于分布式的工业海量小文件的存储系统,其特征在于,所述监控模块包括至少一个监控器。
10.根据权利要求7所述的基于分布式的工业海量小文件的存储系统,其特征在于,所述接口服务层包括多个数据服务接口,所述数据服务接口包括REST接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211464031.3A CN115827560A (zh) | 2022-11-22 | 2022-11-22 | 基于分布式的工业海量小文件的存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211464031.3A CN115827560A (zh) | 2022-11-22 | 2022-11-22 | 基于分布式的工业海量小文件的存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827560A true CN115827560A (zh) | 2023-03-21 |
Family
ID=85530092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211464031.3A Pending CN115827560A (zh) | 2022-11-22 | 2022-11-22 | 基于分布式的工业海量小文件的存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827560A (zh) |
-
2022
- 2022-11-22 CN CN202211464031.3A patent/CN115827560A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241161B (zh) | 一种气象数据管理方法 | |
US10467188B2 (en) | In-line policy management with multi-level object handle | |
Padhy et al. | RDBMS to NoSQL: reviewing some next-generation non-relational database’s | |
US8832154B1 (en) | Object location service for network-based content repository | |
US8180813B1 (en) | Content repository implemented in a network storage server system | |
US20080221856A1 (en) | Method and System for a Self Managing and Scalable Grid Storage | |
US11314717B1 (en) | Scalable architecture for propagating updates to replicated data | |
CN111881107B (zh) | 支持多文件系统挂载的分布式存储方法 | |
US11755557B2 (en) | Flat object storage namespace in an object storage system | |
CN113032356B (zh) | 一种客舱分布式文件存储系统及实现方法 | |
EP4016312B1 (en) | Data operations using a cache table in a file system | |
CN111708894B (zh) | 一种知识图谱创建方法 | |
US20210406328A1 (en) | Spatial search using key-value store | |
CN107908713B (zh) | 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法 | |
CN113811867B (zh) | 用于文件系统中的文件的硬链接操作 | |
CN114925075B (zh) | 一种多源时空监测信息实时动态融合方法 | |
CN115827560A (zh) | 基于分布式的工业海量小文件的存储方法及系统 | |
Nidzwetzki et al. | BBoxDB: a distributed and highly available key-bounding-box-value store | |
Klein et al. | Dxram: A persistent in-memory storage for billions of small objects | |
CN110569310A (zh) | 一种云计算环境下的关系大数据的管理方法 | |
Vilaça et al. | On the expressiveness and trade-offs of large scale tuple stores | |
Dewan et al. | Julunga: A new large-scale distributed read-write file storage system for cloud computing environments | |
CN117873967B (zh) | 分布式文件系统的数据管理方法、装置、设备及存储介质 | |
Patgiri et al. | A Survey on Large Scale Metadata Server for Big Data Storage | |
Shu | Distributed Storage Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |