久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Docker來搭建分布式文件系統(tǒng)FastDFS

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

      實際上,當(dāng)文件較少的時候,Django是可以應(yīng)付的過來的。但當(dāng)文件以海量形式出現(xiàn)的時候,Django就并不是那么好用了,于是FastDFS應(yīng)運(yùn)而出。

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

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

      為什么要用FastDfs:

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

      Docker來搭建分布式文件系統(tǒng)FastDFS

       

      1,首先下載fastdfs鏡像

      docker pull delron/fastdfs

      2,使用docker鏡像構(gòu)建tracker容器(跟蹤服務(wù)器,起到調(diào)度的作用),這里tracker服務(wù)將會自動映射到宿主機(jī)上

      注意:docker 的 -v 參數(shù),可以自動掛載宿主機(jī)的文件件到容器中去,這樣宿主和容器就可以進(jìn)行無障礙的文件共享,我們通過-v參數(shù),把宿主機(jī)的root目錄自動掛載到docker容器中的/var/root目錄中去

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

      3,docker鏡像構(gòu)建storage容器(存儲服務(wù)器,提供容量和備份服務(wù)),這里storage容器需要依賴tracker服務(wù),傳入你的tracker服務(wù)的ip地址,端口默認(rèn)是22122,ip地址也就是你宿主機(jī)的ip

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

      注意:上面ip為docker的ip

      此時,命令行輸入 docker ps 就可以看到兩套服務(wù)都已經(jīng)啟動

      Docker來搭建分布式文件系統(tǒng)FastDFS

      注意: docker ps -a 可以查看所有進(jìn)程   docker rm 進(jìn)程號 刪除對應(yīng)進(jìn)程

      然后分別進(jìn)入宿主的命令行以及進(jìn)入容器storage的命令行,發(fā)現(xiàn)文件夾已經(jīng)共享

      Docker來搭建分布式文件系統(tǒng)FastDFS

       

      進(jìn)入正在后臺運(yùn)行的storage容器

      docker exec -it storage /bin/bash

      下面來個例子(上傳視頻)

      我們可以利用docker的exec命令不進(jìn)入容器,直接在宿主機(jī)的環(huán)境下調(diào)用容器內(nèi)的命令,因為文件夾已經(jīng)共享,所以我們輸入的文件目錄雖然是容器中的/var/root目錄,但是實際上該上傳的文件就在宿主的/root目錄中

      docker exec -i storage /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /var/root/test.mp4

       上傳成功后,fastdfs將會返回視頻的網(wǎng)絡(luò)地址

       Docker來搭建分布式文件系統(tǒng)FastDFS

       

      瀏覽器訪問一下,沒有問題

       Docker來搭建分布式文件系統(tǒng)FastDFS

       

      至此,在宿主機(jī)中上傳文件已經(jīng)搞定,而Python同樣也可以在命令行中執(zhí)行命令,我們可以從命令中得到URL的做法來實現(xiàn)django與fastdfs的交流,這里利用的是python中的os.popen方法,可以非常簡單的在命令行中獲取返回的fastdfs網(wǎng)絡(luò)地址,從而避開了必須要安裝fastdfs的python客戶端,因為該客戶端對python3并不十分友好。代碼如下:

      import os
      import re

      std= os.popen(docker exec -i storage /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /var/root/test.mp4).read()
      print(*********** fastdfs excute start ***********)
      print(std.strip())
      print(*********** fastdfs excute end ***********)

      這樣,在django中上傳文件時,就可以通過命令的方式上傳到fastdfs中,獲取返回地址后入庫就可以了,本次操作將docker的特性運(yùn)用到了極致,由此可見docker的泛用性之廣,實實在在的提高了開發(fā)效率。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號