FastDFS实现上传资源排重

FastDFS本身支持文件的排重处理机制。但需要FastDHT作为文件hash的索引存储。FastDHT是同一个作者的开源key-value数据库。

 

排重原理

FastDFS的storage server每次上传均计算文件的hash值,然后从FastDHT服务器上进行查找比对,如果没有返回,则写入hash,并将文件保存

如果有返回,则建立一个新的文件链接(软链),不保存文件。

 

 

服务器结构

在2台服务器上安装FastDHT,避免单点问题

192.168.110.5

192.168.110.6

配置2台FastDFS storage服务器排重处理上传资源

192.168.110.3

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

转载于:https://my.oschina.net/zjg23/blog/796238

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值