FastDFS安裝(mac)|文件存儲方案
FastDFS安裝(mac)|文件存儲方案
在我們進行相關項目開發時,肯定會遇到需要進行文件保存的需求。那麼這些文件(如圖片)保存到哪裡呢?
- 第一種方案是直接保存到本地磁碟中,即通過瀏覽器發一個post的請求,相關程式將文件保存到本地,這樣完全可以實現。但缺點是文件和項目程式碼都會保存到同一台電腦上,即這台電腦(伺服器)既要向客戶端響應項目程式碼又要響應文件。
- 如果像分開就可以使用文件伺服器,在這裡就是FastDFS,即項目程式碼在一台電腦,文件在另一台電腦(也就是伺服器)。從而實現分開
1 FastDFS介紹
1.1 FastDFS架構
包括Client、Tracker server和Storage 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 安裝包
- libfastcommon://github.com/happyfish100/libfastcommon
- FastDFS://github.com/happyfish100/fastdfs
注意:上兩個鏈接都是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