fastdfs結合nginx做一個網盤

網盤

系統整體架構


該架構和直接調用fastdfs java api的優點:

由於直接請求tracker獲取可用的ip後,即斷開了與tracker的連接,然後直接由nginx代理服務器將上傳請求直接轉發給storage節點,由storage節點上的nginx服務器接收上傳的文件,然後調用上傳指定storage節點的上傳文件命令完成上傳到fastdfs文件系統裏。這種方式降低了系統的連接壓力,可接收更多的上傳請求。上傳的源數據無需跨節點傳輸,整體提高了系統效率和降低了網絡壓力。

nginx代理服務器

nginx代理服務器需要動態獲取轉發請求的目的storage的地址,nginx自帶的負載均衡策略此時就無法滿足需求,因爲目的storage的地址是調用tracker的命令查詢到空閒的storage的ip,該處做了一個輪詢,即因爲每次請求獲取的是ip集合,但是每次只需要一個,所以可以輪詢ip集合。
爲了解決動態轉發到特定的目的storage,該處用了lua,詳見上一篇文章。

storage節點上的nginx

每個storage都有nginx,作用是作爲http服務器,主要是爲了接收請求上傳的文件。

主要的動作是:利用nginx-upload-module模塊作爲上傳或者用lua-resty-upload提供的上傳功能來接收文件,然後用lua腳本將上傳上來的文件調用fastdfs的文件上傳功能,上傳到本地的storage上,即完成上傳,也可以用lua腳本記錄文件的一些信息,如文件的大小,文件名稱,等信息,還有就是上傳到fastdfs返回的文件地址,可以將這些信息返回給reponse或者保存到數據庫中,方便查看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章