15年的時候,那時候雲存儲還遠遠沒有如今使用的這麼普遍,歸根結底就是成本和安全問題,記得那時候我待的公司是作建站開發的,前期用了自建mongodb的GridFS
來存文件,nginx
後來改成fastDFS,今天咱們來聊聊FastDFS.git
特性以下:github
FastDFS 服務端有兩個核心概念:跟蹤器(tracker)和存儲節點(storage)。spring
前者起負載均衡和調度做用,後者則是提供容量存儲和備份。mongodb
這兩個概念理解清楚了有助於如下的服務端搭建。docker
Docker安裝和入門之類的就很少作講解了,之前也寫過很多,沒看過的讀者能夠從歷史頁面搜搜溫習如下。shell
本機以Mac環境開啓Docker服務進行安裝,其餘環境都是基於Docker環境的大同小異。api
docker search fastdfs
docker pull delron/fastdfs
我這邊已經下載了,因此執行更新操做瀏覽器
若是是沒下載鏡像的坐等下載完就好了~安全
下載完成之後查看鏡像:
docker images
docker run -d --name tracker -p 22122:22122 -v ~/docker_work/tracker:/var/fdfs delron/fastdfs tracker
這樣就啓動起來了,容器默認端口是22122。
啓動後在掛載宿主目錄下生成了這兩個目錄
在啓動存儲服務器以前,咱們須要查詢跟蹤服務器的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一下端口看服務起來沒有:
服務器搭建好以後,咱們進入容器使用命令來驗證下是否能夠上傳。
首先往掛載目錄放一張圖片
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後綴,咱們貼到瀏覽器就能夠訪問了。
至此圖片服務器就搞定了,咱們接下來開始集成程序來玩它了。
這裏的封裝依賴找的一個開源的輪子
地址: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