FastDFS在项目中的应用
生活随笔
收集整理的這篇文章主要介紹了
FastDFS在项目中的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分析上傳步驟:1) 指定圖片絕對地址 2) 指定圖片服務器地址;使用 Client.conf 配置文件 3) 加載圖片服務器,連接圖片服務器 4) 創建圖片服務器 tracker 客戶端 5) 從客戶端獲取 tracker 連接 6) 創建 storage 客戶端,存儲圖片FastDFS概述分布式文件系統上傳文件特點: 1) 不再把文件上傳項目,把上傳文件和項目進行解耦 2) 上傳文件上傳分布式文件系統FastDFS簡介FastDFS 是用 c 語言編寫的一款開源的分布式文件系統。FastDFS 為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等
指標,使用FastDFS 很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。FastDFS架構FastDFS 架構包括 Tracker server 和 Storage server。客戶端請求 Tracker server 進行文件上傳、
下載,通過 Tracker server 調度最終由 Storage server 完成文件上傳和下載。 Tracker server 作用是負載均衡和調度,通過 Tracker server 在文件上傳時可以根據一些策略
找到 Storage server 提供文件上傳服務。可以將 tracker 稱為追蹤服務器或調度服務器。 Storage server 作用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務器上,Storage server
沒有實現自己的文件系統而是利用操作系統 的文件系統來管理文件。可以將 storage稱為存儲服務器。
Tracker 集群FastDFS 集群中的 Tracker server 可以有多臺,Tracker server 之間是相互平等關系同時提供
服務,Tracker server 不存在單點故障。客戶端請求 Tracker server 采用輪詢方式,如果請求的 tracker 無法提供服務則換另一個 tracker。Storage 集群Storage 集群采用了分組存儲方式。storage 集群由一個或多個組構成,集群存儲總容量為集群中所有組的
存儲容量之和。一個組由一臺或多臺存儲服務器組成,組內的 Storage server 之間是平等關系,不同組的 Storage
server 之間不會相互通信,同組內的 Storage server之間會相互連接進行文件同步,從而保證同組內
每個 storage 上的文件完全一致的。一個組的存儲容量為該組內存儲服務器容量最小的那個,由此可見組內存儲服務器的軟硬件配置最好是一致的。一個分組的存儲服務器訪問壓力較大時,可以在該組增加存儲服務器來擴充服務能力(縱向擴容)。當系統容量
不足時,可以增加組來擴充存儲容量(橫向擴容)。 Storage 狀態收集Storage server 會連接集群中所有的 Tracker server,定時向他們報告自己的狀態,包括磁盤剩余空間、
文件同步狀況、文件上傳下載次數等統計信息。文件上傳流程客戶端上傳文件后存儲服務器將文件 ID 返回給客戶端,此文件 ID 用于以后訪問該文件的索引信息。
文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。
組名:文件上傳后所在的 storage 組名稱,在文件上傳成功后有 storage 服務器返回,
需 要客戶端自行保存。 - 虛擬磁盤路徑:storage 配置的虛擬路徑,與磁盤選項 store_path*對應。如果配置
了store_path0 則是 M00,如果配置了 store_path1 則是 M01- 數據兩級目錄:storage 服務器在每個虛擬磁盤路徑下創建的兩級目錄,用于存儲數據文件。- 文件名:與文件上傳時不同。是由存儲服務器根據特定信息生成,文件名包含:源存儲服務器 IP 地址、
文件創建時間戳、文件大小、隨機數和文件拓展名等信息。 安裝FastDFS安裝 fastDFS 之前需要依賴環境: FastDFS 使用 c 語言開發,需要使用 gcc 編譯,需要安裝 gcc。 需要安裝 fastdfs 依賴類庫:libevent使用 Java 客戶端上傳圖片,上傳圖片到 fastDFS 圖片服務器上。1)需要 Client.conf 配置文件:tracker_server=192.168.66.66:221222)配置上傳視圖解析器<!--配置文件上傳解析器--><bean
id="multipartResolver" class="org.springframework.web.multipart.commons
.CommonMultipartResolver"><property name="maxUploadSize" value="10240000" /></bean>3) 需要上傳文件坐標<!-- 文件上傳組件 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons-fileupload.version}</version></dependency><dependency><groupId>fastdfs_client</groupId><artifactId>fastdfs_client</artifactId><version>1.25</version></dependency>上傳圖片,是把圖片上傳到 fastDFS 圖片服務器,和 dao,Service 沒有關系,直接使用 Controller
層就可以。@Controllerpublic class UploadController {@Value("${IMAGE_SERVER_URL}")private String IMAGE_SERVER_URL;@RequestMapping("/pic/upload")public @ResponseBody PicResult uploadPic(MultipartFile uploadFile){try {//獲取文件名稱String filename = uploadFile.getOriginalFilename();//獲取文件擴展名String extName = filename.substring(filename.lastIndexOf(".")+1);//創建圖片服務器上傳工具類FastDFSClient fClient = newFastDFSClient("classpath:client.conf");String url = fClient.uploadFile(uploadFile.getBytes(), extName);//組合url圖片服務器完整路徑url = IMAGE_SERVER_URL+url;//創建一個PicResult對象,設置返回值結果PicResult pic = new PicResult();pic.setError(0);pic.setUrl(url);return pic;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();//上傳圖片失敗//創建一個PicResult對象,設置返回值結果PicResult pic = new PicResult();pic.setError(1);pic.setMessage("上傳失敗");return pic;}}}FastDFS 簡介FastDFS 是一個開源的高性能分布式文件系統(DFS)。主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。主要解決了海量數據存儲問題,特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的
在線服務。FastDFS 系統有三個角色:跟蹤服務器(Tracker Server)、存儲服務器(Storage Server)和
客戶端(Client)。Tracker Server:跟蹤服務器,主要做調度工作,起到均衡的作用;負責管理所有的 storage server
和 group,每個 storage 在啟動后會連接 Tracker,告知自己所屬 group 等信息,并保持周期性心跳。Storage Server:存儲服務器,主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多臺 storage server,數據互為備份。Client:客戶端,上傳下載數據的服務器,也就是我們自己的項目所部署在的服務器。
?
總結
以上是生活随笔為你收集整理的FastDFS在项目中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于Dubbo一些自己的答案
- 下一篇: SpringBoot 路径访问控制