FastDFS安裝(mac)|文件存儲方案

FastDFS安裝(mac)|文件存儲方案

在我們進行相關項目開發時,肯定會遇到需要進行文件保存的需求。那麼這些文件(如圖片)保存到哪裡呢?

  • 第一種方案是直接保存到本地磁碟中,即通過瀏覽器發一個post的請求,相關程式將文件保存到本地,這樣完全可以實現。但缺點是文件和項目程式碼都會保存到同一台電腦上,即這台電腦(伺服器)既要向客戶端響應項目程式碼又要響應文件。
  • 如果像分開就可以使用文件伺服器,在這裡就是FastDFS,即項目程式碼在一台電腦,文件在另一台電腦(也就是伺服器)。從而實現分開

1 FastDFS介紹

1.1 FastDFS架構

包括ClientTracker serverStorage server

  • 整體過程:Client也就是我們說的客戶端,其請求Tracker進行文件上傳、下載,Tracker再調度Storage完成文件上傳和下載。
  • Client: 客戶端,業務請求的發起方,通過專有介面,使用TCP/IP協議與Tracker或Storage進行數據交互。FastDFS提供了upload、download、delete等介面供客戶端使用。
  • Tracker server:跟蹤伺服器,主要做調度工作,起負載均衡的作用。在記憶體中記錄集群中所有存儲組和存儲伺服器的狀態資訊,是客戶端和數據伺服器交互的樞紐。
  • Storage server:存儲伺服器(存儲節點或數據伺服器),文件和文件屬性都保存到存儲伺服器上。Storage server會定時的向Tracker server發消息,如果一段時間沒發,Tracker server就會將其去除。直接利用OS的文件系統調用管理文件。
    • Storage群中的橫向可以擴容,縱向可以備份。

1.2 工作原理實例介紹

以上傳文件為例:

  • Client拿到需要上傳的文件,這時Client會向Tracker server發一則消息即「當下需要保存文件」;
  • Tracker server在接到消息後,就會從其列表中尋找可用的Storage server,並將可用的Storage server IP返回給Client
  • Client在就到相關IP後,就向這個指定IP的那台伺服器發生要上傳的文件;
  • Storage server 收到文件會將文件保存,並為其起名,後將該名稱返回給Client
  • Client收到這個名字後只需將該名稱保存下來,供以後依據該名稱到Storage server找尋該文件。

1.3 FastDFS上傳和下載流程

在這裡插入圖片描述
在這裡插入圖片描述

1.4 FastDFS文件索引

在這裡插入圖片描述

  • FastDFS上傳和下載流程 都涉及到文件索引(file_id)

    • 文件索引(file_id)是客戶端上傳文件後存儲伺服器返回給客戶端,是以後訪問該文件的索引資訊。
  • 文件索引(file_id)資訊包括:組名虛擬磁碟路徑數據兩級目錄文件名等資訊。

    • 組名:文件上傳後所在的 Storage 組名稱。
    • 虛擬磁碟路徑:Storage 配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。
    • 數據兩級目錄:Storage 伺服器在每個虛擬磁碟路徑下創建的兩級目錄,用於存儲數據文件。
    • 文件名:由存儲伺服器根據特定資訊生成,文件名包含:源存儲伺服器IP地址、文件創建時間戳、文件大小、隨機數和文件拓展名等資訊。

在這裡插入圖片描述

2 FastDFS安裝(mac)

筆者先嘗試了使用docker安裝FastDFS,但在創建storage容器時無法映射出data中的多個目錄,為此也是嘗試了很多方法且網上多數是在ubuntu系統進行的安裝,前後花費了五六個小時,如果您有相關有效的解決的方法歡迎私信。這個方法我得出的結論是:

–network=host 參數只有在linux下生效, mac windows 都不能成功,所以導致安裝fastdfs是失敗的

因此筆者使用了如下的安裝方法,親測有效:

2.1 安裝包

注意:上兩個鏈接都是github上成熟的項目,進入頁面後點擊「Clone or download」 —> 「Download ZIP」

2.2 安裝libfastcommon

cd libfastcommon壓縮包解壓後的文件地址,一定要自行修改如(/Users/..../Desktop/libfastcommon-master)
./make.sh
sudo ./make.sh install

2.3 安裝FastDFS

cd FastDFS壓縮包解壓後的文件地址,一定要自行修改如(/Users/..../Desktop/fastdfs-master)
./make.sh
sudo ./make.sh install

2.4 相關文件配置

(1)配置跟蹤伺服器tracker

  • 拷貝tracker配置文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  • 先手動創建您想要存放目錄,即收到創建文件夾(名稱自由,但盡量不變方便後期查找): /您方便的目錄/fdfs/tracker。筆者是在創建了如下目錄路徑是:

    /var/fdfs/tracke
    
  • 編輯/etc/fdfs/tracker.conf配置文件

    sudo vim /etc/fdfs/tracker.conf
    
    • 修改其中base_path的部分如下:
    base_path=/您方便的目錄/fastdfs/tracker
    

(2)配置存儲伺服器storage

  • 拷貝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  • 先手動創建您想要存放目錄,即收到創建文件夾(名稱自由,與上tracker保持在一個上級目錄下): /您方便的目錄/fdfs/storage。筆者是在創建了如下目錄:
/var/fdfs/storage
  • 編輯/etc/fdfs/storage.conf 配置文件
sudo vim /etc/fdfs/storage.conf
  • 修改其中的base_path, store_path0, tracker_server
base_path=/您方便的目錄/fdfs/storage
store_path0=/您方便的目錄/fdfs/storage
tracker_server=Mac的IP地址:22122

(3)啟動tracker和storage

sudo fdfs_trackerd /etc/fdfs/tracker.conf start
sudo fdfs_storaged /etc/fdfs/storage.conf start

(4)查看是否啟動成功

ps aux|grep fdfs

如出現下面情況,則表明成功:

root             13211  98.0  0.0  4298076    800   ??  R     2:58下午   0:02.19 fdfs_storaged /etc/fdfs/storage.conf start
你的mac名        13256   0.0  0.0  4268192    464 s000  R+    2:58下午   0:00.00 grep fdfs
root             13140   0.0  0.0  4297384    796   ??  S     2:58下午   0:00.00 fdfs_trackerd /etc/fdfs/tracker.conf start

2.5 client.conf配置文件修改

  • 拷貝client配置文件
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  • 修改client配置文件
sudo vim /etc/fdfs/client.conf
  • 修改其中的內容:
base_path=/您方便的目錄/fdfs/tracker
tracker_server=您Mac的IP地址:22122