FastDHT配合FastDFS进行文件上传去重
来源:互联网 发布:中国电信淘宝旗舰店 编辑:程序博客网 时间:2024/05/16 10:12
为什么写这个
最近因为工作需要,使用了FastDFS,这是一款国产的开源DFS软件,但是这个软件本身不能对重复上传的文件进行去重,需要我们自己去处理,一种可行的方案是,在文件上传之前进行md5校验,把每个文件保存在数据库中,然后进行对比,这个md5值如果在数据库中已经存在的话,就不上传。不过这个效率可能不怎么高。FastDFS作者余庆也开源了一个解决的资源,就是FastDHT了,使用这个也可以做到去重。
关于FastDHT
FastDHT is a high-performance distributed hash system (DHT) which based key value pairs. It can store mass key value pairs such as filename mapping, session data and user related data.
FastDHT implements data replication by it’s binlog file, so it only uses the basic storage function of the Berkeley DB.
从这段话中可以看出,FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,同时需要依赖于libfastcommon。
FastDHT集群由一个或者多个组 group组成,同组服务器上存储的数据是相同的,数据同步只在组的服务器之间进行;组内各个服务是对等的,对数据进行存取时,可以根据 key的hash值来决定使用哪台机器。
安装
下载FastDHT,建议在GitHub上下载:https://github.com/happyfish100/fastdht,
libfastcommon下载地址:https://github.com/happyfish100/libfastcommon,
Berkeley DB的下载地址:
http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
下载完毕后,就可以开始安装了。
先安装libfastcommon
将源码解压到/usr/local/src/目录下,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
安装Berkeley DB
其实libfastcommon在安装FastDFS的时候就会安装了,接下来安装db。这里我下载的是db-6.1.19版本。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
安装FastDHT
①将fastdht-master源码解压到 /usr/local/src下,编译之前需要先修改make.sh文件。
在CFLAGS=’-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/usr/local/db-6.1.19/include/ -L/usr/local/db-6.1.19/lib/’
这行里面加上斜体字部分。
②然后,进入/usr/local/src/fastdht-master源码目录下,执行./make.mk
然后执行./make.sh install。
③最后会在/usr/local/bin生成安装后的文件,在/etc/fdht下生成文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
配置FastDHT
配置fdht_client.conf文件
- 1
- 2
- 3
- 1
- 2
- 3
配置fdht_servers.conf文件
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
配置fdhtd.conf文件
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
配置storaged.conf文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
启动
或fdhtd /etc/fdht/fdhtd.conf
fdhtd /etc/fdht/fdhtd.conf restart
可能遇到问题:
fdhtd /etc/fdht/fdhtd.conf
error while loading shared libraries: libdb-6.1.so: cannot open shared object file: No such file or directory
解决办法:
- 1
- 1
然后再重新启动就可以了。
测试一下:
可以看到,第一次上传的文件为:
- 1
- 1
第一次上传返回的结果为一个软链接:CgoKUlcZ0cWAYmiNAAAOejexS3k075.png,之后每次重复上传的话都是返回一个指向第一次上传的文件的软链接。也就保证了文件只保存了一份。需要说明的是,FastDFS不会返回原始文件的索引,比如这里的CgoKUlcZ0cWAUpQ4AAAOepbSnR0875.png,即返回的全部是软链接,当所有的软链接都被删除的时候,原始文件也会从FastDFS中被删除
- FastDHT配合FastDFS进行文件上传去重
- FastDHT配合FastDFS进行文件上传去重
- FastDHT配合FastDFS进行文件上传去重
- 使用java客户端操作fastdfs进行文件上传删除
- linux shell进行文件去重
- FastDFS上传文件实例
- fastdfs文件上传和下载
- FastDFS上传文件一 : 单文件上传
- FastDFS上传文件二 : 多文件上传
- 利用Shell脚本进行文件内容去重
- 对文件进行单词划分并去重排序
- Linux下对文件进行去重计数以及排序
- 本地包含配合文件上传
- linux 文件去重
- 大型文件去重
- linux文件去重
- Servlet中配合common-fileupload.jar和common-io.jar进行文件上传
- spring mvc 配合ajax进行表单提交(有文件上传)并且提醒用户提交成功
- JS组件系列——再推荐一款好用的bootstrap-select组件,亲测还不错
- 相似性度量
- 【Redis缓存机制】14.Java连接Redis_Jedis_主从模式
- Linux下的tar压缩解压缩命令详解
- 1060:绝对值排序
- FastDHT配合FastDFS进行文件上传去重
- source insight使用技巧
- JavaScript之如何让数字千位分割,即每三位一个逗号间隔
- MySql 第一部分
- 元素和是K的倍数的子串的最大长度
- 跳石板---动态规划
- Java中关键字及其简要含义
- 如何在Spring官网下载jar包
- JAVA异常处理