FastDHT文件去重

发布于 2021-10-18  2.54k 次阅读


一,FastDHT概述

FastDHT和FastDFS来自一个作者,FastDFS本身并没有提供文件去重功能,需要依赖第三方框架FastDHT

FastDHT是一个分布式Hash系统基于键值对内存存储,底层是CRC32进行效验,依赖于第三方Berkeley DB数据库,将效验信息持久化保存到DB数据库中

FastDHT的效验流程:

  • 用户提供浏览器上传文件
  • FastDFS手动信息,将文件转发给FastDHT进行效验
  • FastDHT将文件名进行CRC32效验
  • 将效验信息和DB数据库中信息进行比对,看是否重复
  • 假如重复就按照Storage存储的真实文件生成软链接,再进行保存(软链接存储大小很小)
  • 假如不重复就存储真实文件

二,FastDHT搭建

搭建FastDHT依赖两个依赖包:

  1. fastdht-master
  2. Berkeley DB数据库

一,搭建前置准备

文件下载地址:

① 上传文件

rz -y
#或者其他工具

② 解压文件

#解压fastdht-master.zip
unzip fastdht-master.zip
#解压db.5.3.28.tar.gz
tar -zxvf db.5.3.28.tar.gz

二,安装配置

一,安装Berkeley DB

① 进入db中的build_unix目录
cd bunild_unix

② 执行配置命令(一定要进入目录)

./../dist/configure

③ 进行编译安装

make && make install

二,安装配置FastDHT

① 进入fastdht的目录执行编译安装命令

#编译
./make.sh
#安装
./make.sh install

注:默认安装后配置文件在/etc/fdht中,运行文件在/usr/local/bin中

② 配置/etc/fdht中的fdhtd.conf文件

port=11411 #服务端口号默认11411
base_path=/opt/fastdfs/fastdht #日志文件位置,必须存在

③ 配置/etc/fdht中的fdht_client.conf文件

keep_alive=1
base_path=/opt/fastdfs/fastdht/client #日志文件位置,必须存在

④ 配置/etc/fdht中的fdht_servers.conf文件(这个文件主要用来配置集群)

group_count = 1 #组的数量(集群数量)
group0 = 192.168.68.133:11411 #组的地址

⑤ 配置FastDFS中的storage.conf文件

#是否检测上传文件已经存在。如果已经存在,则建立一个索引链接以节省磁盘空间
check_file_duplicate=1
#当上个参数设定为1时 , 在FastDHT中的命名空间
key_namespace=FastDFS
#长连接配置选项,如果为0则为短连接 1为长连接(需要fastdfs和fastdht一直保持连接,所有为长连接)
keep_alive=1
#引入fdht_servers.conf文件(下面的#include号是关键字表示引入,并不是注释)
#include /etc/fdht/fdht_servers.conf

三,测试FastDHT

开启:

#开启FastDHT
fdhtd /etc/fdht/fdhtd.conf start
#开启FastDFS的tracker
fdfs_trackerd /etc/fdfs/tracker.conf start
#开启FastDFS的storage
fdfs_storaged /etc/fdfs/storage.conf start

通过:fdfs_test 一直上传同一个文件(并查看文件目录)

蓝色的就是软连接文件,FastDHT对文件进行了去重


路漫漫其修远兮,吾将上下而求索