FastDFS分佈式文件系統

本文轉載自https://mp.weixin.qq.com/s/7wcEMzVy7gbiOBmIksG0WA

國內知名的系統級開源軟件鳳毛菱角,FastDFS就是其中的一個,其用戶包括我們所熟知的支付寶、京東商城、迅雷、58同城、趕集網等等,它是個人所開發的軟件,作者是餘慶。

這篇文章包括接下來兩篇文章僅是學習FastDFS的一些設計思想,學習它怎麼實現高效、簡潔、輕量級的一個系統的。

我們已經進入互聯網時代,互聯網給我們的生活帶來便捷的同時,也給我們帶來了諸多挑戰。


對於海量文件的存儲,一個機器不夠,那麼就用多臺機器來存儲。


如果一個文件只存儲一份,那麼如果存儲這個文件的機器壞掉了,文件自然就丟失了,解決辦法就是將文件進行備份,相信大多數人都有備份重要文件的習慣。FastDFS也是如此,爲了防止單點的失敗,肯定是需要冗餘備份的。

FastDFS把應用服務器分爲若干個組,每一組裏面可以有多臺機器(一般採用3臺),每一臺機器叫做存儲服務器(storage server)。同一組內之間的數據是互爲備份的,也就是說用戶把文件傳到任一服務器,都會在同組內其它兩個服務器進行備份,因此一個組的存儲空間大小是由該組內存儲空間最小的那臺機器是一樣的(和木桶原理一樣)。爲了不造成存儲空間的浪費,同一個組內的三臺機器最好都一樣。


每個存儲服務器(storage server)的存儲就夠又是怎樣的呢?展開來看,它可以分爲多個目錄,每個目錄以M開頭,用00、01、02......來劃分,一般無需劃分這麼多目錄,只用一個目錄就可以了。

在每個根目錄下面又劃分了兩級目錄。如圖所示,在/data/fastdfs0下又劃分出兩級目錄,每一級有256個目錄,這樣算下來總共就有65535個目錄了。存儲文件時,就是通過兩次哈希來確定放在哪一個目錄下面。


那麼問題就來了,有這麼多組,到底該選擇哪個組的服務器進行存儲呢?或者說,訪問的時候到底訪問哪一個組呢?

FastDFS提供的解決思路是引入一個跟蹤服務器(tracker server),它用於記錄每一個組內的存儲服務器信息,存儲信息是每個storage主動回報給tracker,有了這些信息之後,tracker就可以做調度工作了,看看誰的存儲空間大,就把文件放過去。


FastDFS的特點:

  • 組與組之間是相互獨立的

  • 同一個組內的storage server之間需要相互備份

    • 文件存放到一個storage之後,需要備份到別的服務器

  • tracker之間是不交互的

    • 每個storgae server都需要向所有的tracker去主動報告信息

    • tracker與tracker之間是不知道彼此的存在的

            


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