1. 程式人生 > >FastDFS 簡單瞭解一下

FastDFS 簡單瞭解一下

別問我在哪裡

也許我早已不是我自己,別問我在哪裡,我一直在這裡。

突然不知道說些什麼了...

初識 FastDFS

記得那是我剛畢業後進入的第一家公司,一個技術小白進入到當時的專案組後,在開發中上傳使用者頭像呼叫了一個據說是叫 FastDFS 的東西,我並不懂是什麼,只知道是一個檔案伺服器,據說還是在 Linux 上部署的,還是多臺伺服器什麼的,還是切片儲存、說京東用的就是,反正很厲害的樣子,我其實並接觸不到這玩意兒,我的任務也只是呼叫大神們封裝好的介面就行了,這可能是我第一次和 FastDFS 的第一次親密接觸。

後來不知道為什麼,當時的檔案伺服器老是出問題,每次圖片下載不下來我就低聲下氣的去找運維說:檔案又下載不了了,老大讓你重啟一下 Storage 伺服器

。這時候我也並不知道 Storage伺服器 是什麼鬼,反正就好像專案一出問題都是程式猿的錯,真特麼的!!!

FastDFS is an open source high performance distributed file system (DFS). It's major functions include: file storing, file syncing and file accessing, and design for high capacity and load balance.

翻譯:FastDFS 是一個開源的高效能分散式檔案系統(DFS)。 它的主要功能包括:檔案儲存,檔案同步和檔案訪問,以及高容量和負載平衡。

這是餘慶老師在他的 Github 上介紹關於 FastDFS 這個開源專案的描述。說的很明白了,這是一個高效能的輕量級開源分散式檔案系統,解決了我們日常專案中眾所周知的檔案儲存效能問題,幾乎適合市面上所有專案使用,據說好多家你知道的大公司也在使用,甚至你使用的各大網盤公司也在使用(儘管最近多家網盤公司關閉了),反正就是特別好用。感謝餘慶老師對開源世界的無私奉獻,這是餘老師的 GitHub 地址: https://github.com/happyfish100/fastdfs

試著簡單瞭解一下

大家都在用,肯定錯不了。正好最近公司想搭建自己的檔案伺服器,好像據說是原來用的七牛產生了鉅額流量費用,領導安排瞭解一下這個開源分散式檔案系統。瞭解一個東西,我們就要進入她的內部,人也一樣。那我們首先來看一下他的內部是怎麼工作或者說設計的吧!

FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、儲存伺服器(Storage Server)和
客戶端(Client)

  • Tracker Server: 跟蹤伺服器,主要做排程工作,起到均衡的作用;負責管理所有的 storage server
    和 group,每個 storage 在啟動後會連線 Tracker,告知自己所屬 group 等資訊,並保持週期性心跳。
  • Storage Server:儲存伺服器,主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多臺 storage server,資料互為備份。
  • Client:客戶端,上傳下載資料的伺服器,也就是我們自己的專案所部署在的伺服器。

這裡免不了放一張餘慶老師介紹 FastDFS 的 PPT 中的一張架構圖,清晰的說明了上述職責及關係:

FastDFS 架構圖.png

上述架構優點:1.高可靠性:無單點故障 2.高吞吐性:只要 Group 足夠多,資料流量將足夠分散。

那麼怎麼上傳下載以及同步檔案這麼操作呢?我在這就不詳細說全部流程了,大概上傳流程就是客戶端傳送上傳請求到Tracker Server伺服器,接著Tracker Server伺服器分配groupStorage Server,當然這是有一定規則的,選擇好Storage Server後再根據一定規則選擇儲存在這個伺服器會生成一個file_id,這個file_id 包含欄位包括:storage server ip、檔案建立時間、檔案大小、檔案 CRC32 校驗碼和隨機數;每個儲存目錄下有兩個 256 * 256 個子目錄,後邊你會知道一個Storage Server儲存目錄下有好多個資料夾的,storage 會按檔案file_id進行兩次 hash ,路由到其中一個子目錄,然後將檔案儲存到該子目錄下,最後生成檔案路徑:group 名稱、虛擬磁碟路徑、資料兩級目錄、file_id和檔案字尾就是一個完整的檔案地址。
可能我理解的也不是很徹底,下載、同步操作我不寫了,這裡有一篇文章 分散式檔案系統FastDFS設計原理 講解的很詳細,我就不班門弄斧了,大家可以點選去看看。

下面我要做什麼?

接下來我可能會安裝配置一下 FastDFS 服務,試著搭建一個分散式檔案伺服器,我試著把整體的詳細步驟都記錄下來,對以後專案中使用做技術儲備或者說讓自己以後翻起來也簡單一些。可能有時候說不定就幫助到你了...

我的搭建環境是:

  • 作業系統: CentOS 7 或 CentOS 6.8
  • FastDFS: fastdfs-5.05 、 fastdfs-nginx-module-v1.16 、 libfastcommon-v1.0.7
  • Nginx : nginx-1.10.1

應該都是截至目前最新版本了,可能和你網上能搜到的 4.05 、4.06 甚至 2.? 的版本步驟不一樣,我大概會分下面兩篇具體的文章來記錄這個過程:

我保證這也行是目前 FastDFS 最新最穩定最簡單坑最少的一個配置安裝部署教程了。期間我也會把我踩的坑都放出來,我保證大家照著做就幾乎不會有坑。其實我在寫這篇文章的時候已經踩了好多坑了,哈哈...

總結一下

FastDFS 是一個由 C 語言實現的開源輕量級分散式檔案系統,作者餘慶(happyfish100),支援 Linux、FreeBSD、AID 等 Unix 系統,解決了大資料儲存和讀寫負載均衡等問題,適合儲存 4KB~500MB 之間的小檔案,如圖片網站、短視訊網站、文件、app 下載站等,UC、京東、支付寶、迅雷、酷狗等都有使用。

相關推薦

FastDFS 簡單瞭解一下

別問我在哪裡 也許我早已不是我自己,別問我在哪裡,我一直在這裡。 突然不知道說些什麼了... 初識 FastDFS 記得那是我剛畢業後進入的第一家公司,一個技術小白進入到當時的專案組後,在開發中上傳使用者頭像呼叫了一個據說是叫 FastDFS 的東西,我並不懂是什麼,只知道是一個檔案伺服器,據說還是在 Lin

簡單瞭解一下函式模板

泛型程式設計的基礎就是模板的使用。 在編寫函式模板的時候有許多需要注意的點。 我們使用一個栗子輕鬆搞定。 using namespace std; template<class T, typename U> inline U func(T & t, U&

簡單瞭解一下oracle中的顯示遊標和儲存過程

遊標   遊標主要分兩類動態和靜態遊標,靜態遊標是編譯時知道明確的select語句的遊標,靜態遊標分類兩種,顯示遊標和靜態遊標,這裡只說顯示遊標 顯示遊標 declare name emp.ename%type; sal emp.sal%type; --宣

新人上手TensorFlow 之 簡單瞭解一下Batch Normalization (BN)

author: 張俊林 轉載自:http://blog.csdn.net/malefactor/article/details/51476961 Batch Normalization作為最近一年來DL的重要成果,已經廣泛被證明其有效性和重要性。目前幾乎已經成為DL的標配了,任何有志於

ORACLE 中merge....into的用法簡單瞭解一下

MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and […]…) WHEN MATCHED THEN [UPDATE sql] WHEN NO

簡單介紹一下sap fico入門憑證,有興趣的可以簡單瞭解一下哦!

G/L Account:輸入科目程式碼   Company code :所屬的公司程式碼   Account Group:會計科目組,是對總賬科目的分類,比如資產類、負債類、損益類科目等,通常每一類的編碼都有一個規則,因為我們可以通過編碼範圍來判斷此科目屬於哪個類別。

簡單瞭解一下K8S,並搭建自己的叢集

距離上次更新已經有一個月了,主要是最近工作上的變動有點頻繁,現在才暫時穩定下來。這篇部落格的本意是帶大家從零開始搭建K8S叢集的。但是我後面一想,如果是我看了這篇文章,會收穫什麼?就是跟著步驟一步一走嗎?是我的話我會選擇拒絕,所以我加了關於K8S的簡單介紹,每一步的步驟都添加了解釋。由於篇幅和時間原因,我只介

04.簡單瞭解一下Redis企業級資料備份方案

### 一、企業級的持久化的配置策略 * * * (1)每隔1分鐘去檢查如果超過10000個可以變更,則生成一個快照。RDB最多丟1分鐘的資料。 ``` save 60 10000 ``` (2)AOF一定要開啟,fsync,everysec ```properties #就是當前AOF大小膨脹到超過上次

跟我一起學Redis之Redis事務簡單瞭解一下

### 前言 關係資料庫中的事務,小夥伴們應該是不陌生了,不管是在開發還是在面試過程中,總有兩個問題逃不掉: - 說說事務的特性; - 事務隔離級別是怎麼一回事? 事務處理不好,資料就可能不準確,最終就會導致業務出問題;藉此機會簡單回顧一下事務特性及其隔離級別,就當是複習了; #### 事務特性(AC

JAVA集合類瞭解嗎?簡單介紹一下

JAVA集合類主要分為兩大體系:Collection和Map體系。其中Collection又派生出List、Set、Queue等三大體系。 其中,List主要用來存放一些有序、可重複的元素;主要實現類有:ArrayList、LinkedList、Vector和S

簡單工廠 工廠方法 抽象工廠 瞭解一下

簡單工廠:工廠可以建立同一系列的產品,產品的介面一致,但工廠就要根據引數進行判斷到底建立哪種產品(簡單工廠沒有子類,一般來說直接在工廠裡面通過列舉來建立例項)。 比如:麵館有洋蔥面,牛肉麵,雞蛋麵...你要吃哪種面,就要根據你的口味決定。 工廠方法:可以有多種工廠,工廠有共同的介面,一個工廠只能

簡單解釋一下正則化

等高線 稀疏 相交 出現 貝葉斯 最優 他還 lac 分享 解釋之前,先說明這樣做的目的:如果一個模型我們只打算對現有數據用一次就不再用了,那麽正則化沒必要了,因為我們沒打算在將來他還有用,正則化的目的是為了讓模型的生命更長久,把它扔到現實的數據海洋中活得好,活得久。

前端日記 -----簡單記錄一下自己瀏覽的前端文章

columns mutable -s column ont end ren tle 進行 2017年6月 Immutable.js:   如何用React+Redux+ImmutableJS進行SPA開發:http://yunlaiwu.github.io/blog/201

簡單一下幾家雲服務器使用感受

雲服務器使用感受百度雲的可用區太少了,百度按月還挺便宜的,買的時候直接就有彈性IP,彈性ip收費,RDS 貴,技術支持免費。阿裏按需價格還可以,感覺還好,RDS 比百度便宜一些,阿裏有個坑如果用彈性IP不能設帶寬,不然掛不上彈性ip,也不能解綁自動分配的公網ip,彈性IP收費,RDS 便宜些,基礎技術支持免費

FastDFS簡單入門小demo

cti gen class serve HA AR jar包 pre bigdata 圖片上傳 需要引入 FastDFS 相關的jar包,但是這個jar沒有在中央倉庫,所以還得需要找到這個jar手動安裝到自己的本地倉庫才能使用。 需要一個配置文件 fdfs_clie

簡單一下 servlet的生命周期?

col led bsp doget span gb2 運行 服務器 init 1.servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由 javax.servlet.Servlet接口的 init,service和 des

簡單記錄一下日常會用到的遊標

判斷語句 size into 由於 spa 一行 from 子句 需要 什麽是遊標 遊標是處理結果集的一種機制 ,而結果集就是select查詢返回的所有行數據的集合。 遊標的用處 1.定位到結果集中的某一行。 2.對當前位置的數據進行

將字符串轉成整數的函數給我看一下嗎,簡單一下代碼基本功。要求:不要調用parseInt等轉換函數

main 一段 ack substr date tin || parse pre 為了提高面試流程效率,方便用java寫一段將字符串轉成整數的函數給我看一下嗎,簡單看一下代碼基本功。 要求:不要調用parseInt等轉換函數。按位讀取字符串裏的字符進行處理將字符串轉化為整數

COW奶牛!Copy On Write機制瞭解一下

前言 只有光頭才能變強 在讀《Redis設計與實現》關於雜湊表擴容的時候,發現這麼一段話: 執行BGSAVE命令或者BGREWRITEAOF命令的過程中,Redis需要建立當前伺服器程序的子程序,而大多數作業系統都採用寫時複製(copy-on-write)來優化子程序的使用效率,所以在子

KAFKA的簡單瞭解--大資料紀錄片第九記

  Kafka是一個分散式釋出-訂閱訊息系統和一個強大的佇列,可以處理大量資料,使得一個訊息可以從一個端點傳遞到另一個端點。Kafka非常適合離線和線上訊息消費。Kafka將資料儲存在磁碟上,並在叢集內複製以防止資料丟失。Kafka構建在zookeeper的同步服務之上,它和storm和spark很好地整合,