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。

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

二、实战案例项目截图

关于FastDFS与ASP.NET Core WebApi相结合的详细的代码已经最后一章节提供给大家进行下载了。

1、项目解决方案结构图

 

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

2、FastDFS.xml配置文件

 

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

3、 文件上传(支持批量文件上传)

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

4、下载文件

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

5、显示文件(如果是文件类型为:图片和PDF文件的话,则可以直接以流的方式在浏览器中显示。)

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

三、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

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

四、FastDFS分布式文件系统原理

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

ASP.NET Core WebApi分布式文件系统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

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

五、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 WebApi分布式文件系统FastDFS实战演练

六、ASP.Net Core解除文件上传大小限制

1、如果是部署在IIS上,则需要解决IIS服务器文件上传大小限制。

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

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中修改如下:

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

Startup.cs文件修改如下:

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

 

ASP.NET Core WebApi分布式文件系统FastDFS实战演练

上一篇:视频RTSPServer组件EasyRTSPServer-win测试视频无法拉取到流在VLC播放如何修复?


下一篇:C#生成二维码,返回Base64字符