FastDFS實現上傳資源排重

FastDFS自己支持文件的排重處理機制。但須要FastDHT做爲文件hash的索引存儲。FastDHT是同一個做者的開源key-value數據庫。數據庫

 

排重原理服務器

FastDFS的storage server每次上傳均計算文件的hash值,而後從FastDHT服務器上進行查找比對,若是沒有返回,則寫入hash,並將文件保存oracle

若是有返回,則創建一個新的文件連接(軟鏈),不保存文件。測試

 

 

服務器結構ui

在2臺服務器上安裝FastDHT,避免單點問題this

192.168.110.5google

192.168.110.6spa

配置2臺FastDFS storage服務器排重處理上傳資源unix

192.168.110.3rest

192.168.110.4

 

 

1.安裝hash數據庫FastDHT的依賴庫

berkeleydb 4.7.25以上

 

wget -c http://download.oracle.com/berkeley-db/db-5.2.28.tar.gz

 

tar zxf db-5.2.28.tar.gz

cd db-5.2.28/build-unix

../dist/configure --prefix=/usr

make && make install

ldconfig

 

libevent 1.4.8以上

yum install libevent libvent-devel

 

2.安裝FastDHT

wget -c http://fastdht.googlecode.com/files/FastDHT_v1.17.tar.gz

tar zxf FastDHT_v1.17.tar.gz

cd FastDHT

 

修改make.sh和conf文件,以便複製和安裝

 

-----------------------------見附件的patch文件----------------------------

nano make.sh

WITH_LINUX_SERVICE=1

 

TARGET_PREFIX=/usr/local/fastdht

      mkdir -p $TARGET_PREFIX/etc

      cp -f conf/fdhtd.conf $TARGET_PREFIX/etc/

      cp -f conf/fdht_servers.conf $TARGET_PREFIX/etc/

      cp -f conf/fdht_client.conf $TARGET_PREFIX/etc/

      cp -f init.d/fdhtd /etc/rc.d/init.d/

 

 

---------------------------------見附件的patch文件----------------------------

 

./make.sh

./make.sh install

 

3.配置FastDHT

nano /usr/local/fastdht/etc/fdhtd.conf

     base_path=/www/fastdht

nano /usr/local/fastdht/etc/fdht_server.conf

      group_count = 1

      group0 = 192.168.110.5:11411

      group0 = 192.168.110.6:11411

 

 

mkdir -p /www/fastdht

 

 

4.啓動FastDHT

/etc/init.d/fdhtd start

 

 

5.配置FastDFS的storage服務器

 

將FastDHT服務器110.5上的server配置文件複製到FastDFS的storage服務器110.3和110.4上

scp /usr/local/fastdht/etc/fdht_server.conf 192.168.110.3:/usr/local/fastdfs/etc/

 

 

修改storage服務器的配置文件

 

--------------------------------------------------------------------

nano /usr/local/fdfs/etc/storage_pic1.conf

 

# if check file duplicate, when set to true, use FastDHT to store file indexes

# 1 or yes: need check

# 0 or no: do not check

check_file_duplicate=1

 

# namespace for storing file indexes (key-value pairs)

# this item must be set when check_file_duplicate is true / on

key_namespace=juxiang_pic

 

# set keep_alive to 1 to enable persistent connection with FastDHT servers

# default value is 0 (short connection)

keep_alive=1

 

#注意是一個井號

#include /usr/local/fastdfs/etc/fdht_servers.conf

 

 

-------------------------------------------------------------------

nano /usr/local/fdfs/etc/storage_portrait1.conf

 

 

check_file_duplicate=1

 

key_namespace=juxiang_portrait

 

keep_alive=1

 

#include /usr/local/fastdfs/etc/fdht_servers.conf

 

 

6.重啓stoage服務器

/etc/init.d/fdfs_storage restart

 

7.排重的原理和測試

storage server每次上傳均計算文件的hash值,而後從FastDHT服務器上進行查找比對,若是沒有返回,則寫入hash,並將文件保存

若是有返回,則創建一個新的文件連接(軟鏈),不保存文件。

測試結果以下

 

lrwxrwxrwx 1 www www     68 06-27 18:13 wKhuA04IV8KBy7ZYAANZGGz6LoM768.jpg -> /www/fastdfs/portrait1/data/00/00/wKhuA04IVxKO4CTHAANZGDC_k8I758.jpg

-rw-r--r-- 1 www www 219416 06-27 18:10 wKhuA04IVxKO4CTHAANZGDC_k8I758.jpg

lrwxrwxrwx 1 www www     68 06-27 18:10 wKhuA04IVxKUQebiAANZGC_dTZs510.jpg -> /www/fastdfs/portrait1/data/00/00/wKhuA04IVxKO4CTHAANZGDC_k8I758.jpg

lrwxrwxrwx 1 www www     68 06-27 18:14 wKhuA04IWA2uCmr3AANZGFJ41wo808.jpg -> /www/fastdfs/portrait1/data/00/00/wKhuA04IVxKO4CTHAANZGDC_k8I758.jpg

相關文章
相關標籤/搜索