實戰:docker搭建FastDFS文件系統並集成SpringBoot

實戰:docker搭建FastDFS文件系統並集成SpringBoot

前言

15年的時候,那時候雲存儲還遠遠沒有如今使用的這麼普遍,歸根結底就是成本和安全問題,記得那時候我待的公司是作建站開發的,前期用了自建mongodb的GridFS來存文件,nginx

後來改成fastDFS,今天咱們來聊聊FastDFS.git

簡介

fastDFS 是以C語言開發的一項開源輕量級分佈式文件系統,他對文件進行管理,主要功能有:文件存儲,文件同步,文件訪問(文件上傳/下載),特別適合以文件爲載體的在線服務,如圖片網站,視頻網站等。

特性以下:github

  • 適合類型:4KB~500MB
  • 文件分佈:小文件合併存儲不分片處理
  • 備份機制:組內冗餘備份
  • 通信協議接口:Api 和 HTTP
  • 開發語言: C語言
  • 用戶和社羣:主要是國內用戶羣體

核心概念

FastDFS 服務端有兩個核心概念:跟蹤器(tracker)和存儲節點(storage)。spring

前者起負載均衡和調度做用,後者則是提供容量存儲和備份。mongodb

這兩個概念理解清楚了有助於如下的服務端搭建。docker

Docker搭建服務端

Docker安裝和入門之類的就很少作講解了,之前也寫過很多,沒看過的讀者能夠從歷史頁面搜搜溫習如下。shell

本機以Mac環境開啓Docker服務進行安裝,其餘環境都是基於Docker環境的大同小異。api

1.運行命令查找鏡像

docker search fastdfs

2.下載圖中所示鏡像

docker pull delron/fastdfs

我這邊已經下載了,因此執行更新操做瀏覽器

若是是沒下載鏡像的坐等下載完就好了~安全

下載完成之後查看鏡像:

docker images

image-20200728112438711

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

相關文章
相關標籤/搜索