linux 2.6 hash表作用,高性能分布式哈希表FastDHT介绍及安装配置

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方式,支持大并发;

支持长连接。

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基本结构图如下所示:

e3da0ce7fa17e4e1330484010c9a2bd8.png

FastDHT 安装步骤完善

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

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

一. 安装步骤:

(请按照顺序进行安装)

1. install  libevent-1.4.14-stable.tar.gztar 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.25tar 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.18tar 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.confport=11411

bash_path=

cache_size = 32MB

#include /etc/fdhtd/fdht_servers.conf  -> (本行前有#表示打开,如果想关闭此选项,则应该为##开头)

vi /etc/fdhtd/fdht_server.confgroup_count = 2   (数字可自定义)

group0 = :

group0 = :

group1 = :

group1 = :

依次类推

vi /etc/fdhtd/fdht_client.conf

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

bash_path=

# include /etc/fdhtd/fdht_servers.conf

配置storaged.conf文件

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

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

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....)

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以上版本

您可能感兴趣的文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)

在之前的两篇 GAN 系列文章–[GAN学习系列1]初识GAN以及[GAN学习系列2] GAN的起源中简单介绍了 GAN 的基本思想和原理,这次就介绍利用 GAN 来做一个图片修复的应用,主要采用的也是 GAN 在网络结构上的升级版–DCGAN,最初始的 GAN 采用的还是神…

用虚拟机把ubuntu安装到TF卡上

最近在学习Linux,考虑到将来可能不会带着自己的笔记本到处跑,而我又希望能随身带着个Ubuntu系统 ,总不能在别人的电脑上装个Linux系统吧。刚好最近入手了一张 Sandisk 16G class 10 的TF卡,加上一个PNY的手机宝贝读卡器&#xff0…

C 语言调用CPU指令,CPU 1214C中 TSEND_C指令 最多可以使用几次-工业支持中心-西门子中国...

8次硬件版本 V3.0 支持的协议和最大的连接资源:3个连接用于操作面板1个连接用于编程设备(PG)与 CPU 的通信8个连接用于Open IE ( TCP, ISO on TCP, UDP) 的编程通信,使用T-block 指令来实现3个连接用于S7 通信的服务器端连接,可以实现与S7-20…

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)

上一篇文章–[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)中,我们先介绍了对于图像修复的背景,需要利用什么信息来对缺失的区域进行修复,以及将图像当做概率分布采样的样本来看待,通过这个思路来开始进行…

[资源分享] 推荐两本电子书

又到了一周一次的资源和教程推荐。这周会推荐两本电子书,希望大家不只是收藏不阅读系列哦!1. 《模式识别与机器学习》(PRML)免费开放下载第一本推荐的书籍就是 AI 领域里面一直都非常有名的书籍--《模式识别与机器学习》&#xff…

[资源]181个Python开源项目分享!

在基于 GitHub 2018 年 Octoverse 报告中,简要分析了 Github 中哪些编程语言是最佳代表或是趋势。有许多方法可以衡量编程语言的流行程度。 在Octoverse报告中,GitHub使用了:公共和私有存储库中贡献者使用的主要语言以主要语言创建和标记的存…

c语言如何编写建立tex文件,用LaTeX写C语言实验报告1:工具的准备

前言要说到我第一次知道TeX,那是因为我们C语言老师上课聊天的时候偶然提到说她写文档什么的比较喜欢用TeX,而不是word,这就激起了我的好奇心。于是回去之后立马百度,发现TeX确实是个好东西,很符合我们程序员的思维&…

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(下)

这是本文的最后一部分内容了,前两部分内容的文章: [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中) 以及原文的地址: http://bamos.github.io…

SQL Server 限制IP登陆

一、背景 在MySQL的mysql.User表保存了登陆用户的权限信息,Host和User字段则是关于登陆IP的限制。但是在SQL Server没有这样一个表,那SQL Server有什么办法可以实现类似的安全控制的功能呢? SQL Server 包括三种常规类型的触发器:…

[资源]基于 Pytorch 的 TorchGAN开源了!

之前推荐过一个基于 TensorFlow 的 GAN 框架–谷歌开源的 GAN 库–TFGAN。 而最近也有一个新的 GAN 框架工具,并且是基于 Pytorch 实现的,项目地址如下: https://github.com/torchgan/torchgan 对于习惯使用 Pytorch 框架的同学&#xff0…

c语言iso校验算法,模式识别c语言ISODATA算法.doc

模式识别c语言ISODATA算法.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&…

2018 总结 2019 展望

今天是 2018 年的最后一天了,照例还是需要对今年做个总结的!2018 总结1. 工作今年其实是分两个阶段,上半年还是研究生的最后半年,努力的赶完毕业论文,顺利通过了盲审和毕业答辩,也算是给自己的学业生涯画上…

程序员的数学笔记1--进制转换

最近在学习极客时间的课程–程序员的数学基础课。 课程地址:https://time.geekbang.org/column/intro/143 这是第一节课程的学习笔记–有关进制的转换。 二进制 什么是二进制 十进制计数是使用 10 作为基数,例如一个数字:2871&#xff0c…

android层级关系图,画出 View 的层级 3D 图和树形图来分析层级关系

HierarchyLayout 介绍HierarchyLayout是一个自定义的ViewGroup工具,用于分析视图的层级关系,并画出层级树的结构图和可交互的3D 层级View:HiearchyLayout的静态图,实际是可随手势改变 3D 形态的。hierarchyView.jpeghierarchyViewNode.jpeghi…