分布式文件系統 - 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、京東、支付寶、迅雷、酷狗等都有使用。

再次感謝余慶老師對開源世界的無私奉獻,這是余老師的 GitHub 地址: https://github.com/happyfish100/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM