分散式檔案伺服器FastDFS
阿新 • • 發佈:2019-02-13
什麼是FastDFS
FastDFS 是用 c 語言編寫的一款開源的分散式檔案系統。FastDFS 為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。
FastDFS 架構包括 Tracker server 和 Storage server。客戶端請求 Tracker server 進行檔案上傳、下載,通過 Tracker server 排程最終由 Storage server 完成檔案上傳和下載。
Tracker server 作用是負載均衡和排程,通過 Tracker server 在檔案上傳時可以根據一些策略找到 Storage server 提供檔案上傳服務。可以將 tracker 稱為追蹤伺服器或排程伺服器。
Storage server 作用是檔案儲存,客戶端上傳的檔案最終儲存在 Storage 伺服器上,Storageserver 沒有實現自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以將storage稱為儲存伺服器。
服務端兩個角色:
Tracker:管理叢集,tracker 也可以實現叢集。每個 tracker 節點地位平等。收集 Storage 叢集的狀態。
Storage:實際儲存檔案 Storage 分為多個組,每個組之間儲存的檔案是不同的。每個組內部可以有多個成員,組成員內部儲存的內容是一樣的,組成員的地位是一致的,沒有主從的概念。
檔案上傳流程
檔案下載流程
最簡單的 FastDFS 架構
FastDFS入門小Demo
- 建立Maven工程fastDFSdemo
- 新增配置檔案fdfs_client.conf ,將其中的伺服器地址設定為192.168.25.133
tracker_server=192.168.25.133:22122
(3)建立java類,main方法程式碼如下:
// 1、載入配置檔案,配置檔案中的內容就是 tracker 服務的地址。 ClientGlobal.init("D:/maven_work/fastDFS-demo/src/fdfs_client.conf"); // 2、建立一個 TrackerClient 物件。直接 new 一個。 TrackerClient trackerClient = new TrackerClient(); // 3、使用 TrackerClient 物件建立連線,獲得一個 TrackerServer 物件。 TrackerServer trackerServer = trackerClient.getConnection(); // 4、建立一個 StorageServer 的引用,值為 null StorageServer storageServer = null; // 5、建立一個 StorageClient 物件,需要兩個引數 TrackerServer 物件、StorageServer 的引用 StorageClient storageClient = new StorageClient(trackerServer, storageServer); // 6、使用 StorageClient 物件上傳圖片。 //副檔名不帶“.” String[] strings = storageClient.upload_file("D:/pic/benchi.jpg", "jpg", null); // 7、返回陣列。包含組名和圖片的路徑。 for (String string : strings) { System.out.println(string); }