首頁  >  文章  >  運維  >  fastdfs為什麼要結合nginx

fastdfs為什麼要結合nginx

(*-*)浩
(*-*)浩原創
2019-06-06 17:19:463911瀏覽

FastDFS是一個開源的分散式檔案系統,她對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案存取(檔案上傳、檔案下載)等,解決了大容量儲存和負載平衡的問題。特別適合以文件為載體的線上服務,如相簿網站、影片網站等等。

fastdfs為什麼要結合nginx

我們在使用FastDFS部署一個分散式檔案系統的時候,透過FastDFS的客戶端API來進行檔案的上傳、下載、刪除等操作。同時透過FastDFS的HTTP伺服器來提供HTTP服務。但FastDFS的HTTP服務較為簡單,無法提供負載平衡等高效能的服務,所以FastDFS的開發者-淘寶的架構師餘慶同學,為我們提供了Nginx上使用的FastDFS模組(也可以叫FastDFS的Nginx模組)。其使用非常簡單。

FastDFS透過Tracker伺服器,將檔案放在Storage伺服器儲存,但是同組之間的伺服器需要複製檔案,有延遲的問題.假設Tracker伺服器將檔案上傳到了192.168.1.80,文件ID已經回傳客戶端,這時,後台會將這個檔案複製到192.168.1.30,如果複製沒有完成,客戶端就用這個ID在192.168.1.30取檔案,肯定會出現錯誤。這個fastdfs-nginx-module可以重定向連接到來源伺服器取檔案,避免客戶端因複製延遲的問題,出現錯誤。

FastDFS服務端有兩個角色:追蹤器(tracker)和儲存節點(storage)。追蹤器主要做調度工作,在存取上起負載平衡的作用。

儲存 儲節點儲存文件,完成文件管理的所有功能:儲存、同步和提供存取接口,FastDFS同時對文件的meta data進行管理。所謂檔案的meta data就是檔案的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的key為width,value為1024。文件meta data是文件屬性列表,可以包含多個鍵值對。

FastDFS原理  

儲存節點採用了分組(group)的方式。儲存系統由一個或多個group組成,group與group之間的檔案是互相獨立的,所有group的檔案容量累積就是整個儲存系統中的檔案容量。一個group可以由一台或多台儲存伺服器組成,一個group下的儲存伺服器中的檔案都是相同的,group中的多台儲存伺服器起到了冗餘備份和負載平衡的作用(一個群組的儲存容量為該組內存儲伺服器容量最小的那個,不同組的Storage server之間不會相互通信,同組內的Storage server之間會相互連接進行文件同步)。

在group中增加伺服器時,同步現有的檔案由系統自動完成,同步完成後,系統會自動將新增伺服器切換到線上提供服務。

當儲存空間不足或即將耗盡時,可以動態新增group。只需要增加一台或多台伺服器,並將它們配置為一個新的group,這樣就擴大了儲存系統的容量。

FastDFS只有兩個角色:Tracker server和Storage server。 Tracker server作為中心結點,其主要作用是負載平衡和調度。 Tracker server在記憶體中記錄分組和Storage server的狀態等信息,不記錄文件索引信息,佔用的內存量很少。另外,當客戶端(應用)和Storage server存取Tracker server時,Tracker server掃描記憶體中的分組和Storage server訊息,然後給予應答。由此可以看出Tracker server非常輕量化,不會成為系統瓶頸。

FastDFS中的Storage server在其他檔案系統中通常稱為Trunk server或Data server。 Storage server直接利用OS的檔案系統儲存檔案。 FastDFS不會對檔案進行分塊存儲,客戶端上傳的檔案和Storage server上的檔案一一對應(FastDFS中的檔案識別分為兩個部分:群組名稱和檔案名,二者缺一不可)

更多Nginx相關技術文章,請造訪Nginx使用教學欄位學習! 

以上是fastdfs為什麼要結合nginx的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn