当前位置:  操作系统>Linux

高性能分布式哈希表FastDHT介绍及安装配置

 
    发布时间:2014-8-12  


    本文导语:  FastDHT介绍 FastDHT 是一个高性能的分布式哈希系统 (DHT) ,使用 Berkeley DB 做数据存储,使用 libevent 做网络IO处理,提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息。 ...

    FastDHT介绍

    FastDHT 是一个高性能分布式哈希系统 (DHT) ,使用 Berkeley DB数据存储,使用 libevent网络IO处理,提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息

     FastDHT存储Key Value Pair支持两种存储方式:缓存方式的MPOOL和持久存储方式的BDB。Key包括三部分:Namespace, ObjectID和Key。 Key可设置过期时间,自动清除过期数据.Server端划分group,同group数据互相备份,并且可自动压缩binlog.服务端可使用单线程,多线程模式

     FastDHT一些特性:

    虚拟farm,便于扩容;

    分布式算法client端实现,不需要中心服务器;

    二进制通信协议,支持Proxy;

    使用libevent,异步IO方式,支持大并发;

    自动failover;

    支持长连接     

    FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。

      FastDHT由客户端决定应该选择哪台服务器,为例避免查表,应该根据key的hash code来选择服务器,算法描述如下: 

  1. 计算出key的hash值(hash_code) 

  2. group_index = hash_code % group_count 

  3. new_hash_code = hash_code高16位和低16位互换 

  4. server_index = new_hash_code % 组内server_count 

      计算server_index和group_index时使用了不同的hash code,是因为如果group_count和组内server_count相等,例如都等于2,那么对于一个组来说,任何key值都将选中其中一台固定的服务器(server_index == group_index)。

       FastDHT基本结构图如下所示:

        FastDHT集群图

      


FastDHT 安装步骤完善


需要的依赖库文件: libevent-1.4.so.2 , libdb-4.7.so

依赖库文件存在于以下依赖包:libevent-1.4.14-stable  Berkley DB-4.7.25


依赖软件下载修改 iis7站长之家: 

         libevent-1.4.14-stable 

               db-4.7.25.tar.gz        

               FastDHT V1.18.tar.gz  


一. 安装步骤: 

(请按照顺序进行安装)


1. install  libevent-1.4.14-stable.tar.gz

tar xzf libevent-1.4.14-stable.tar.gz
cd libevent-1.4.14-stable
./configure --prefix=/usr
make && make install


2. install Berkley DB-4.7.25

tar xzf db-4.7.25.tar.gz
cd db-4.7.25/build_unix
../dist/configure --prefix=/usr
make && make install


3. install FastDHT V1.18

tar xzf FastDHT_v1.18.tar.gz
cd FastDHT
./make.clean
./make.sh
./make.sh install
(确保存在 fdhtd.conf  fdht_servers.conf  fdht_client.conf 在服务器上)


二. 修改配置文件


创建目录: mkdir /etc/fdhtd (目录权限 : 755  所属者: root)


cp fdhtd.conf /etc/fdhtd/              (文件权限 : 644  所属者: root)

cp fdht_servers.conf /etc/fdhtd/    (文件权限 : 644  所属者: root)

cp fdht_client.conf /etc/fdhtd/       (文件权限 : 644  所属者: root)


vi /etc/fdhtd/fdhtd.conf

port=11411
bash_path=<自定义目录 例如: /fdht>
cache_size = 32MB
#include /etc/fdhtd/fdht_servers.conf  -> (本行前有#表示打开,如果想关闭此选项,则应该为##开头)


vi /etc/fdhtd/fdht_server.conf

group_count = 2   (数字可自定义)
group0 = <ipaddress>:<port>
group0 = <ipaddress>:<port>
group1 = <ipaddress>:<port>
group1 = <ipaddress>:<port>

依次类推


vi /etc/fdhtd/fdht_client.conf

keep_alive=1  --> (本选项关联 storaged.conf文件)

bash_path=<自定义目录 例如: /fdht>

# include /etc/fdhtd/fdht_servers.conf


配置storaged.conf文件

vi  storaged.conf (默认位置: /etc/fdfs/storaged.conf)


line 189:  check_file_duplicate=1

本配置项解释: 是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个索引链接以节省磁盘空间

line 193:  key_namespace=FastDFS

本配置项解释: 当上个参数设定为1时 , 在FastDHT中的命名空间

line 197:  keep_alive=1 

本配置项解释: 长连接配置选项,如果为0则为短连接 1为长连接

line 204:  # include /etc/fdhtd/fdht_servers.conf

本配置项解释: 可以通过 #include filename 方式来加载 FastDHT servers  的配置


三. 判断排错


1.  fdht文件应该存在于 /etc/fdhtd/文件夹下

2.  /etc/fdfs/storaged.conf && /etc/fdfs/fdhtd.conf 2个配置文件中应开启如下配置项

# include /etc/fdhtd/fdht_servers.conf

3.  cache_size 应 > 32M及以上

4.  ulimit -c unlimited 即可


四. 启动FastDHT


/usr/local/bin/fdhtd /etc/fdhtd/fdhtd.conf

若出现段错误,则按照如下步骤排查,若没有出现任何报错则直接使用命令 netstat -an | grep 11411来查看端口是否启动


段错误排错步骤: 

1. ldd /usr/local/bin/fdhtd 查看是否所有动态链接库全链接完毕

ldd的结果应包含如下2条:

(X86_64)

libevent-1.4.so.2 => /lib64/libevent-1.4.so.2 (0x00000000.....)

libdb-4.7.so => /lib64/tls/libdb-4.7.so (0x00000000....)

(i386)

libevent-1.4.so.2 => /lib/libevent-1.4.so.2 (0x00000000.....)

libdb-4.7.so => /lib/tls/libdb-4.7.so (0x00000000....)


2. 若ldd的结果为 libdb-4.2.so => /lib64/tls/libdb-4.2.so (0x00000000....)

则应该进行如下替换操作:

find / -name libdb-4.7.so 

cp {$path}/libdb-4.7.so  /lib64/tls/libdb-4.2.so


3. 若结果没有错误,则检查对应安装软件版本

libevent-1.4.8以上版本

Berkeley-db-4.7.25以上版本

FastDHT V1.0以上版本


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:高性能分布式哈希表FastDHT介绍及安装配置
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3