一种文件存储方法、装置、系统及计算机可读存储介质与流程
未命名
09-24
阅读:106
评论:0
1.本技术涉及云计算技术领域,涉及但不限于一种文件存储方法、装置、系统及计算机可读存储介质。
背景技术:
2.随着云计算、大数据的火热发展,各个应用系统的运行产生了大量的数据。这些数据是各个系统在各个时刻或重要事件产生的重要数据,为后期的大数据挖掘具有数据来源。针对海量数据存储以及快速的数据分析,许多分布式存储系统应运而生,其中,分布式文件系统(hadoop distributed file system、hdfs)和分布式文件系统ceph是最为经典的两个分布式文件存储系统。
3.在利用hdfs和ceph处理海量小文件(例如日志数据、图片数据等)时会出现性能和吞吐量急剧下降的问题。严重甚至服务卡顿,系统卡死,无法提供正常的服务。并且ceph在存储文件时并不会对文件内容进行分析,无法判别出是否有异常数据、异常图片或者异常视频,缺少对文件数据的分析。
技术实现要素:
4.有鉴于此,本技术实施例提供一种文件存储方法、装置、系统及计算机可读存储介质。
5.本技术实施例的技术方案是这样实现的:
6.本技术实施例提供一种文件存储方法,应用于文件存储系统,所述文件存储系统包括:轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,所述方法包括:
7.获取待存储文件和所述面向列式存储的分布式数据库中的预设路径权限数据;
8.基于所述预设路径权限数据对所述待存储文件对应的存储账号进行权限认证,得到第一认证结果;
9.确定所述第一认证结果表征认证成功,对所述待存储文件的文件内容进行检测,得到检测结果;
10.当所述检测结果表征检测通过时,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,并返回待存储文件的文件路径;
11.基于所述待存储文件的文件路径生成所述待存储文件的元数据,并将所述待存储文件的元数据和所述待存储文件的配置数据存储至所述远程字典服务和所述面向列式存储的分布式数据库。
12.本技术实施例提供一种文件存储装置,所述文件存储装置包括:
13.获取模块,用于获取待存储文件和所述面向列式存储的分布式数据库中的预设路径权限数据;
14.认证模块,用于基于所述预设路径权限数据对所述待存储文件对应的存储账号进
行权限认证,得到第一认证结果;
15.检测模块,用于确定所述第一认证结果表征认证成功,对所述待存储文件的文件内容进行检测,得到检测结果;
16.第一存储模块,用于当所述检测结果表征检测通过时,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,并返回待存储文件的文件路径;
17.第二存储模块,用于基于所述待存储文件的文件路径生成所述待存储文件的元数据,并将所述待存储文件的元数据和所述待存储文件的配置数据存储至所述远程字典服务和所述面向列式存储的分布式数据库。
18.本技术实施例提供一种文件存储系统,所述文件存储系统包括轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,所述文件存储系统中已存储文件包括目标文件,所述目标文件为访问次数高于次数阈值的文件,其中:
19.所述轻量级分布式文件系统用于存储所有已存储文件的文件内容;
20.所述远程字典服务用于存储所述目标文件的基础数据,其中,所述基础数据包括元数据和配置数据;
21.所述面向列式存储的分布式数据库用于存储所有已存储文件的基础数据。
22.本技术实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述文件存储方法。
23.本技术实施例提供一种文件存储方法、装置、系统及计算机可读存储介质,该文件存储方法应用于文件存储系统,该文件存储系统包括轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,基于此,该文件存储方法包括:先获取待存储文件和面向列式存储的分布式数据库中预设路径权限数据,其中,预设路径权限数据为提前设置好的,用于指明针对各路径的存储权限;接着,基于预设路径权限数据对待存储文件对应的存储账号进行权限认证,来判断存储账号是否具备对待存储文件的存储权限,从而得到第一认证结果,并且在第一认证结果表征认证成功的情况下,也即在存储账号具备对待存储文件的存储权限的情况下,还会继续对待存储文件的文件内容进行检测,来检测待存储文件是否包含异常内容,得到检测结果;然后,在检测结果表征待存储文件检测通过的时候,也即待存储文件不包含异常内容的时候,则将待存储文件的文件内容存储至轻量级分布式文件系统,而且还同时返回待存储文件的文件路径;最后,基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库中。这样一来,无需通过轻量级分布式文件系统来存储待存储文件的元数据,从而节省轻量级分布式文件系统内存,提升文件存储系统整体性能。并且在进行存储的时候,还会进行权限认证、检测操作,从而能够及时发现异常存储账号或者异常文件,从而实现分析待存储文件目的,确保文件存储系统安全、稳定地运行。
附图说明
24.在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
25.图1为本技术实施例提供的文件存储方法的一种实现流程示意图;
26.图2为本技术实施例提供的存储待存储文件的文件内容的一种实现流程示意图;
27.图3为本技术实施例提供的删除过期文件方法的一种实现流程示意图;
28.图4为本技术实施例提供的确定目标文件方法的一种实现流程示意图;
29.图5为本技术实施例提供的下载文件方法的一种实现流程示意图;
30.图6为本技术实施例提供的将待下载文件返回至客户端方法的一种实现流程示意图;
31.图7为本技术实施例提供的上传文件方法的一种实现流程示意图;
32.图8为本技术实施例提供的下载文件方法的另一种实现流程示意图;
33.图9为本技术实施例提供的多级缓存方法的一种实现流程示意图;
34.图10为本技术实施例提供的文件存储装置的组成结构示意图;
35.图11为本技术实施例提供的文件存储系统的组成结构示意图。
具体实施方式
36.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
37.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
38.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
39.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
40.基于相关技术所存在的问题,本技术实施例提供一种文件存储方法,本技术实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本技术实施例提供的文件存储方法。在一些实施例中,该计算机程序可以在文件存储系统中的处理器执行。图1为本技术实施例提供的文件存储方法的一种实现流程,该文件存储方法应用于文件存储系统,该文件存储系统包括轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,基于此,如图1所示,该文件存储方法包括:
41.步骤s101,获取待存储文件和面向列式存储的分布式数据库中的预设路径权限数据。
42.这里,待存储文件可以为运行数据、图像等,在本技术实施例中,待存储文件还可以是指小文件,其中,小文件是指占用存储空间小于2兆的文件。
43.在本技术实施例中,会在面向列式存储的分布式数据库(hbase)中提前存储有预设路径权限数据,其中,该预设路径权限数据用于指明针对各个路径的存储权限。示例性的,针对d磁盘下“客户项目1”文件夹,公司项目部的员工具备向该路径下进行文件存储的权限;而针对d磁盘下“员工管理”文件夹,公司综合部的员工具备向该路径下进行文件存储
的权限。
44.步骤s102,基于预设路径权限数据对待存储文件对应的存储账号进行权限认证,得到第一认证结果。
45.这里,在获取到待存储文件的同时,还会获取到该待存储文件对应的存储账号,基于此,文件存储系统会利用预设路径权限数据对存储账号进行权限认证,从而判别出存储账号是否具备存储待存储文件的权限。
46.承接上面的例子,假设张三向d磁盘下“客户项目1”文件夹存储待存储文件,文件存储系统则会对张三进行权限认证,如果张三是公司项目部的员工,则得到表征认证成功的第一认证结果;而如果张三是公司综合部的员工,则得到表征认证失败的第一认证结果。
47.步骤s103,确定第一认证结果表征认证成功,对待存储文件的文件内容进行检测,得到检测结果。
48.在本技术实施例中,如果得到表征认证成功的第一认证结果,则会继续对待存储文件的文件内容进行检测处理,得到检测结果。进行检测的目的是及时发现异常内容,从而避免存储异常内容,或者避免继续传输异常内容,如此确保文件存储系统安全、高效的运行。
49.在一些实施例中,如果得到表征认证失败的第一认证结果,则表征存储账号没有权限存储待存储文件,会直接结束存储流程,并不会继续对待存储文件的文件内容进行检测处理。
50.步骤s104,当检测结果表征检测通过时,将待存储文件的文件内容存储至轻量级分布式文件系统,并返回待存储文件的文件路径。
51.这里,在检测结果表征检测通过的时候,表征待存储文件的文件内容并不包括异常内容,则将待存储文件的文件内容存储至轻量级分布式文件系统,还会返回待存储文件的存储路径,该存储路径也称为文件路径。
52.在一些实施例中,如果检测结果表征检测不通过。则表征待存储文件的文件内容中包括异常内容,为了确保文件存储系统的安全性,则会直接结束存储流程,并不会存储该待存储文件。
53.步骤s105,基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库。
54.在本技术实施例中,是将待存储文件的文件名和待存储文件的文件路径关联起来或者对应起来,生成待存储文件的元数据。
55.这里,配置数据包括文件过期信息、文件加密信息、文件大小信息等。在本技术实施例中可利用配置数据实现对待存储文件的分析。
56.基于此,将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务,同时还将待存储文件的元数据和待存储文件的配置数据存储至面向列式存储的分布式数据库。如此,提升数据的安全性,在实际进行数据访问的时候,一般是访问远程字典服务中的数据,如果远程字典服务中的数据有所损坏,便能够从面向列式存储的分布式数据库获取未损坏的数据。
57.在一些实施例中,远程字典服务中存储的是访问频率较高的文件的基础数据,而
面向列式存储的分布式数据库中存储的是所有文件的基础数据。在存储待存储文件的时候,可将待存储文件的元数据和待存储文件的配置数据,同时存储至远程字典服务和面向列式存储的分布式数据库;也可只将待存储文件的元数据和待存储文件的配置数据存储至面向列式存储的分布式数据库;也可基于待存储文件携带的存储标记信息来确定待存储文件的元数据和待存储文件的配置数据的存储位置。
58.本技术实施例提供一种文件存储方法,该文件存储方法应用于文件存储系统,该文件存储系统包括轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,基于此,该文件存储方法包括:先获取待存储文件和面向列式存储的分布式数据库中预设路径权限数据,其中,预设路径权限数据为提前设置好的,用于指明针对各路径的存储权限;接着,基于预设路径权限数据对待存储文件对应的存储账号进行权限认证,来判断存储账号是否具备对待存储文件的存储权限,从而得到第一认证结果,并且在第一认证结果表征认证成功的情况下,也即在存储账号具备对待存储文件的存储权限的情况下,还会继续对待存储文件的文件内容进行检测,来检测待存储文件是否包含异常内容,得到检测结果;然后,在检测结果表征待存储文件检测通过的时候,也即待存储文件不包含异常内容的时候,则将待存储文件的文件内容存储至轻量级分布式文件系统,而且还同时返回待存储文件的文件路径;最后,基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库中。这样一来,无需通过轻量级分布式文件系统来存储待存储文件的元数据,从而节省轻量级分布式文件系统内存,提升文件存储系统整体性能。并且在进行文件存储的时候,还会进行权限认证、检测操作,从而能够及时发现异常存储账号或者异常文件,从而实现分析待存储文件目的,确保文件存储系统安全、稳定地运行。
59.在一些实施例中,为提升待存储文件的安全性,会对待存储文件进行加密处理,基于此,如图2所示,上述步骤s104中的“将待存储文件的文件内容存储至轻量级分布式文件系统”可通过以下步骤s1041至步骤s1046来实现:
60.步骤s1041,获取待存储文件的配置数据。
61.这里,可通过位置信息或者标识信息来获取待存储文件的配置数据,其中,该配置文件中包括待存储文件的文件加密信息。
62.步骤s1042,基于待存储文件的配置数据对待存储文件进行加密检测,得到第一加密检测结果。
63.这里,解析待存储文件的配置数据,也即解析待存储文件的文件加密信息,来对待存储文件进行加密检测,得到第一加密检测结果,该第一加密检测结果能够反映出待检测文件的加密情况。
64.示例性地,如果待存储文件的文件加密信息为空,则得到表征待存储文件不需要进行加密的第一加密检测结果;而如果待存储文件的文件加密信息不为空,则得到表征待存储文件需要进行加密的第一加密检测结果。
65.步骤s1043,判断第一加密结果是否表征待存储文件需要进行加密。
66.这里,基于第一加密结果判断待存储文件是否需要进行加密,如果第一加密结果表征待存储文件需要进行加密,则进入步骤s1044;而如果第一加密结果表征待存储文件不需要进行加密,则进入步骤s1046。
67.步骤s1044,对待存储文件进行加密处理,得到加密后的待存储文件。
68.这里,第一加密结果表征待存储文件需要进行加密,则对待存储文件进行加密处理。
69.在本技术实施例中,该第一加密检测结果中还包括相应的加密方法,基于此,则会利用该相应的加密方法对待存储文件进行加密,从而得到加密后的待存储文件。
70.步骤s1045,将加密后的待存储文件存储至轻量级分布式文件系统。
71.这里,是将加密后待存储文件的文件内容存储至轻量级分布式文件系统。
72.步骤s1046,将待存储文件存储至轻量级分布式文件系统。
73.这里,是将待存储文件的文件内容存储至轻量级分布式文件系统。
74.在本技术实施例中,通过上述步骤s1041至步骤s1046,在将待存储文件的文件内容存储至轻量级分布式文件系统的时候,会先获取待存储文件的配置数据,该配置文件中包括待存储文件的文件加密信息;再基于待存储文件的配置数据对待存储文件进行加密检测,得到第一加密检测结果;在第一加密检测结果表征待存储文件需要进行加密的时候,则对待存储文件进行加密,得到加密后的待存储文件;最后,将加密后的待存储文件的文件内容存储至轻量级分布式文件系统,从而提升待存储文件的安全性。
75.在一些实施例中,为了提升文件存储系统的运行效率,还会定期删除文件存储系统中的过期文件,基于此,如图3所示,在上述步骤s105“基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库”之后,还可执行以下步骤s106至步骤s109:
76.步骤s106,获取当前时间信息、远程字典服务中基础数据的第一过期时间和面向列式存储的分布式数据库中基础数据的第二过期时间。
77.这里,文件存储系统能够基于通信链路在线获取当前时间信息。在本技术实施例中,还解析远程字典服务中的基础数据以及面向列式存储的分布式数据库中基础数据,从而得到远程字典服务中基础数据的第一过期时间,还可以得到面向列式存储的分布式数据库中基础数据的第二过期时间,其中,基础数据中包括配置数据,而配置数据中包括文件过期信息。
78.在本技术实施例中,远程字典服务中基础数据的第一过期时间用于表征远程字典服务中基础数据的过期时间,面向列式存储的分布式数据库中基础数据的第二过期时间用于表征面向列式存储的分布式数据库中基础数据的过期时间。
79.步骤s107,基于当前时间信息、第一过期时间和第二过期时间,确定远程字典服务中第一过期文件和面向列式存储的分布式数据库中第二过期文件。
80.这里,可通过比较当前时间信息和第一过期时间,得到第一比较结果,如果该第一比较结果表征第一过期时间在当前时间之前,则将第一过期时间对应的基础数据确定为第一过期文件。
81.相类似的,也可通过比较当前时间信息和第二过期时间,得到第二比较结果,如果该第二比较结果表征第二过期时间在当前时间之前,则将第二过期时间对应的基础数据确定为第二过期文件。
82.步骤s108,基于第一过期文件和第二过期文件,确定轻量级分布式文件系统中对应的第三过期文件。
83.这里,由于远程字典服务中和面向列式存储的分布式数据库中存储的是文件的基础数据,而轻量级分布式文件系统中存储的是文件内容,因此,还会从轻量级分布式文件系统中确定出第一过期文件和第二过期文件对应的文件内容,这里记为第三过期文件。
84.步骤s109,删除第一过期文件、第二过期文件和第三过期文件。
85.这里,可通过删除命令删除第一过期文件、第二过期文件和第三过期文件。
86.在本技术实施例中,通过以上步骤s106至步骤s109,先获取当前时间信息、远程字典服务中基础数据的第一过期时间和面向列式存储的分布式数据库中基础数据的第二过期时间,然后确定出远程字典服务中的第一过期文件和面向列式存储的分布式数据库中的第二过期文件,还基于第一过期文件和第二过期文件确定出轻量级分布式文件系统中对应的第三过期文件,最终删除第一过期文件、第二过期文件和第三过期文件,如此,及时清理过期文件,提升访问效率以及文件存储系统的运行速度。
87.在利用文件存储系统实际存储文件的时候,远程字典服务中存储的基础数据包含于面向列式存储的分布式数据库中存储的基础数据,其中,远程字典服务中存储的基础数据为目标文件的基础数据,该目标文件也称为热点文件;而面向列式存储的分布式数据库中存储的基础数据为所有已存储文件的基础数据。基于此,如图4所示,在上述步骤s105“基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库”之后,还可执行以下步骤s106’至步骤s108’:
88.步骤s106’,获取轻量级分布式文件系统中各个文件的访问次数。
89.这里,各个文件访问次数的初始值为0,每访问一次文件,则该文件的访问次数累加1。
90.步骤s107’,基于各个访问次数和次数阈值,从各个文件中确定出目标文件。
91.这里,次数阈值可以为默认值,也可以为自定义设置值。示例性的,该次数阈值可以为10、15、20等。
92.在本技术实施例中,可依次比较各个访问次数与次数阈值之间的大小关系,如果存在访问次数高于次数阈值的目标访问次数,则将目标访问次数对应的文件确定为目标文件。其中,目标文件的访问次数高于次数阈值,也即目标文件为被访问频次高的文件。
93.在一些实施例中,如果所有访问次数均小于次数阈值,也即,不存在访问次数高于次数阈值的目标访问次数,则表征各个文件中不存在目标文件。
94.步骤s108’,将目标文件的基础数据存储至远程字典服务。
95.这里,是将目标文件的基础数据存储至远程字典服务,以方便访问目标文件时,对目标文件的基础数据的读取或者操作,借助远程字典服务的高校缓存技术,来提升访问效率。
96.在一些实施例中,轻量级分布式文件系统还支持合并多个待存储文件,达到节省存储空间的目的,因此,在上述步骤s101“获取待存储文件和面向列式存储的分布式数据库中的预设路径权限数据”之前,还可执行以下步骤s001和步骤s002:
97.步骤s001,获取多个待存储文件,并确定多个待存储文件所占用的总存储空间。
98.这里,先确定各个待存储文件对应的存储空间,然后累加各个存储空间,得到总存储空间。
99.步骤s002,确定总存储空间小于存储空间阈值,合并多个待存储文件,得到合并后的待存储文件。
100.这里,存储空间阈值可以为默认值或者自定义值,示例性的,该存储空间阈值可以为5兆、6兆、7兆等。
101.在本技术实施例中,会先判断总存储空间与存储空间阈值之间的大小关系,如果总存储空间小于存储空间阈值,则依次合并多个待存储文件;或者按照多个待存储文件的类别、格式等属性信息排序该多个待存储文件,然后按照排序顺序合并该多个待存储文件。
102.在本技术实施例中,合并后的待存储文件包含位置指示信息,位置指示信息用于指示不同待存储文件所在的位置。
103.在一些实施例中,如果总存储空间大于存储空间阈值,表征该多个待存储文件所占用的总存储空间较大,则不合并该多个待存储文件;或者,减少多个待存储文件的个数,直至减少后的待存储文件多占用的总存储空间小于存储空间阈值,再合并减少后的待存储文件。
104.在本技术实施例中,通过以上步骤s001和步骤s002,会在多个待存储文件所占用的总存储空间小于存储空间阈值的情况下,合并该多个待存储文件,从而达到节约存储空间的目的,从而能够存储更多的待存储文件,提升文件存储系统性能。
105.在本技术实施例中,还可以从文件存储系统中下载待下载文件,因此基于上述文件存储系统,如图5所示,在下载待下载文件的时候,还可以执行以下步骤s501至步骤s504,在一些实施例中。下述步骤s501至步骤s504也可在上述步骤s105之后来执行。
106.步骤s501,响应于客户端发送的下载请求,获取所述下载请求对应的待下载文件的基础数据。
107.这里,下载请求是用于请求下载待下载文件,其中,待下载文件的基础数据存储于文件存储系统中。
108.基于上述实施例中,在接收到客户端发送的下载请求之后,是从远程字典服务中或者面向列式存储的分布式数据库中来获取待下载文件的基础数据。在实际实现的时候,是先从远程字典服务中来获取待下载文件的基础数据,如果获取不到,则会从面向列式存储的分布式数据库中来获取待下载文件的基础数据。
109.步骤s502,基于待下载文件的基础数据对下载请求对应的下载账号进行权限认证,得到第二认证结果。
110.这里,基础数据中还包括有路径权限信息,该路径权限信息用于限定下载该待下载文件的账号。
111.在本技术实施例中,还会获取下载请求对应的下载账号,并利用待下载文件对应的路径权限信息对下载账号进行权限认证,得到表征下载账号是否具备下载权限的第二认证结果。
112.步骤s503,确定第二认证结果表征认证成功,利用待下载文件的基础数据对待下载文件进行期限检测,得到期限检测结果。
113.这里,如果第二认证结果表征下载账号具备下载权限,则确定第二认证结果表征认证成功,基于此,还会对待下载文件进行期限检测,也即基于基础数据中的文件过期信息,来检测待下载文件是否为过期文件,得到期限检测结果。
114.在一些实施例中,如果第二认证结果表征下载账号不具备下载权限,则确定第二认证结果表征认证失败,则直接结束流程,并不会对待下载文件进行期限检测。
115.步骤s504,确定期限检测结果表征待下载文件未过期,将待下载文件返回至客户端。
116.在实际实现的时候,如图6所示,“将待下载文件返回至客户端”可通过以下步骤s5041至步骤s5044来实现:
117.步骤s5041,基于待下载文件的基础数据对待下载文件进行加密检测,得到第二加密检测结果。
118.这里,可基于基础数据中的文件加密信息来进行加密检测,得到表征待下载文件是否加密的第二加密检测结果。
119.示例性地,如果文件加密信息不为空,则得打表征待下载文件加密的第二加密检测结果;而如果文件加密信息为空,则得到表征待下载文件不加密的第二加密检测结果。
120.步骤s5042,确定第二加密检测结果表征待下载文件为加密文件,获取客户端发送的密钥。
121.这里,如果第二加密检测结果表征待下载文件为加密文件,还会解析下载请求,以获得密钥。
122.在一些实施例中,如果第二加密检测结果表征待下载文件为不加密文件,则直接将待下载文件返回值客户端,无需进行解密处理。
123.步骤s5043,利用密钥对待下载文件进行解密处理,得到解密文件。
124.这里,利用密钥对加密的待下载文件进行解密操作,从而得到解密后的待下载文件,也即得到解密文件。
125.步骤s5044,将解密文件返回至客户端。
126.在一些实施例中,为了满足高并发下载请求的情况,文件存储系统具备多级缓存功能,从而降低底层文件系统的压力,因此,可在客户端和文件存储系统之间设置缓存机器,该缓存机器用于缓存轻量级分布式文件系统中的文件内容,该缓存机器与客户端直接交互,也即,客户端是从缓存机器中获取待下载文件的文件内容。而在缓存机器中不存在待下载文件的文件内容的情况下,缓存机器会通过获取指令从轻量级分布式文件系统中获取待下载文件的文件内容。
127.在一些实施例中,如果期限检测结果表征待下载文件已经过期,则直接结束流程,可向客户端返回下载失败的结果。
128.在本技术实施例中,通过上述步骤s501至步骤s504,在接收到下载请求之后,会获取下载请求对应的待下载文件的基础数据,以利用基础数据对下载请求对应的下载账号进行权限认证,确定权限认证成功的情况下,还会对待下载文件进行期限检测;并且在待下载文件没有过期的情况下,还会对待下载文件进行加密检测,从而将解密后的文件发送至客户端,以供客户端使用。如此,在下载待下载文件的时候,能够提升对待下载文件的分析。
129.基于上述实施例,本技术实施例再提供一种文件存储方法,该文件存储方法应用于文件存储系统,基于此,本技术实施例以利用文件存储系统存储海量小文件为例,是用量轻级分布式文件系统(fastdfs)存储文件数据;提供一个自研的客户端,上传各种文件,其中,自研的客户端是指能够匹配本技术实施例中文件处理方法的客户端;fastdfs没有元数
据管理也会有一定问题,相比较分布式文件系统(ceph)功能没有ceph那么多,可以借助远程字典服务(remote dictionary server,redis)和面向列式存储的分布式数据库(hbase)存储小文件(例如日志数据、图片数据等)的元数据。借助redis的高读写性能将热点文件的元数据存储到redis,借助hbase的海量数据读写的高性能,将存储的小文件的元数据存储到hbase。
130.本技术实施例提供的文件存储系统具备如下功能:
131.功能1,用户可以通过自研的客户端将文件存入fastdfs集群,元数据存入redis和hbase中;
132.功能2,fastdfs集群任意服务器或者磁盘故障,数据还能访问,因为数据是有做备份,所有还能够访问;
133.功能3,通过nginx缓存频繁访问的文件,满足高并发下载请求文件的情况,其中,nginx相当于上述实施例中缓存服务器;
134.功能4,提供多个高级功能点,满足用户各种需求。
135.在一些实施例中,利用本技术实施例提供的文件处理方法和文件存储系统,能够解决如下四个问题:
136.问题1,解决存储海量小文件时,过多的元数据管理。
137.fastdfs在存储海量小文件时不存储元数据,它是将元数据的信息以编码形势存储到存储到文件名称中,因此存储海量小文件性能及其的高。针对某些用户需要保留元数据信息,借助redis高效的缓存技术,hbase海量列式数据存储功能,完美的解决了元数据过多系统内存占用过高问题。
138.问题2,解决文件随机分配数据块,导致大量磁盘碎片,以及大量读取文件性能过低问题。
139.fastdfs支持小文件合并操作,一个文件在存储到分布式文件系统中会占用一个文件,但操作系统的文件总是有一定限值,如果不支持小文件合并,那会有一种情况出现,磁盘容量还有很多,但因存储了海量小文件,导致不能在存储数据,fastdfs完美解决了这个问题。
140.问题3,丰富存储系统缺少的一些高级功能,提供覆盖原始文件、文件定时删除功能、存储文件加密解密功能、人工智能识别(图片识别、文件内容识别)违禁文件上传下载。
141.如此,这些高级功能价值体现在:
142.第一,覆盖原始文件的功能,成功解决文件升级,调用系统无法及时感知更新升级后文件。
143.第二,文件定时删除功能,降低了存储系统的压力,也成功清理了存储系统的垃圾文件。
144.第三,存储文件加密解密功能,有效的保护了一些重要的文件。即使用户盗取了文件系统中的文件,也不会窃取文件中的信息
145.第四,人工智能识别违禁文件上传下载,降低了违禁文件的上传,降低外网下载到违禁文件。
146.问题4,提供多级缓存机制,满足高并发下载请求文件的情况。高并发请求文件系统时,若没有缓存,所有请求都到fastdfs文件系统,将会导致文件系统的磁盘io飙高,文件
系统性能下降。多级缓存降低了底层文件系统的压力,也满足了高并发的场景。
147.在本技术实施例中,结合文件存储系统架构能够实现对文件的上传和下载操作。
148.图7为本技术实施例提供的上传文件流程示意图,如图7所示,上传文件流程包括以下步骤s701至步骤s713:
149.步骤s701,开始。
150.这里,客户可通过自研的客户端向存储系统存入数据,启动上传文件流程。
151.步骤s702,数据到达nginx。
152.在本技术实施例中,数据达到nginx之后,接着,nginx会去调用相应的一个自研执行程序,其中,该自研执行程序可以通过lua语言或go语言编写。
153.步骤s703,运行自研执行程序。
154.步骤s704,获取基础数据(包括元数据和高级配置数据)。
155.这里,自研程序会从redis或者hbase中获取基础数据,其中,该基础数据包括元数据和高级配置数据。
156.步骤s705,检测是否有权限在指定路径下上传文件。
157.这里,将用户提供的上传路径信息、以及用户提供密钥,与基础数据中的路径权限表相应的数据进行权限认证。如果认证结果表征有权限在指定路径下上传文件,则进入步骤s706;而如果认证结果表征没有权限在指定路径下上传文件,则结束流程,也即进入步骤s712。
158.步骤s706,利用人工智能的方法检索文件是否满足要求。
159.这里,自研执行程序通过识别、检测等算法对文件内容进行检索,来确定文件是否满足要求,该要求主要包括合规性要求,也即检测是否存在异常文件。
160.以文件为图片举例来说,如果图片满足要求,也即图片中包括合规的内容,则进入步骤s707;否则结束流程,也即进入步骤s712。
161.步骤s707,检测文件是否需要加密。
162.这里,自研执行程序检查文件是否有加密需求,如果有加密需求则要对上传文件进行加密,进入步骤s708;而如果没有加密需求则无需对上传文件进行加密,进入步骤s709。
163.步骤s708,加密处理。
164.这里,对文件进行加密处理,从而得到加密后文件。
165.步骤s709,将文件上传至fastdfs。
166.这里,自研执行程序调取fastdfs接口将文件上传到fastdfs中,fastdfs返回存储的fileid。
167.在一些实施例中,如果文件上传失败,则直接结束流程。
168.步骤s710,确定文件的基础数据。
169.这里,可基于fileid确定文件的元数据,再将文件的元数据和文件的高级配置数据确定为文件的基础数据。
170.步骤s711,将文件的基础数据存储到redis和hbase中
171.步骤s712,结束。
172.这里,在指定路径下没有权限上传文件或者文件不满足要求的情况下,结束流程。
173.在一些实施例中,自研执行程序还会判断redis以及hbase数据是否写成功,如果写成功,返回成功上传的结果给客户;而如果写失败,则返回上传失败的结果(或者错误的结果)给客户。
174.在一些实施例中,在进行文件上传的时候,为了缓解存储压力,提升处理速度,参考图7,在上述步骤s712之后,还会定期确定出过期文件,并删除该过期文件,也即执行步骤s713“执行定时任务”。在执行定时任务的时候,会从redis以及hbase中检索过期文件,并对该过期文件进行删除。
175.图8为本技术实施例提供的下载文件流程示意图,如图8所示,下载文件流程包括以下步骤s801至步骤s817:
176.步骤s801,开始。
177.这里,客户通过上传文件返回的统一资源定位系统(uniform resource locator,url)进行请求,来启动下载文件。
178.步骤s802,请求数据到达nginx。
179.这里,请求数据先达到nginx;接着,nginx去调用相应的一个自研执行程序,该自研执行程序可通过lua语言或go语言编写。
180.步骤s803,运行自研执行程序。
181.步骤s804,获取redis中的基础数据。
182.这里,利用自研执行程序会获取redis中的基础数据。
183.步骤s805,判断是否从redis中获取到基础数据。
184.这里,如果不能够从redis中获取到基础数据,则进入步骤s806;而如果能够从redis中获取到基础数据,则进入步骤s807。
185.步骤s806,获取hbase中的基础数据。
186.步骤s807,确定相应文件的基础数据。
187.这里,相应文件是指待下载文件,将从redis或hbase中获取的基础数据,确定为相应文件的基础数据。
188.步骤s808,通过基础数据中的高级配置数据来检测文件是否有权限下载。
189.这里,高级配置数据为基础数据中的部分,可通过该高级配置数据来检测当前用户是否有权限下载文件,如果有权限下载,则进入步骤s809;如果没有权限下载,则结束流程,进入步骤s817。
190.步骤s809,通过高级配置数据检测文件是否过期。
191.这里,自研执行程序通过基础数据中相应的高级配置数据检测文件是否过期,如果没有过期,进入步骤s810;而如果过期则结束流程,进入步骤s817,还可执行返回错误结果给客户。
192.步骤s810,通过基础数据中的元数据信息得到相应fastdfs的fileid。
193.步骤s811,基于fileid来检测nginx缓存文件中是否存在对应的缓存文件。
194.这里,自研执行程序检测nginx机器相应缓存文件夹中是否缓存fileid对应文件,如果不存在对应的缓存文件,进入步骤s812,也即到fastdfs中下载文件到nginx相应缓存文件夹中。而如果存在对应的缓存文件,则进入步骤s814。
195.步骤s812,从fastdfs下载fileid对应文件。
196.步骤s813,将fileid对应文件存入nginx相应缓存文件。
197.步骤s814,从nginx相应缓存文件获取fileid对应文件。
198.步骤s815,通过基础数据中相应的高级配置数据检测文件是否加密处理。
199.这里,高级配置数据包括加密相关信息,因此,可通过高级配置数据来检测文件是否加密处理,如果文件加密,则进入步骤s816;而如果文件没有加密,则进入步骤s817。
200.步骤s816,获取上传密钥,并解密文件。
201.这里,先检测到用户上传的密钥,再利用该密钥对文件进行解密处理,得到解密后的文件,最后,还会将解密后的文件传递给用户。
202.步骤s817,结束。
203.这里,在没有权限下载或者文件过期的情况下,直接结束流程。此外,在文件没有加密的情况下,可直接将没有加密的文件传递给用户,结束流程。
204.在本技术实施例中,fastdfs是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。redis即远程字典服务,是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的应用程序编程接口(application programming interface,api)。nginx(也可称为engine x)是一个高性能的超文本传输协议(http)和反向代理万维网(world wide web,web)服务器,同时也提供了imap/pop3/smtp服务。
205.在一些实施例中,针对存储在redis和hbase中的基础数据,该基础数据包括元数据表,元数据表如表1所示,在表1中,每个路径文件名对应有一个fileid。
206.表1元数据表
[0207][0208]
在redis中路径名作为redis进行key-value存储中的key值。而在hbase建立一张存储项目表,pro作为列族,base作为列,fileid作为base列的单元格。
[0209]
用户进行访问pro_base_/apps/test/test.txt,通过元数据的转换获取fileid,去缓存nginx或者fastdfs下载到真实的文件数据。
[0210]
表2为本技术实施例提供的一种路径权限表,参考表2,路径名为上传文件时指定的路径,还包括传输对应的密钥、部门及责任人。
[0211]
表2路径权限表
[0212][0213]
在本技术实施例中,在redis中路径名作为redis进行key-value存储中的key值。而在hbase建立一张存储项目表,pro作为列族,auth作为列,认证的token作为auth列的单元格。
[0214]
表3为本技术实施例提供的一种高级配置数据表,参考表3,高级配置数据表中包括路径文件名、过期时间、加密、内存大小等信息。
[0215]
表3高级配置数据表
[0216][0217]
在redis中路径名作为redis进行key-value存储中的key值。而在hbase建立一张存储项目表,pro作为列族,adv作为列,高级配置作为adv列的单元格。
[0218]
在一些实施例中,高级配置数据不跟元数据一起存储的原因为高级配置数据能够方便后期整理排查问题。
[0219]
在本技术实施例中,redis和hbase中还会存储过期数据表,在每次存储数据时通过得到过期时间,转换成某一天失效。以redis举例来说,在数据存储到高级配置时数据也存储到redis某个过期list集合中。比如2021-8-13过期,那将数据存储在redis对应pro_delete_2021-8-13对应的list集合,定时任务通过每天进行搜索指定的集合,将过期文件进行删除。清除垃圾文件。
[0220]
通过以上述方式将基础数据存储,通过元数据满足了用户保留上传文件名称的需
求,路径权限表有效的管理了用户上传文件,以及文件出错进行责任人查询,而高级配置数据表以及过期数据表,有效的提供了高级功能,并且为将来数据分析,计费提供数据基础。
[0221]
在本技术实施例中,还采用多级缓存技术,该多级缓存技术的用于场景为:在海量并发访问的时候,如果没有做多级缓存数据全部请求便会到fastdfs,fastdfs从磁盘上捞取大量文件,将会导致机器io升高,从而导致请求超时影响用户请求。因此需要做多级缓存来降低fastdfs请求。
[0222]
其中,一级缓存是指借助nginx自带的缓存机制,对相同访问请求进行的结果进行短暂的缓存,因为nginx缓存也会占用机器内存,如果缓存缓存时间长了,大量不同的并发访问会占用过多机器内存。
[0223]
因为一级缓存保存时间过短,如果没有一个二级缓存,大量请求还是会到达fastdfs,因此那就需要设计一套二级缓存,进行解决频繁访问的文件。
[0224]
在实际实现时,二级缓存的原理为:借助fastdfs文件存储的方式,在nginx相关文件夹下也形成一份一模一样的存储方式。
[0225]
以fastdfs下载文件方式举例来说:一个fileid为:/group1/m00/b3/62/cii-s1rlkawibib7affxkmeasnyaafxdaatyukauxfc667.txt,下载步骤包括以下步骤1至步骤4:
[0226]
步骤1:从tracker获取group1的storage机器的地址信息。
[0227]
步骤2:进入stroage机器上的相应存储目录。
[0228]
步骤3:再次进入/m00/b3/62/目录。
[0229]
步骤4:下载cii-s1rlkawibib7affxkmeasnyaafxdaatyukauxf-c667.txt文件。
[0230]
通过上述步骤1至步骤4,fastdfs存储数据非常简单,通过fileid能很简单的找到相应目录,将文件下载下来,既然如此完全可以在nginx机器上面也模拟一个文件系统,相同请求的时候从nginx文件系统获取。
[0231]
以nginx制作的二级缓存举例来说:一个fileid为:/group1/m00/b3/62/cii-s1rlkawibib7affxkmeasnyaafxdaatyukauxfc667.txt,下载步骤包括以下步骤1至步骤3:
[0232]
步骤1:从nginx缓存文件下找寻group1/m00/b3/62/cii-s1rlkawibib-7affxkmeasnyaafxdaatyukauxfc667.txt。
[0233]
步骤2:找到数据直接返回,未找到数据从fastdfs下载文件,将文件存储到nginx缓存文件下,相对路径为:group1/m00/b3/62/cii-s1rlkawibib7affx-kmeasnyaafxdaatyukauxfc667.txt。
[0234]
步骤3:返回缓存文件数据。
[0235]
在一些实施例中,通过脚本在nginx机器上定时到缓存文件夹下扫描,根据文件的创建比对nginx是否到达nginx二级缓存过期时间(设置的过期时间7天),过期时间将文件删除。
[0236]
基于上述实施例,本技术提出一种多级缓存方法,应用于nginx,nginx是直接与客户端交互的对象,如图9所示,该多级缓存方法包括以下步骤s901至步骤s907:
[0237]
步骤s901,开始。
[0238]
步骤s902,获取请求数据。
[0239]
这里,该请求数据是来自于客户端。
[0240]
步骤s903,缓存文件夹下是否存在请求数据对应的文件。
[0241]
这里,如果缓存文件夹下不存在请求数据对应的文件,则需要下载该请求数据对应的文件,进入步骤s904。如果缓存文件夹下存在请求数据对应的文件,进入步骤s905。
[0242]
步骤s904,从fastdfs中下载请求数据对应的文件,并存储在缓存文件夹中。
[0243]
这里,由于nginx的缓存文件夹中不存在客户端所需的文件,则会从fastdfs中下载请求数据对应的文件,也即下载客户端所需的文件;接着,还会将下载到的文件存储在自身的缓存文件夹中,以供客户端访问。
[0244]
步骤s905,从缓存文件夹下获取请求数据对应的文件。
[0245]
步骤s906,定期清理nginx缓存文件夹中过期文件。
[0246]
这里,为了提升访问速度,nginx还会定期清理自身缓存文件夹中的过期文件,示例性地,可以7天为期限,当一个文件的存储时间达到7天的时候,则将该文件确定为过期文件,并清理该过期文件。
[0247]
步骤s907,结束。
[0248]
通过上述步骤s901至步骤s907,在nginx机器上面刻录出来跟fastdfs一模一样的存储文件夹格式,简单高效的将一些请求在nginx层完美的挡住了,也通过nginx的一级缓存,避免了大量相同的请求访问,完美的解决了高并发访问的问题。
[0249]
利用本技术实施例提供的文件存储方法,fastdfs将元数据不存储在数据中,而是以特殊方式存储在文件名中,提高了海量小文件上传速率,经测试,fastdfs通过socket通信传输,单台上传吞吐量能达到5万个小文件,远远高过ceph(1万不到),hdfs(2万不到)的吞吐量;再者,使用fastdfs集群,跟不使用fastdfs集群相比,数据存储更加高效。借助fastdfs集群,对小文件合并作用,防止物理机因为存储小文件过多而句柄数耗尽,导致物理机磁盘还有很多,但存储不了文件了。还借助redis,hbase两大高效的中间件,弥补fastdfs为了高效存储牺牲的地方,满足要存储大量文件元数据的用户,还要保存原文件名的用户。借助redis,hbase存储高级配置数据、权限管理数据,方便有效的实现各种高级功能,借助权限表有效的管理起用户上传下载文件时的权限问题,借助高级配置数据表,提供了各种文件加密的算法,用户可以选择性的选择不同加密算法,在获取的数据时通过高级配置对应的加密算法进行相应的解密,既丰富了功能点,并且对后期计费统计变的可行性。本技术实施例还设计多级缓存技术,解决分布式文件系统高并发访问各种文件的时候,磁盘io过高的问题。最后,设计各种文件系统的高级功能点,比如检测文件是否异常,覆盖原始文件,文件定期删除,文件加密功能等等,满足了普通文件系统的不足。
[0250]
通过本技术实施例提供的文件存储方法能够解决以下两种应用场景存在的不足:
[0251]
第一种场景:冷备存储海量日志文件(文件非常小),合理的解决了ceph,hdfs存储此类数据低效的问题。
[0252]
第二种场景:存储海量图片系统,以及支持高效的随机读取图片功能,图片的文件大小一般很小,完全数据小文件存储范畴,完美的解决此种应用场景。如果通过ceph存储,ceph借助aws协议的restful接口,存储性能低下,其次高效的并发读取文件时,在大量元数据中寻找相应的文件以及读取文件数据将会占用过多时间。
[0253]
基于前述的实施例,本技术实施例提供一种文件存储装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过相应的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(central processing unit,
cpu)、微处理器(microprocessor unit,mpu)、数字信号处理器(digital signal processing,dsp)或现场可编程门阵列(field programmable gate array,fpga)等。
[0254]
本技术实施例再提供一种文件存储装置,图10为本技术实施例提供的文件存储装置的组成结构示意图,如图10所示,所述文件存储装置1000包括:
[0255]
获取模块1001,用于获取待存储文件和所述面向列式存储的分布式数据库中的预设路径权限数据;
[0256]
认证模块1002,用于基于所述预设路径权限数据对所述待存储文件对应的存储账号进行权限认证,得到第一认证结果;
[0257]
检测模块1003,用于确定所述第一认证结果表征认证成功,对所述待存储文件的文件内容进行检测,得到检测结果;
[0258]
第一存储模块1004,用于当所述检测结果表征检测通过时,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,并返回待存储文件的文件路径;
[0259]
第二存储模块1005,用于基于所述待存储文件的文件路径生成所述待存储文件的元数据,并将所述待存储文件的元数据和所述待存储文件的配置数据存储至所述远程字典服务和所述面向列式存储的分布式数据库。
[0260]
在一些实施例中,所述第一存储模块1004包括:
[0261]
第一获取子模块,用于获取所述待存储文件的配置数据;
[0262]
第一加密检测子模块,用于基于所述待存储文件的配置数据对所述待存储文件进行加密检测,得到第一加密检测结果;
[0263]
加密子模块,用于确定所述第一加密检测结果表征所述待存储文件需要进行加密,对所述待存储文件进行加密处理,得到加密后的待存储文件;
[0264]
第一存储子模块,用于将所述加密后的待存储文件存储至所述轻量级分布式文件系统。
[0265]
在一些实施例中,所述获取模块1001,还用于获取当前时间信息、所述远程字典服务中基础数据的第一过期时间和所述面向列式存储的分布式数据库中基础数据的第二过期时间;所述文件存储装置1000还包括:
[0266]
第一确定模块,用于基于所述当前时间信息、所述第一过期时间和所述第二过期时间,确定所述远程字典服务中第一过期文件和所述面向列式存储的分布式数据库中第二过期文件;
[0267]
第二确定模块,用于基于所述第一过期文件和所述第二过期文件,确定轻量级分布式文件系统中对应的第三过期文件;
[0268]
删除模块,用于删除所述第一过期文件、所述第二过期文件和所述第三过期文件。
[0269]
在一些实施例中,所述获取模块1001,还用于获取所述轻量级分布式文件系统中各个文件的访问次数;所述文件存储装置1000还包括:
[0270]
第三确定模块,用于基于各个访问次数和次数阈值,从所述各个文件中确定出目标文件,其中,所述目标文件的访问次数高于所述次数阈值;
[0271]
第三存储模块,用于将所述目标文件的基础数据存储至所述远程字典服务。
[0272]
在一些实施例中,所述获取模块1001,还用于获取多个待存储文件,并确定所述多个待存储文件所占用的总存储空间;所述文件存储装置1000还包括:
[0273]
合并模块,用于确定所述总存储空间小于存储空间阈值,合并所述多个待存储文件,得到合并后的待存储文件,其中,所述合并后的待存储文件包含位置指示信息,所述位置指示信息用于指示不同待存储文件所在的位置。
[0274]
在一些实施例中,认证模块1002,还用于基于所述待下载文件的基础数据对所述下载请求对应的下载账号进行权限认证,得到第二认证结果;所述检测模块1003,还用于确定所述第二认证结果表征认证成功,利用所述待下载文件的基础数据对所述待下载文件进行期限检测,得到期限检测结果;
[0275]
所述文件存储装置1000还包括:
[0276]
响应模块,用于响应于客户端发送的下载请求,获取所述下载请求对应的待下载文件的基础数据,其中,所述待下载文件的基础数据存储于所述文件存储系统中;
[0277]
返回模块,用于确定所述期限检测结果表征所述待下载文件未过期,将所述待下载文件返回至所述客户端。
[0278]
在一些实施例中,所述返回模块包括:
[0279]
第二加密检测子模块,用于基于所述待下载文件的基础数据对所述待下载文件进行加密检测,得到第二加密检测结果;
[0280]
第二获取子模块,用于确定所述第二加密检测结果表征所述待下载文件为加密文件,获取客户端发送的密钥;
[0281]
解密子模块,用于利用所述密钥对所述待下载文件进行解密处理,得到解密文件;
[0282]
返回子模块,用于将所述解密文件返回至所述客户端。
[0283]
需要说明的是,本技术实施例文件存储装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0284]
需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述的文件存储方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0285]
相应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的文件存储方法。
[0286]
本技术实施例提供一种文件存储系统,图11为本技术实施例提供的文件存储系统的组成结构示意图,如图11所示,所述文件存储系统1100包括:轻量级分布式文件系统1101、远程字典服务1102和面向列式存储的分布式数据库1103。其中,文件存储系统1100中已存储文件包括目标文件,目标文件为访问次数高于次数阈值的文件,其中:
[0287]
轻量级分布式文件系统1101用于存储所有已存储文件的文件内容;
[0288]
远程字典服务1102用于存储目标文件的基础数据,其中,基础数据包括元数据和配置数据;
[0289]
面向列式存储的分布式数据库1103用于存储所有已存储文件的基础数据。
[0290]
以上文件存储系统和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术文件存储系统和存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0291]
这里需要指出的是:以上存储介质和文件存储系统实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质和文件存储系统实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0292]
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0293]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0294]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0295]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本技术实施例方案的目的。
[0296]
另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0297]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
[0298]
或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台ac执行本技术各个
实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
[0299]
以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种文件存储方法,应用于文件存储系统,其特征在于,所述文件存储系统包括:轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,所述方法包括:获取待存储文件和所述面向列式存储的分布式数据库中的预设路径权限数据;基于所述预设路径权限数据对所述待存储文件对应的存储账号进行权限认证,得到第一认证结果;确定所述第一认证结果表征认证成功,对所述待存储文件的文件内容进行检测,得到检测结果;当所述检测结果表征检测通过时,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,并返回待存储文件的文件路径;基于所述待存储文件的文件路径生成所述待存储文件的元数据,并将所述待存储文件的元数据和所述待存储文件的配置数据存储至所述远程字典服务和所述面向列式存储的分布式数据库。2.根据权利要求1中所述的方法,其特征在于,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,包括:获取所述待存储文件的配置数据;基于所述待存储文件的配置数据对所述待存储文件进行加密检测,得到第一加密检测结果;确定所述第一加密检测结果表征所述待存储文件需要进行加密,对所述待存储文件进行加密处理,得到加密后的待存储文件;将所述加密后的待存储文件存储至所述轻量级分布式文件系统。3.根据权利要求1中任一项所述的方法,其特征在于,所述方法还包括:获取当前时间信息、所述远程字典服务中基础数据的第一过期时间和所述面向列式存储的分布式数据库中基础数据的第二过期时间;基于所述当前时间信息、所述第一过期时间和所述第二过期时间,确定所述远程字典服务中第一过期文件和所述面向列式存储的分布式数据库中第二过期文件;基于所述第一过期文件和所述第二过期文件,确定轻量级分布式文件系统中对应的第三过期文件;删除所述第一过期文件、所述第二过期文件和所述第三过期文件。4.根据权利要求1中所述的方法,其特征在于,所述方法还包括:获取所述轻量级分布式文件系统中各个文件的访问次数;基于各个访问次数和次数阈值,从所述各个文件中确定出目标文件,其中,所述目标文件的访问次数高于所述次数阈值;将所述目标文件的基础数据存储至所述远程字典服务。5.根据权利要求1中所述的方法,其特征在于,所述方法还包括:获取多个待存储文件,并确定所述多个待存储文件所占用的总存储空间;确定所述总存储空间小于存储空间阈值,合并所述多个待存储文件,得到合并后的待存储文件,其中,所述合并后的待存储文件包含位置指示信息,所述位置指示信息用于指示不同待存储文件所在的位置。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法包括:
响应于客户端发送的下载请求,获取所述下载请求对应的待下载文件的基础数据,其中,所述待下载文件的基础数据存储于所述文件存储系统中;基于所述待下载文件的基础数据对所述下载请求对应的下载账号进行权限认证,得到第二认证结果;确定所述第二认证结果表征认证成功,利用所述待下载文件的基础数据对所述待下载文件进行期限检测,得到期限检测结果;确定所述期限检测结果表征所述待下载文件未过期,将所述待下载文件返回至所述客户端。7.根据权利要求6中所述的方法,其特征在于,将所述待下载文件返回至所述客户端,包括:基于所述待下载文件的基础数据对所述待下载文件进行加密检测,得到第二加密检测结果;确定所述第二加密检测结果表征所述待下载文件为加密文件,获取客户端发送的密钥;利用所述密钥对所述待下载文件进行解密处理,得到解密文件;将所述解密文件返回至所述客户端。8.一种文件存储装置,其特征在于,所述文件存储装置包括:获取模块,用于获取待存储文件和所述面向列式存储的分布式数据库中的预设路径权限数据;认证模块,用于基于所述预设路径权限数据对所述待存储文件对应的存储账号进行权限认证,得到第一认证结果;检测模块,用于确定所述第一认证结果表征认证成功,对所述待存储文件的文件内容进行检测,得到检测结果;第一存储模块,用于当所述检测结果表征检测通过时,将所述待存储文件的文件内容存储至所述轻量级分布式文件系统,并返回待存储文件的文件路径;第二存储模块,用于基于所述待存储文件的文件路径生成所述待存储文件的元数据,并将所述待存储文件的元数据和所述待存储文件的配置数据存储至所述远程字典服务和所述面向列式存储的分布式数据库。9.一种文件存储系统,其特征在于,所述文件存储系统包括轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库,所述文件存储系统中已存储文件包括目标文件,所述目标文件为访问次数高于次数阈值的文件,其中:所述轻量级分布式文件系统用于存储所有已存储文件的文件内容;所述远程字典服务用于存储所述目标文件的基础数据,其中,所述基础数据包括元数据和配置数据;所述面向列式存储的分布式数据库用于存储所有已存储文件的基础数据。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述权利要求1至7任一项所述的文件存储方法。
技术总结
本申请公开了一种文件存储方法、装置、系统及计算机可读存储介质,包括:基于预设路径权限数据对待存储文件对应的存储账号进行权限认证,得到第一认证结果;确定第一认证结果表征认证成功,对待存储文件的文件内容进行检测,得到检测结果;当检测结果表征检测通过时,将待存储文件的文件内容存储至轻量级分布式文件系统,并返回待存储文件的文件路径;基于待存储文件的文件路径生成待存储文件的元数据,并将待存储文件的元数据和待存储文件的配置数据存储至远程字典服务和面向列式存储的分布式数据库。如此,通过轻量级分布式文件系统、远程字典服务和面向列式存储的分布式数据库能够提升文件存储系统性能,实现对待存储文件的分析。件的分析。件的分析。
技术研发人员:周天晓
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.08.12
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/