實戰:docker搭建FastDFS檔案系統并集成SpringBoot
前言
15年的時候,那時候云存盤還遠遠沒有現在使用的這么廣泛,歸根結底就是成本和安全問題,記得那時候我待的公司是做建站開發的,前期用了自建mongodb的GridFS來存檔案,
后來改為fastDFS,今天我們來聊聊FastDFS.
簡介
fastDFS 是以C語言開發的一項開源輕量級分布式檔案系統,他對檔案進行管理,主要功能有:檔案存盤,檔案同步,檔案訪問(檔案上傳/下載),特別適合以檔案為載體的在線服務,如圖片網站,視頻網站等,
特性如下:
- 適合型別:4KB~500MB
- 檔案分布:小檔案合并存盤不分片處理
- 備份機制:組內冗余備份
- 通訊協議介面:Api 和 HTTP
- 開發語言: C語言
- 用戶和社群:主要是國內用戶群體
核心概念
FastDFS 服務端有兩個核心概念:跟蹤器(tracker)和存盤節點(storage),
前者起負載均衡和調度作用,后者則是提供容量存盤和備份,
這兩個概念理解清楚了有助于以下的服務端搭建,
Docker搭建服務端
Docker安裝和入門之類的就不多做講解了,以前也寫過不少,沒看過的讀者可以從歷史頁面搜搜溫習以下,
本機以Mac環境開啟Docker服務進行安裝,其他環境都是基于Docker環境的大同小異,
1.運行命令查找鏡像
docker search fastdfs

2.下載圖中所示鏡像
docker pull delron/fastdfs
我這邊已經下載了,所以執行更新操作

如果是沒下載鏡像的坐等下載完就行了~
下載完成以后查看鏡像:
docker images

3.啟動跟蹤器(tracker)容器服務
docker run -d --name tracker -p 22122:22122 -v ~/docker_work/tracker:/var/fdfs delron/fastdfs tracker

這樣就啟動起來了,容器默認埠是22122,
啟動后在掛載宿主目錄下生成了這兩個目錄

4.啟動存盤服務器
在啟動存盤服務器之前,我們需要查詢跟蹤服務器的ip,啟動容器的時候需要用到,
以下命令查看所有容器ip:
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)

172.17.0.2,拿個小本本記下來
當然,宿主機有映射也可以直接用宿主機的Ip 192.168.3.112
我這邊就直接用宿主機ip了,
docker run -d --name storage -p 8888:8888 -p 23000:23000 -e TRACKER_SERVER=192.168.3.112:22122 -v ~/docker_work/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
其中8888為該鏡像自帶Nginx對應的訪問埠,23000是storage服務埠,
如果大家需要修改對應的埠和配置,自行百度一下就好,這里就不多介紹了,
ping一下埠看服務起來沒有:

5.驗證圖片服務器的服務
服務器搭建好之后,我們進入容器使用命令來驗證下是否可以上傳,
首先往掛載目錄放一張圖片
cp Downloads/ewm.jpg ~/docker_work/storage
然后進入容器,首次進入發現是在nginx目錄下,切換到/var/fdfs
執行檔案上傳命令,相關命令如下:
docker exec -it storage bash
ls
cd /var/fdfs
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ewm.jp
相關截圖如下:

命令執行成功后會回傳檔案path后綴,我們貼到瀏覽器就可以訪問了,

至此圖片服務器就搞定了,我們接下來開始集成程式來玩它了,
6.創建SpringBoot程式并集成fastdfs依賴
這里的封裝依賴找的一個開源的輪子
地址:https://github.com/tobato/FastDFS_Client
pom檔案
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.1-RELEASE</version>
</dependency>
以下是專案集成目錄結構圖和PostMan測驗呼叫,就不一個個類貼來貼去了,代碼都在Github自取就行了,

Postman呼叫

訪問

總結
本文以mac環境為例,演示了如何搭建圖片服務器和測驗,并結合客戶端SpringBoot專案封裝和呼叫圖片服務器api,下次我們講講MongoDb的GridFS,看看到底誰更香呢?
本文Java集成源代碼:https://github.com/pengziliu/GitHub-code-practice
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/189250.html
標籤:其他
