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

相关文章
相关标签/搜索