1. 程式人生 > >分散式檔案伺服器FastDFS

分散式檔案伺服器FastDFS

什麼是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

  1. 建立Maven工程fastDFSdemo
  2. 新增配置檔案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);
		}