FastDFS 基本介紹 和 Linux相關命令

FastDFS知識點學習

這個軟件是用來幹嘛的?

這個軟件可以用來管理 成千上萬臺linux服務器上面的文件。說白了就是管理很多臺機器上面的文件。

能幹這種事情的常見軟件有:

FastDFS 和 HDFS 。

1)一般的互聯網項目存放文件都是用的FastDFS ,中小公司使用這個文件管理軟件。

2)HDFS 在大數據的領域用的比較多。

傳統存儲文件方式 和 分佈式存儲文件方式

什麼是fastDFS?它是用來做什麼的?

(1)FastDFS其實就是一種數據庫,存放圖片,音樂的數據庫。

(2)我們的mysql數據庫只能存放信息,也就是數據庫表中的一行行數據。

(3)我們的FastDFS是來存放 小型的圖片、音樂等等資源的。

(4)像一個動態網站,網站中的 商品圖片或者背景音樂的資源都是通過fastDFS來獲取的。

(5)我們通過fastDFS軟件 將 我們的 文件 存放進 磁盤 中,爲什麼我們要使用faseDFS呢?

  我們存放文件的地方是磁盤,但是實際開發中 我們存放文件的磁盤是做集羣的,也就是存放文件的地方 是 【磁盤集羣】,我們通過fastDFS軟件向磁盤集羣中分發存放。

FastDFS的優點:

FastDFS解決了大數據文件存儲(這裏經常有人說成大數據,我本人是不贊同的)和讀寫分離,備份容錯,負載均衡,動態擴容等問題

FastDFS適合那些網站使用?

適合存儲4KB~500MB之間的小文件,如圖片網站、短視頻網站、文檔、app下載站等。

傳統的存儲方式:

所有的tomcat服務器都去同一個磁盤中讀取和存放文件,那樣就會有很多的IO操作,這樣對磁盤的壓力會很大,磁盤壓力大了就有可能損毀,損毀了數據就丟失了。

分佈式存儲方式:

所有的tomcat服務器通過 fastDFS軟件 來進行存儲文件,fastDFS將文件存放在【磁盤集羣】的不同的磁盤當中,這樣子就減少了磁盤的壓力。而且 每一個 磁盤的後面 都有一個屬於 自己的 冗餘備份,就算磁盤損壞了,我們還是有備份的。

在我們的 p2p項目中的 應用 :

我們在 p2p 項目中,沒完成一次交易 就會 生成一份合同,每一份合同 都是一張 pdf文件,所以成千上萬的合同PDF文件我們就可以使用 fastDFS軟件 將這些pdf文件存放進磁盤集羣當中 。

FastDFS中的【客戶端】:

我們java程序就是一個【客戶端】,我們向項目中導入一個jar包,然後我們 通過 調用jar包中接口中的方法 來 使用 fastDFS軟件 幫我們存放 文件。

FastDFS中的【服務端】:

服務端分爲兩部分【tracker】 和 【storage】。

【tracker】 : 主要的任務就是調度。就和註冊中心zookeeper差不多,因爲tracker中存放着 磁盤中存放的文件的信息 。 當我們通過fastDFS存放文件的時候,這個文件的信息會保存在 tracker中,然後我們的tracker會將文件保存在storage中。當我們讀取某個文件的時候,tracker會根據這個文件信息調取對應的文件。

【storage】 : 保存 文件 和 文件的屬性。

Linux 中 fastDFS的一些 可執行命令:

因爲我們的 /usr/bin 這個命令 是配置在PATH環境變量下的,所以我們的/usr/bin這個命令可以在任意的目錄下直接使用。

在linux中安裝完fastDFS之後,所有的可執行文件存放在:/usr/bin 目錄下。所有的配置文件存放在 /etc/fdfs目錄下。

Tracker.Conf配置文件中:

這個base_path就是用來存放 數據和log日誌的目錄 。

Storage.conf配置文件中:

這個base_path主要是用來存放log日誌的。

這個路徑是真正存放文件的路徑,爲什麼path後面有個0,因爲這個store_path可以指定多個:

               如果我們要指定多個存放文件的路徑,那麼我們也要修改一下store_path的數量:

我們寫了兩個store_path:store_path0,store_path1

那麼我們的 store_path_count=2 需要修改成2 。

我們storage 服務是註冊在 那個tracker上面的,因爲tarcker是負責調度的,所以tracker裏面有 storage 中的文件信息 。

 

啓動 fastDFS的時候需要啓動兩個配置文件:

tracker和storage這兩個服務的配置文件,而且是有固定的啓動順序的。需要先啓動tracker ,然後再啓動 storage ,不能顛倒的。

當我們運行storage配置文件的時候,fastDFS會爲我們創建 256*256的雙層目錄結構,然後我們存放的文件就會存放在: /02/22 這樣的目錄下。

文件存放的位置:

這樣子就構成了 256*256的路徑數量。從而讓每個文件夾下面的文件不會太多,減輕每個文件夾因爲io操作所造成的壓力。

關閉fastDFS:

我們關閉 fast DFS的時候 需要關閉兩個 配置文件,因爲我們開啓fastDFS的時候開啓了兩個配置文件,分別爲:tracher.conf 和 storage.conf ,所以我們關閉的時候需要管理這兩個配置文件。

關閉的命令是: 開啓的命令 stop,也就是:

                                    fdfs_tracherd  /etc/fdfs/tracher.conf stop和 fdfs_storaged /etc/fdfs/storage.conf stop      在線上環境中:我們不建議使用kill -9進行關閉。因爲可能會造成不同服務器中文件不同步的現象,造成的原因如下:

線上環境中我們的服務器是分組的,可能分n個組,每個組中有 n個服務器,然後 我們通過一個服務器存放文件之後,會按照組的方式進行文件同步,同步到同一個組中所有的服務器中。如果存放的文件過大,同步的過程需要很長的時間,這時候使用kill -9 將fastDFS關閉了,那麼組中有的服務器還沒有同步完 就關閉了中斷了,這樣就會造成 有服務器中有這個文件,有的服務器中沒有這個文件,這樣就造成了服務器中文件的不同步。

重啓fastDFS:

如果你只需要重啓tracker 或者 storage 中的一個配置文件,那麼就只需要restart一個配置文件,不需要像 開啓fastdfs和關閉fastdfs一樣操作兩個配置文件。

命令爲:

fdfs_trackerd  /etc/fdfs/tracker.conf  restart

fdfs_storaged  /etc/fdfs/storage.conf  restart

小知識點:

           元數據 就是 用來描述數據信息的 數據。

關於linux中根目錄(家目錄)的 問題:

普通用戶的家目錄(根目錄):/home/用戶名

Root用戶的家目錄:/root                     /root 這個目錄你是找不到的。

這時候所在的目錄就是root目錄下。

 

測試 fastDFS 上傳文件:

所使用的命令: fdfs_test /etc/fdfs/client.conf upload /root/aa.txt

aa.txt 文件存放的位置爲:紅線。

(1)因爲我們就一個組,這個組裏面256*256的目錄結構。

(2)因爲就一個組,所以默認組名爲 group1 。

(3)後面的 fiilname 是 文件存放的路徑。

(4)/M00 這個是 虛擬的目錄,這個目錄我們是看不到的,因爲這個目錄是fastDFS來進行管理的。

(5)/00/00  這個是 兩層包名 。 第一層有有256個包,每個包中又包含256個包,第一次包的包名爲00,第二層包的包名爲00,所以組成的路徑爲/00/00 。

(6) /wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt  這個文件就是 aa.txt文件, 因爲 我們 fastDFS要確保 我們保存的 文件名不能重複,是唯一的。

下圖是文件的請求地址:

上圖是 文件上傳測試後 測試結果:

(1)3 是我們通過fastDFS存放的文件,因爲fastDFS爲了確保存放的文件在 組和目錄中是唯一的不重複的,所以對我們的文件名進行了處理。

(2)1 2 4 是我們通過fastDFS 存放3文件時 同時產生的文件。

(3)

              1)wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt 是主文件 。

              2)wKjyglxkBuSAbT8iAAAAAc3XBpM982_big.txt 是從文件。

              3)wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt-m 文件 是 wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt文件 屬性文件,意思就是:wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt-m中存放的是wKjyglxkBuSAbT8iAAAAAc3XBpM982.txt文件的各項屬性的信息,比如文件的類型,高度和寬度等等屬性的信息。

             4)wKjyglxkBuSAbT8iAAAAAc3XBpM982_big.txt-m 文件是 wKjyglxkBuSAbT8iAAAAAc3XBpM982_big.txt文件的屬性文件。

(4)但是我們只想 向 磁盤中存放 文件3,文件124我們是不想存儲的,所以這樣就很佔用空間,所以我們在實際的開發中 只會存放 文件3 。

我們通過 fastDFS 存放 需要存放的文件之後,我們可以通過 日誌打印給我們的 file url 來訪問我們剛剛儲存的 文件。但是這個url地址,是不能通過瀏覽器進行訪問的,我們在地址欄中輸入這段url地址之後 是無法訪問 剛剛存放的文件的。 因爲我們的 fastDFS是不能接受通過瀏覽器 發送過來的請求的,所以就更不能將文件中的內容顯示在我們的瀏覽器中。

如果想通過了瀏覽器來訪問 存放進去的 文件,解決方法如下:

分佈式系統中的單點故障問題:

分佈式系統有哪些優點:

文件同步 : 就是 文件備份,將文件同步(備份)到另一個磁盤中去。

我們寫了一套程序去訪問fastdfs,這個程序就是客戶端。

(1)Tracker 會將 一些storage的一些信息存放在內存中,存放的信息是:有多少個節點,節點的ip地址和端口等等,因爲是存放在內存中,所以tracker的效率很高。

(2)Storage 就是用來存放 文件 和 文件的屬性的文件,將這兩個文件存放在 服務器磁盤中。

因爲  tracker處於 java程序和storage之間,所以我們只需要跟 tracker打交道就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章