ASP.NET Core WebApi分布式文件系统FastDFS实战演练
一、分布式文件系统简介
1、分布式文件系统简介
分布式文件系统(DFS,Distributed File System)使用户更加容易访问和管理物理上跨网络分布的文件。DFS为文件系统提供了单个访问点和一个逻辑树结构,通过DFS,用户在访问文件时不需要知道它们的实际物理位置,即分布在多个服务器上的文件在用户面前就如同在网络的同一个位置。
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
通俗来讲:传统文件系统管理的文件就存储在本机。
分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。
无论是上传或者访问文件,都需要通过管理中心来访问。
2、分布式文件又可以分为两种
一是通用分布式文件系统
将windows或linux多台机器进分布式架构便是一个通用分布式文件系统了,因为通用,使用起来很方便,但性能就差点。应用端可以mount(挂载)使用。典型代表:lustre、MooseFS.
另外一个便是专用分布式文件系统了,基本都是基于GFS的思想,,文件上传后不能修改。不能mount(挂载)使用,需要使用专有API对文件进行访问,也可称作分布式文件存储服务。典型代表:GFS、FastDFS、HDFS、TFS。
二、实战案例项目截图
关于FastDFS与ASP.NET Core WebApi相结合的详细的代码已经最后一章节提供给大家进行下载了。
1、项目解决方案结构图
2、FastDFS.xml配置文件
3、 文件上传(支持批量文件上传)
4、下载文件
5、显示文件(如果是文件类型为:图片和PDF文件的话,则可以直接以流的方式在浏览器中显示。)
三、FastDFS分布式文件系统介绍
1、什么是FastDFS
• FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。
• FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
• 单机中使用FastDFS搭建文件系统并上传下载的过程。
• FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。
2、FastDFS分布式文件系统特点
FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:
FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
• 文件存储
• 文件同步
• 文件访问(上传、下载)
• 存取负载均衡
• 在线扩容
适合有大容量存储需求的应用或系统。同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。
参考文章:分布式文件系统
https://www.jianshu.com/p/ec6af5bcad7a
四、FastDFS分布式文件系统原理
跟踪服务器(Tracker Server)、存储服务器(Storage Server)、客户端(Client)。
• Tracker Server: 跟踪服务器,主要做调度工作,启动均衡的作用;负责管理所有的storage server和group,每个storage在启动后会连接• Tracker,告知自己所属group信息,并保持周期性心跳。
• Storage Server:存储服务器,主要提供容量和备份服务;以group为单位,每个group可以有多台storage server,数据互为备份。
• Client: 客户端,上传下载数据的服务器,也就是我们项目部署所在的服务器。1.通过组名Tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
2.存储Storage服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。参考文章:
FastDFS分布式文件系统(一) - 简书
https://www.jianshu.com/p/0ad90cb8fa6f
五、FastDFS分布式文件在ASP.NET Core中的运用
1、Docker构建FastDFS分布式文件系统
一般实际工作中FastDFS都是由我们的运维DB工程师帮我们去搭建环境,但是在刚开始的学习过程中,可能需要我们自行去搭建环境哦,这里为了方便起见,阿笨强烈推荐大家采用Docker容器化的方式进行搭建环境。具体的环境搭建过程请自行研究和攻克哦。
参考文章:
docker 安装 FastDFS
https://www.cnblogs.com/provence666/p/10987156.html
2.、ASP.NET Core中使用分布式文件系统FastDFS进行文件存储和读取
源代码示例下载
扫码关注下方微信公众号,回复7zcf关键字获取源代码下载地址。
有问题微信公众号回复wx关键字,加阿笨的个人微信号。
六、ASP.Net Core解除文件上传大小限制
1、如果是部署在IIS上,则需要解决IIS服务器文件上传大小限制。
web.config文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\EIP.Core.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741822" /><!-- 1GB-->
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
2、如果是部署在Linux上,则需要解决Kestrel服务器文件上传大小限制。
Program.cs中修改如下:
Startup.cs文件修改如下:
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【腾讯课堂】:https://abennet.ke.qq.com
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET