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 安裝包(如果要與Nginx連接,需要用下面百度雲的四件套)
鏈接:https://pan.baidu.com/s/1mQNAb7djkAtX3NyqqURT6g
密碼:lpoh
延伸閱讀:
- libfastcommon:https://github.com/happyfish100/libfastcommon
- FastDFS:https://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/tracker
-
編輯/etc/fdfs/tracker.conf配置文件
sudo vim /etc/fdfs/tracker.conf
- 修改其中base_path的部分如下:
base_path=/您方便的目錄/fdfs/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