利用Docker來搭建分布式文件系統FastDfs


  對於文件存儲來說,一般情況下簡單的處理就是在Django配置文件中配置存儲目錄,按照規則對文件進行上傳或者下載。

    實際上,當文件較少的時候,Django是可以應付的過來的。但當文件以海量形式出現的時候,Django就並不是那么好用了,於是Fast DFS應運而出。

        FastDFS是一個開源的分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。可以說它就是為互聯網而生,為大數據而生的。

    FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。 存儲節點存儲文件,完成文件管理的所有功能:存儲、同步和提供存取接口,FastDFS同時對文件的meta data進行管理。跟蹤器和存儲節點都可以由多台服務器構成。跟蹤器和存儲節點中的服務器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或減少。

    

    說人話,為啥要用FastDfs:

    1 解決海量存儲,同時存儲容量擴展方便。
    2 解決文件內容重復,如果用戶上傳的文件重復(文件指紋一樣),那么系統只有存儲一份數據,值得一提的是,這項技術目前被廣泛應用在網盤中。
    3 結合Nginx提高網站讀取圖片的效率。

    如果我們從頭搭建fastdfs服務器那么就太low了,網上有大把的docker鏡像供你選擇,所以又到了利用docker優越性的時候了,首先下載fastdfs鏡像

docker pull delron/fastdfs

區區四百多兆就承載了nginx和fastdfs服務

然后使用docker鏡像構建tracker容器(跟蹤服務器,起到調度的作用),這里tracker服務將會自動映射到宿主機上

 

docker run -d --network=host --name tracker -v /www/tracker:/var/fdfs delron/fastdfs tracker

使用docker鏡像構建storage容器(存儲服務器,提供容量和備份服務),這里storage容器需要依賴tracker服務,傳入你的tracker服務的ip地址,端口默認是22122,ip地址也就是你宿主機的ip

 

docker run -d --network=host --name storage -e TRACKER_SERVER=192.168.99.100:22122 -v /www/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

此時,命令行輸入 docker ps 就可以看到兩套服務都已經啟動

這時,進入正在后台運行的storage容器

docker exec -it storage /bin/bash

隨便下載一張圖片,這個不用擔心,因為在容器中如果不提交倉庫的話,該圖片是不會保存的

 

wget https://v3u.cn/v3u/Public/images/logo.png

將該圖片通過命令上傳到分布式系統中

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf logo.png

這時該圖片已上傳至文件系統,並在執行該語句后返回圖片存儲的網絡地址

 

 最后通過瀏覽器訪問以下存儲在Fastdfs的圖片,這張圖片是通過nginx代理的靜態資源,默認nginx監聽8888端口,所以需要加上端口號,如果是在阿里雲上部署,則需要暴露外部端口8888

可以看到,沒有任何問題,同理,如果是視頻資源,同樣可以上傳到fastdfs中,搞定收工。

 

 

 

轉載自:https://v3u.cn/a_id_78


免責聲明!

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



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