隨筆-35  評論-33  文章-0  trackbacks-0
           最近在調研文件的分布式存儲及高可用,在GITHUB上面,發現了這個SeaweedFS項目不錯。

          SeaweedFS是基于go語言開發的高可用文件存儲系統,兩大特性

          1 成存儲上億的文件(最終受制于你的硬盤大小)

          2 速度剛剛的

          Seaweedfs的設計原理是基于 Facebook 的一篇圖片存儲系統的論文Facebook-Haystack

          雖然我還沒有看,不過我覺得。肯定是NBHH的。今天就只說一下環境相關的。


          安裝:

          第一步,GO的運行環境

          wget https://golang.org/doc/install?download=go1.6.1.linux-amd64.tar.gz

          sudo tar -C /usr/local -xzf go1.6.1.linux-amd64.tar.gz

          第二步,配置環境變量 /etc/profile

          export PATH=$PATH:/usr/local/go/bin

          export GOPATH=/usr/webserver/go/

          export PATH=$PATH:$GOPATH/bin

          第三步 安裝git

          sudo apt-get install git

          第四步 安裝mercurial

          apt-get install mercurial

          第五步,編譯安裝

          go get github.com/chrislusf/seaweedfs/go/weed  ((此處需要vpn))

          生活在天朝,沒有VPN,可以直接下載它的運行包,直接解壓,就可以運行了(我就是這樣做的,如果這樣,etc/profile里面的gopath這一項就不需要了)

          export PATH=$PATH:/usr/local/go/bin

          export PATH=$PATH:$GOPATH/bin

          sudo wgethttps://bintray.com/artifact/download/chrislusf/seaweedfs/weed_0.70beta_linux_amd64.tar.gztar zxvf weed_0.70beta_linux_amd64.tar.gz


          服務啟動:

          1 進入weed的解壓目錄,我的是這樣的。

          root@ubuntu:~/webserver/weed_0.70beta_linux_amd64# ./weed master


          注意看,它是啟動了一個服務,端口是9333,這是它的默認端口。

          2 啟動文件存儲服務

          root@ubuntu:~/webserver/weed_0.70beta_linux_amd64# ./weed volume -dir="/root/webserver/weed_0.70beta_linux_amd64/data" -max=5 -mserver="localhost:9333" -port=9080 &

          3 提交一個存儲請求,這個時候weed先要分配一個全局的文件ID

          curl -X POST http://localhost:9333/dir/assign

          4 存儲一張圖片

          curl -X PUT -F file=@/root/webserver/weed_0.70beta_linux_amd64/error.jpg http://127.0.0.1:9080/5,019d90e98a

          5 訪問測試

          因為我的服務器地址是192.168.1.47,http://192.168.1.47:9080/5,019d90e98a.jpg


          甚至,你還可以加上尺寸,動態獲取相應圖片的大小


          確實不錯。看了以上的截圖,你會發現它的文件ID,至始至終都存在。這就是文件的唯一標識。其實這個ID是每3部分存在的。

          其中"fid":"5,019d90e98a"就是 Fid,Fid 由三個部分組成 【VolumeId, NeedleId, Cookie】 組成。

          VolumeId: 1          32bit      存儲的物理卷的Id

          NeedleId: 01        64bit      全局唯一NeedleId,每個存儲的文件都不一樣(除了互為備份的)。

          Cookie: 9d90e98a    32bit      Cookie值,為了安全起見,防止惡意攻擊。

          以上這些,只能說是用過curl的方式,作為JAVA開發人員。還是需要封裝一個這些API,方便訪問。

          weed java client這是一個老外寫的,雖然代碼老了點,不過還是很不錯。準備看看,拿過來用一下。

          網上看了若干的文章

          http://blogread.cn/it/article/7721

          http://www.sqshi.com/a/270607.html(Bilibili的毛劍是參考了weed而寫的BFS)

          不過,我覺得,要真正理解這個weed,還是看它的GITHUB官網吧。

          SeaweekFS:seaweedfs



          我的微信公眾號,歡迎溝通學習。
          posted on 2016-04-15 18:55 alexcai 閱讀(2979) 評論(4)  編輯  收藏

          評論:
          # re: SeaweedFS:簡單,高可用的分布式文件存儲[未登錄] 2016-04-20 23:51 | linda
          分布式存儲 SeaweekFS項目很贊  回復  更多評論
            
          # re: SeaweedFS:簡單,高可用的分布式文件存儲 2016-04-21 14:20 | aunox
          感覺用的公司不是很多,可能是成名較晚。  回復  更多評論
            
          # re: SeaweedFS:簡單,高可用的分布式文件存儲 2016-05-12 16:54 | www.niuchui.com
          介紹得不錯,贊一個!  回復  更多評論
            
          # re: SeaweedFS:簡單,高可用的分布式文件存儲 2016-05-13 10:53 | zuxiong
          @www.niuchui.com
          多謝多謝。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 沈阳市| 阿拉善盟| 南康市| 将乐县| 紫云| 石柱| 隆昌县| 乌鲁木齐市| 衡阳市| 缙云县| 正安县| 克拉玛依市| 临猗县| 柯坪县| 巴彦淖尔市| 印江| 马公市| 岢岚县| 洛浦县| 玉树县| 渭源县| 永仁县| 龙里县| 连城县| 玛纳斯县| 隆安县| 荥经县| 宁津县| 靖江市| 镇原县| 都昌县| 安西县| 张北县| 阳春市| 普兰店市| 鹰潭市| 汝南县| 临潭县| 天镇县| 永城市| 商河县|