CN114661687B - 一种基于ShardingSphere与Fastdfs的分布式文件存储方法 - Google Patents
一种基于ShardingSphere与Fastdfs的分布式文件存储方法 Download PDFInfo
- Publication number
- CN114661687B CN114661687B CN202210212779.8A CN202210212779A CN114661687B CN 114661687 B CN114661687 B CN 114661687B CN 202210212779 A CN202210212779 A CN 202210212779A CN 114661687 B CN114661687 B CN 114661687B
- Authority
- CN
- China
- Prior art keywords
- file
- fastdfs
- storage
- database
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000012217 deletion Methods 0.000 claims abstract description 12
- 230000037430 deletion Effects 0.000 claims abstract description 12
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 2
- 239000002360 explosive Substances 0.000 description 1
- 239000000178 monomer Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据存储技术领域,具体涉及一种基于ShardingSphere与Fastdfs的分布式文件存储方法。本发明提供一种基于ShardingSphere与Fastdfs的分布式文件存储方法,通过整合分库分表、数据库与fastdfs的组成形成分布式文件存储架构,并在此架构基础上开发文件服务API,提供存储、查询和删除等功能,存储功能主要使用Fastdfs集群实现海量文件的分布式存储,查询与删除功能主要通过ShardingSphere与Mysql集群中存储的海量文件元信息实现文件的查询与删除。本方法实现的分布式存储主要包含基于Fastdfs的文件数据存储集群,基于ShardingSphere中间件与Mysql的文件元信息存储的数据库集群,以及基于Nginx和应用服务的集群,从数据层和服务层均可实现分布式扩展与负载均衡。
Description
技术领域
本发明涉及数据存储技术领域,具体涉及一种基于ShardingSphere与Fastdfs的分布式文件存储方法。
背景技术
随着大数据时代的到来,互联网图片、文件、视频的数量也以爆炸式的速度增长,对文件的处理成为各个业务系统面临的巨大挑战,传统的Web应用中所有的功能与文件在同一台服务器上,文件的数量达到一定级别后,存在访问性能下降严重、文件存储空间难以扩展,系统之间很难文件共享等一系列问题。Fastdfs作为一款轻量级分布式文件系统,具有高性能、可扩展、负载均衡等特点,适合大数据环境下中小型文件的存储;ShardingSphere是一款关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,通过将大量数据拆分并分别存储在不同的数据库与表中,从而减轻单库单表的数据压力,从而提升数据操作的性能。因此,我们结合Fastdfs与ShardingSphere的技术优势,提出一种分布式文件存储的方法,有效解决分布式场景下海量文件与文件元信息的存储、查询、删除等问题。
发明内容
基于以上单体应用文件存储的问题,本发明提供一种基于ShardingSphere与Fastdfs的分布式文件存储方法:本方法结合分库分表中间件ShardingSphere、数据库、文件存储服务以及中间应用服务,实现海量文件与数据下的一种分布式文件存储方法。
为了实现上述功能,本发明所采用的技术方法是:
一种基于ShardingSphere与Fastdfs的分布式文件存储方法,包括如下步骤:
步骤1、调用文件存储接口,将文件与文件元信息传输到中间服务层应用中,中间服务层应用对外与用户端连接,包括文件新增、删除、查询的接口,对内连接数据库与Fastdfs系统处理业务逻辑;
步骤2、中间服务层应用将文件上传Fastdfs集群,Fastdfs集群由N组节点组成, N的取值范围根据文件的增长量确定,N≥3,每组有两个Fastdfs节点,通过在集群中增加节点对集群进行扩容,Fastdfs集群会记录每个节点中的数据量,当有文件上传时,集群会根据Fastdfs内部的负载均衡算法,将文件存储到数据量较少的节点上,从而实现各组节点的负载均衡;
步骤3、如文件上传失败,中间服务层应用返回上传失败的提示信息;
步骤4、文件上传成功,Fastdfs集群将返回包含文件路径唯一的文件ID以及文件存储的所在的组;
步骤5、中间服务层生成自增的文件元信息id,该id为上传的文件数量,每上传一个文件数量会自增1,文件id被存储,当文件存储后中间服务层会将获取到文件元信息、文件id以及文件存储的组编号通过ShardingSphere的分库分表保存到Mysql数据库;
步骤6、将文件元信息和文件id返回存储接口调用方;文件元信息包含文件id、原文件名、文件类型、文件存储路径、Fastdfs组id、文件大小、文件上传时间。
通过数据库表检索文件元信息,然后通过文件id查询Fastdfs获取文件,并更新文件的查询记录。
根据查询条件查询数据库,获取文件id,然后根据文件id删除Fastdfs中保存的文件,若文件删除成功则删除数据库中文件元信息,并更新文件删除记录;否则数据库不做操作。
所述文件元信息为单独文件信息或文件夹内文件信息。
本发明提供一种基于ShardingSphere与Fastdfs的分布式文件存储方法,通过整合分库分表、数据库与fastdfs的组成形成分布式文件存储架构,并在此架构基础上开发文件服务API,提供存储、查询和删除等功能,存储功能主要使用Fastdfs集群实现海量文件的分布式存储,查询与删除功能主要通过ShardingSphere与Mysql集群中存储的海量文件元信息实现文件的查询与删除。本方法实现的分布式存储主要包含基于Fastdfs的文件数据存储集群,基于ShardingSphere中间件与Mysql的文件元信息存储的数据库集群,以及基于Nginx和应用服务的集群,从数据层和服务层均可实现分布式扩展与负载均衡。本方法的核心在于通过开发应用程序与开源组件的组合,为海量文件的的存储提供一套分布式解决方案。整体服务架构通过文件数据的分布式存储、文件元数据分布式存储以及服务的分布式部署,提升整体分布式文件服务在存储、查询和删除方面的性能。
附图说明
图1为本发明的框架示意图;
图2为现有技术示意图。
具体实施方式
结合上述图例,进一步说明本发明的详尽操作步骤和原理。
一种基于ShardingSphere与Fastdfs的分布式文件存储方法,包括如下步骤:
步骤1、调用文件存储接口,将文件与文件元信息传输到中间服务层应用中,中间服务层应用对外与用户端连接,包括文件新增、删除、查询的接口,对内连接数据库与Fastdfs系统处理业务逻辑;
步骤2、中间服务层应用将文件上传Fastdfs集群,Fastdfs集群由N组节点组成, N的取值范围根据文件的增长量确定,N≥3,每组有一主一备两个Fastdfs节点,通过在集群中增加节点对集群进行扩容,Fastdfs集群会记录每个节点中的数据量,当有文件上传时,集群会根据Fastdfs内部的负载均衡算法,将文件存储到数据量较少的节点上,从而实现各组节点的负载均衡;
步骤3、如文件上传失败,中间服务层应用返回上传失败的提示信息;
步骤4、文件上传成功,Fastdfs集群将返回包含文件路径唯一的文件ID以及文件存储的所在的组;
步骤5、中间服务层生成自增的文件元信息id,该id为上传的文件数量,每上传一个文件数量会自增1,文件id被存储,当文件存储后中间服务层会将获取到文件元信息、文件id以及文件存储的组编号通过ShardingSphere的分库分表保存到Mysql数据库;
步骤6、将文件元信息和文件id返回存储接口调用方;文件元信息包含文件id、原文件名、文件类型、文件存储路径、Fastdfs组id、文件大小、文件上传时间。
通过数据库表检索文件元信息,然后通过文件id查询Fastdfs获取文件,并更新文件的查询记录。
根据查询条件查询数据库,获取文件id,然后根据文件id删除Fastdfs中保存的文件,若文件删除成功则删除数据库中文件元信息,并更新文件删除记录;否则数据库不做操作。
所述文件元信息为单独文件信息或文件夹内文件信息。文件存储主要包含2部分内容:一是文件元数据,即文件描述信息,主要包括文件名、文件类型、文件大小、文件存储路径、文件id等,文件元数据主要存储在关系型数据库中,如Mysql;二是文件,文件主要存储在服务器的某个文件夹中。
与现有技术架构图对比,传统的文件存储架构主要存在以下3个问题:
(1)文件元数据存储量瓶颈;传统的文件存储架构采用单数据库单表存储文件元数据,当数据量达到千万级别后,数据新增和查询都会变得非常慢。
(2)文件存储瓶颈;从图2我们可以看出,传统的文件存储方式,文件存储服务和文件在同一台服务器,文件存储量主要取决于该服务器的磁盘大小,这种架构使文件扩容变得非常困难。
(3)文件备份困难:传统文件存储架构文件通常采用人工定期备份的方式,这种方式不但麻烦而且容易造成文件丢失
针对以上问题,本方法采用ShardingSphere与Fastdfs对整体架构进行优化,提升文件的存储能力,本方法主要存在如下优点:
(1)扩展文件元数据存储能力:ShardingSphere结合关系型数据库mysql,可将文件元数据拆分到不同的数据库的表中,从而实现N张表存储文件元数据,提升存储能力。
(2)分布式存储文件;使用Fastdfs搭建多个存储节点group_1到group_n,基于fastdfs的负载均衡能力会将文件均匀分布到N个节点,在文件扩容时只需将新服务器节点加入fastdfs集群即可,使扩容变得非常简单。
(3)文件自动备份;如图1所示的fastdfs集群中,同一组节点之间可以互相备份,在搭建fastdfs节点时只需将两个节点修改为同一组,就可实现两个节点文件的实时备份。
图1中所示,包含以下步骤:
步骤1:调用文件存储接口,将文件与文件元信息传输到中间服务层应用中,中间服务层应用为本发明自主研发的服务,作用是对外为使用方提供文件新增、删除、查询的接口,对内连接数据库与Fastdfs并处理相关业务逻辑;
步骤2:中间服务层应用将文件上传Fastdfs集群,Fastdfs集群由N组节点组成, N的取值范围根据使用方文件的增长量确定,每组有一主一备两个Fastdfs节点,上传到同一组中的文件,当关闭该组的主节点,文件任可以获取成功,则说明主、备节点生效,例如由10组节点组成的集群,单个节点1TB的存储量,每个文件的平均大小为10Mb,每组节点可存储文件的大概为10万个,因此10个节点的文件的存储范围大概为100万,当存储的文件数量接近100万时,可以通过在集群中增加节点对集群进行扩容。Fastdfs集群会记录每个节点中的数据量,当有文件上传时,集群会根据Fastdfs内部的负载均衡算法,优先将文件存储到数据量较少的节点上,从而实现各组节点的负载均衡;
步骤3:如文件上传失败,中间服务层应用返回上传失败的提示信息,提示码为500;
步骤4:文件上传成功,提示码为200,Fastdfs集群将返回包含文件路径唯一的文件id以及文件存储的所在的组;步骤3和4提示码为本领域常规提示示意,根据实际情况定义命名即可;
步骤5:中间服务层生成自增的文件元信息id,该id为上传的文件数量,每上传一个文件数量会自增1,文件id会被存储在file_info表,具体表设计如下:
当文件存储后中间服务层会将获取到文件元信息、文件id以及文件存储的组编号通过ShardingSphere的分库分表策略保存到Mysql数据库对应的表中,表样式如上,根据不同数据库可适应性变化,例如数据库dbs1的table1表,具体的分库分表策略如下:
假设使用3个数据库dbs1,dbs2,dbs3存储文件元数据,每个库中有4张表组成table1,table2,table3,table4,这样共计12张表存储文件元数据;我们使用文件存放的组编号除以3取余来分配文件源信息存放的数据库,若余数为0则将文件存放在数据库dbs1中,若余数为1或者2,则将文件存放到数据库dbs2或dbs3中;当文件元数据存放的数据库分配后,根据文件id,文件id为正整数,除以4取余,余数的可能范围为0~3,对应存储的表为table1~table4,具体示例如下:
通过上面的分库分表策略,可以将原本存放在1张表中的数据分配到12张表中,减轻单表的存储压力。
步骤6:将文件元信息和文件id返回存储接口调用方;
在上述文件存储的步骤中,文件元信息包含文件id、原文件名、文件类型(即文件后缀,例如:doc、png等)、文件存储路径、Fastdfs组id、文件大小、文件上传时间等。
Claims (4)
1.一种基于ShardingSphere与Fastdfs的分布式文件存储方法,其特征在于包括如下步骤:
步骤1、调用文件存储接口,将文件与文件元信息传输到中间服务层应用中,中间服务层应用对外与用户端连接,包括文件新增、删除、查询的接口,对内连接数据库与Fastdfs系统处理业务逻辑;
步骤2、中间服务层应用将文件上传Fastdfs集群,Fastdfs集群由N组节点组成, N的取值范围根据文件的增长量确定,N≥3,每组有两个Fastdfs节点,通过在集群中增加节点对集群进行扩容,Fastdfs集群会记录每个节点中的数据量,当有文件上传时,集群会根据Fastdfs内部的负载均衡算法,将文件存储到数据量较少的节点上,从而实现各组节点的负载均衡;
步骤3、如文件上传失败,中间服务层应用返回上传失败的提示信息;
步骤4、文件上传成功,Fastdfs集群将返回包含文件路径唯一的文件ID以及文件存储的所在的组;
步骤5、中间服务层生成自增的文件元信息id,该id为上传的文件数量,每上传一个文件数量会自增1,文件id被存储,当文件存储后中间服务层会将获取到文件元信息、文件id以及文件存储的组编号通过ShardingSphere的分库分表保存到Mysql数据库;
步骤6、将文件元信息和文件id返回存储接口调用方;文件元信息包含文件id、原文件名、文件类型、文件存储路径、Fastdfs组id、文件大小、文件上传时间。
2.根据权利要求1所述一种基于ShardingSphere与Fastdfs的分布式文件存储方法,其特征在于,通过数据库表检索文件元信息,然后通过文件id查询Fastdfs获取文件,并更新文件的查询记录。
3.根据权利要求2所述一种基于ShardingSphere与Fastdfs的分布式文件存储方法,其特征在于,根据查询条件查询数据库,获取文件id,然后根据文件id删除Fastdfs中保存的文件,若文件删除成功则删除数据库中文件元信息,并更新文件删除记录;否则数据库不做操作。
4.根据权利要求1所述一种基于ShardingSphere与Fastdfs的分布式文件存储方法,其特征在于,所述文件元信息为单独文件信息或文件夹内文件信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210212779.8A CN114661687B (zh) | 2022-03-06 | 2022-03-06 | 一种基于ShardingSphere与Fastdfs的分布式文件存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210212779.8A CN114661687B (zh) | 2022-03-06 | 2022-03-06 | 一种基于ShardingSphere与Fastdfs的分布式文件存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114661687A CN114661687A (zh) | 2022-06-24 |
CN114661687B true CN114661687B (zh) | 2024-04-09 |
Family
ID=82027573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210212779.8A Active CN114661687B (zh) | 2022-03-06 | 2022-03-06 | 一种基于ShardingSphere与Fastdfs的分布式文件存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661687B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015741A (zh) * | 2020-10-19 | 2020-12-01 | 武汉物易云通网络科技有限公司 | 一种海量数据的分库分表存储方法与装置 |
CN112288423A (zh) * | 2020-10-30 | 2021-01-29 | 广州市汇聚支付电子科技有限公司 | 一种分布式框架的聚合支付方法和系统 |
CN113468154A (zh) * | 2021-06-25 | 2021-10-01 | 浙江数链科技有限公司 | 基于MySQL的大表减容方法、装置、电子装置和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9679041B2 (en) * | 2014-12-22 | 2017-06-13 | Franz, Inc. | Semantic indexing engine |
-
2022
- 2022-03-06 CN CN202210212779.8A patent/CN114661687B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015741A (zh) * | 2020-10-19 | 2020-12-01 | 武汉物易云通网络科技有限公司 | 一种海量数据的分库分表存储方法与装置 |
CN112288423A (zh) * | 2020-10-30 | 2021-01-29 | 广州市汇聚支付电子科技有限公司 | 一种分布式框架的聚合支付方法和系统 |
CN113468154A (zh) * | 2021-06-25 | 2021-10-01 | 浙江数链科技有限公司 | 基于MySQL的大表减容方法、装置、电子装置和存储介质 |
Non-Patent Citations (1)
Title |
---|
云存储中小文件元数据管理研究与优化;林媛;;电脑知识与技术;20160726(第16期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114661687A (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9967298B2 (en) | Appending to files via server-side chunking and manifest manipulation | |
CN109800222B (zh) | 一种HBase二级索引自适应优化方法和系统 | |
US11934356B2 (en) | Synchronization of metadata in a distributed storage system | |
US7447839B2 (en) | System for a distributed column chunk data store | |
US9183213B2 (en) | Indirection objects in a cloud storage system | |
US8214388B2 (en) | System and method for adding a storage server in a distributed column chunk data store | |
US7464247B2 (en) | System and method for updating data in a distributed column chunk data store | |
US7805416B1 (en) | File system query and method of use | |
US7457935B2 (en) | Method for a distributed column chunk data store | |
US7783615B1 (en) | Apparatus and method for building a file system index | |
US7548928B1 (en) | Data compression of large scale data stored in sparse tables | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
CN109669916B (zh) | 一种基于cmsp和kudu的分布式对象存储架构和平台 | |
CN114661687B (zh) | 一种基于ShardingSphere与Fastdfs的分布式文件存储方法 | |
CN111143366B (zh) | 一种针对海量大对象数据的高效能存储方法 | |
US11436108B1 (en) | File system agnostic content retrieval from backups using disk extents | |
CN117131023B (zh) | 数据表处理方法、装置、计算机设备和可读存储介质 | |
US20230376461A1 (en) | Supporting multiple fingerprint formats for data file segment | |
CN117215477A (zh) | 数据对象存储方法、装置、计算机设备和存储介质 | |
CN116561358A (zh) | 一种基于hbase的3D场景数据文件统一存储与检索方法 | |
CN117421279A (zh) | 一种针对分布式海量文件系统下快速搜索文件的方法 | |
CN117950589A (zh) | 数据存储方法、装置、设备和计算机可读存储介质 | |
CN117493277A (zh) | 一种冷文件查找方法、装置、电子设备及存储介质 | |
CN113672683A (zh) | 基于Spark SQL的分布式数据库元数据同步装置及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |