ASP.NET Core WebApi分布式文件系統(tǒng)FastDFS實(shí)戰(zhàn)演練
一、分布式文件系統(tǒng)簡(jiǎn)介
1、分布式文件系統(tǒng)簡(jiǎn)介
分布式文件系統(tǒng)(DFS,Distributed File System)使用戶更加容易訪問(wèn)和管理物理上跨網(wǎng)絡(luò)分布的文件。DFS為文件系統(tǒng)提供了單個(gè)訪問(wèn)點(diǎn)和一個(gè)邏輯樹結(jié)構(gòu),通過(guò)DFS,用戶在訪問(wèn)文件時(shí)不需要知道它們的實(shí)際物理位置,即分布在多個(gè)服務(wù)器上的文件在用戶面前就如同在網(wǎng)絡(luò)的同一個(gè)位置。
分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。
通俗來(lái)講:傳統(tǒng)文件系統(tǒng)管理的文件就存儲(chǔ)在本機(jī)。
分布式文件系統(tǒng)管理的文件存儲(chǔ)在很多機(jī)器,這些機(jī)器通過(guò)網(wǎng)絡(luò)連接,要被統(tǒng)一管理。
無(wú)論是上傳或者訪問(wèn)文件,都需要通過(guò)管理中心來(lái)訪問(wèn)。
2、分布式文件又可以分為兩種
一是通用分布式文件系統(tǒng)
將windows或linux多臺(tái)機(jī)器進(jìn)分布式架構(gòu)便是一個(gè)通用分布式文件系統(tǒng)了,因?yàn)橥ㄓ茫褂闷饋?lái)很方便,但性能就差點(diǎn)。應(yīng)用端可以mount(掛載)使用。典型代表:lustre、MooseFS.
另外一個(gè)便是專用分布式文件系統(tǒng)了,基本都是基于GFS的思想,,文件上傳后不能修改。不能mount(掛載)使用,需要使用專有API對(duì)文件進(jìn)行訪問(wèn),也可稱作分布式文件存儲(chǔ)服務(wù)。典型代表:GFS、FastDFS、HDFS、TFS。
二、實(shí)戰(zhàn)案例項(xiàng)目截圖
關(guān)于FastDFS與ASP.NET Core WebApi相結(jié)合的詳細(xì)的代碼已經(jīng)最后一章節(jié)提供給大家進(jìn)行下載了。
1、項(xiàng)目解決方案結(jié)構(gòu)圖

2、FastDFS.xml配置文件

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

4、下載文件

5、顯示文件(如果是文件類型為:圖片和PDF文件的話,則可以直接以流的方式在瀏覽器中顯示。)

三、FastDFS分布式文件系統(tǒng)介紹
1、什么是FastDFS
? FastDFS是一款類Google FS的開(kāi)源分布式文件系統(tǒng),它用純C語(yǔ)言實(shí)現(xiàn),支持Linux、FreeBSD、AIX等UNIX系統(tǒng)。
? FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
? 單機(jī)中使用FastDFS搭建文件系統(tǒng)并上傳下載的過(guò)程。
? FastDFS 是一個(gè)開(kāi)源的高性能分布式文件系統(tǒng)(DFS)。它的主要功能包括:文件存儲(chǔ),文件同步和文件訪問(wèn),以及高容量和負(fù)載平衡。
2、FastDFS分布式文件系統(tǒng)特點(diǎn)
FastDFS是由淘寶的余慶先生所開(kāi)發(fā)的一個(gè)輕量級(jí)、高性能的開(kāi)源分布式文件系統(tǒng)。用純C語(yǔ)言開(kāi)發(fā),功能豐富:
FastDFS 是一個(gè)開(kāi)源的高性能分布式文件系統(tǒng)(DFS)。它的主要功能包括:文件存儲(chǔ),文件同步和文件訪問(wèn),以及高容量和負(fù)載平衡。主要解決了海量數(shù)據(jù)存儲(chǔ)問(wèn)題,特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務(wù)。
? 文件存儲(chǔ)
? 文件同步
? 文件訪問(wèn)(上傳、下載)
? 存取負(fù)載均衡
? 在線擴(kuò)容
適合有大容量存儲(chǔ)需求的應(yīng)用或系統(tǒng)。同類的分布式文件系統(tǒng)有谷歌的GFS、HDFS(Hadoop)、TFS(淘寶)等。
參考文章:分布式文件系統(tǒng)
https://www.jianshu.com/p/ec6af5bcad7a
四、FastDFS分布式文件系統(tǒng)原理



跟蹤服務(wù)器(Tracker Server)、存儲(chǔ)服務(wù)器(Storage Server)、客戶端(Client)。
? Tracker Server: 跟蹤服務(wù)器,主要做調(diào)度工作,啟動(dòng)均衡的作用;負(fù)責(zé)管理所有的storage server和group,每個(gè)storage在啟動(dòng)后會(huì)連接? Tracker,告知自己所屬group信息,并保持周期性心跳。
? Storage Server:存儲(chǔ)服務(wù)器,主要提供容量和備份服務(wù);以group為單位,每個(gè)group可以有多臺(tái)storage server,數(shù)據(jù)互為備份。
? Client: 客戶端,上傳下載數(shù)據(jù)的服務(wù)器,也就是我們項(xiàng)目部署所在的服務(wù)器。1.通過(guò)組名Tracker能夠很快的定位到客戶端需要訪問(wèn)的存儲(chǔ)服務(wù)器組是group1,并選擇合適的存儲(chǔ)服務(wù)器提供客戶端訪問(wèn)。
2.存儲(chǔ)Storage服務(wù)器根據(jù)“文件存儲(chǔ)虛擬磁盤路徑”和“數(shù)據(jù)文件兩級(jí)目錄”可以很快定位到文件所在目錄,并根據(jù)文件名找到客戶端需要訪問(wèn)的文件。參考文章:
FastDFS分布式文件系統(tǒng)(一) - 簡(jiǎn)書
https://www.jianshu.com/p/0ad90cb8fa6f
五、FastDFS分布式文件在ASP.NET Core中的運(yùn)用
1、Docker構(gòu)建FastDFS分布式文件系統(tǒng)
一般實(shí)際工作中FastDFS都是由我們的運(yùn)維DB工程師幫我們?nèi)ゴ罱ōh(huán)境,但是在剛開(kāi)始的學(xué)習(xí)過(guò)程中,可能需要我們自行去搭建環(huán)境哦,這里為了方便起見(jiàn),阿笨強(qiáng)烈推薦大家采用Docker容器化的方式進(jìn)行搭建環(huán)境。具體的環(huán)境搭建過(guò)程請(qǐng)自行研究和攻克哦。
參考文章:
docker 安裝 FastDFS
https://www.cnblogs.com/provence666/p/10987156.html
詳細(xì)關(guān)于FastDFS的按照文章看下面文章就足夠了。
FastDFS 分布式文件系統(tǒng)的安裝與使用,看這一篇就夠了!!!
2.、ASP.NET Core中使用分布式文件系統(tǒng)FastDFS進(jìn)行文件存儲(chǔ)和讀取
源代碼示例下載
非常感謝對(duì)【跟著阿笨一起玩NET】的支持,有問(wèn)題微信公眾號(hào)回復(fù)wx關(guān)鍵字,加阿笨的個(gè)人微信號(hào)。
《ASP.NET Core WebApi分布式文件系統(tǒng)FastDFS實(shí)戰(zhàn)演練》源碼下載(注意下載地址區(qū)分大小寫哦)
鏈接:https://pan.baidu.com/s/15t7kWqq7UZVsR3AV-Wv_tA 提
取碼:7zcf
六、ASP.Net Core解除文件上傳大小限制
1、如果是部署在IIS上,則需要解決IIS服務(wù)器文件上傳大小限制。

web.config文件內(nèi)容如下:
<?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服務(wù)器文件上傳大小限制。
Program.cs中修改如下:

Startup.cs文件修改如下:


騰訊課堂
網(wǎng)易云課堂
不信的話,掃一掃
