1、先介紹下什麼是FastDFS
FastDFS 是用 c 語言編寫的一款開源的分佈式文件系統。包括 Tracker server 和 Storage server,FastDFS 爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。服務器
Tracker server 做用是負載均衡和調度,經過 Tracker server 在文件上傳時能夠根據一些策略找到 Storage server 提供文件上傳服務。能夠將 tracker 稱爲追蹤服務器或調度服務器。併發
Storage server 做用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務器上,Storageserver 沒有實現本身的文件系統而是利用操做系統的文件系統來管理文件負載均衡
優勢:分佈式
創建各類集羣,防止高併發,適應分佈式的存儲要求高併發
存儲端理論上能夠無限擴容post
存儲端不會丟失數據,容災性強。性能
缺點:this
spa
客戶端上傳文件後存儲服務器將文件ID
組名:文件上傳後所在的 storage 組名稱,在文件上傳成功後由 storage 服務器返回,須要客戶端自行保存。
虛擬磁盤路徑:storage 配置的虛擬路徑,與磁盤選項 store_path*對應。若是配置了store_path0 則是 M00,若是配置了 store_path1 則是 M01,以此類推。
數據兩級目錄:storage 服務器在每一個虛擬磁盤路徑下建立的兩級目錄,用於存儲數據文件。
文件名:與文件上傳時不一樣。是由存儲服務器根據特定信息生成,文件名包含:源存儲
2.1 FastDFS的一個小demo
public class demo1 { public static void main(String[] args) throws IOException, MyException { // 一、加載配置文件,配置文件中的內容就是 tracker 服務的地址。 ClientGlobal.init("fdfs_client.conf"); // 二、建立一個 TrackerClient 對象。直接 new 一個。 TrackerClient trackerClient = new TrackerClient(); // 三、使用 TrackerClient 對象建立鏈接,得到一個 TrackerServer 對象 TrackerServer trackerServer = trackerClient.getConnection(); // 四、建立一個 StorageServer 的引用,值爲 null StorageServer storageServer = null; // 五、建立一個 StorageClient 對象,須要兩個參數 TrackerServer 對象、StorageServer 的引用 StorageClient storageClient = new StorageClient(trackerServer, storageServer); // 六、使用 StorageClient 對象上傳圖片,參數1爲文件,參數2爲文件後綴名。 //擴展名不帶「.」 String[] strings = storageClient.upload_file("C:\\Users\\Administrator\\Desktop\\2.jpg", "jpg",null); // 七、返回數組。包含組名和圖片的路徑。 for (String string : strings) { System.out.println(string); } } }
打印的String:group1/M00/00/01/wKjIgF3SRXWAHitEAAB1q5bIEwY138.jpg
所須要的fdfs_client.conf配置文件
# connect timeout in seconds # default value is 30s connect_timeout=30 # network timeout in seconds # default value is 30s network_timeout=60 # the base path to store log files base_path=/home/fastdfs # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address
# 分佈式文件服務器的ip,須要使用更改此處便可
tracker_server=192.168.200.128:22122 #standard log level as syslog, case insensitive, value list: ### emerg for emergency ### alert ### crit for critical ### error ### warn for warning ### notice ### info ### debug log_level=info # if use connection pool # default value is false # since V4.05 use_connection_pool = false # connections whose the idle time exceeds this time will be closed # unit: second # default value is 3600 # since V4.05 connection_pool_max_idle_time = 3600 # if load FastDFS parameters from tracker server # since V4.05 # default value is false load_fdfs_parameters_from_tracker=false # if use storage ID instead of IP address # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # default value is false # since V4.05 use_storage_id = false # specify storage ids filename, can use relative or absolute path # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # since V4.05 storage_ids_filename = storage_ids.conf #HTTP settings http.tracker_server_port=80 #use "#include" directive to include HTTP other settiongs ##include http.conf
3、頁面展現效果
此時說明咱們上傳的照片已經上傳到分佈式文件服務器上,且可以訪問到咱們上傳的照片
注:
分佈式文件服務器自行配置,步驟過於麻煩。