Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • F fastdht
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 11
    • Issues 11
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • YuQing
  • fastdht
  • Wiki
  • Home

Home · Changes

Page history
Updated Home (markdown) authored Apr 12, 2019 by blank-1's avatar blank-1
Hide whitespace changes
Inline Side-by-side
Home.md
View page @ df24925b
# FastHT # FastHT
## 一、前言 ## 一、前言
FastDHT 是一个高性能的分布式哈希系统 (DHT) ,使用 Berkeley DB 做数据存储,使用 libevent 做网络IO处理,提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息。<br> FastDHT 是一个高性能的分布式哈希系统 (DHT) ,使用 Berkeley DB 做数据存储,使用 libevent 做网络IO处理,
FastDHT存储Key Value Pair支持两种存储方式:缓存方式的MPOOL和持久存储方式的BDB。Key包括三部分:Namespace, ObjectID和Key。 Key可设置过期时间,自动清除过期数据.Server端划分group,同group数据互相备份,并且可自动压缩binlog.服务端可使用单线程,多线程模式。<br> 提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息。
FastDHT存储Key Value Pair支持两种存储方式:缓存方式的MPOOL和持久存储方式的BDB。
Key包括三部分:Namespace, ObjectID和Key。 Key可设置过期时间,自动清除过期数据.Server端划分group
同group数据互相备份,并且可自动压缩binlog.服务端可使用单线程,多线程模式。
FastDHT一些特性: FastDHT一些特性:
+ 虚拟farm,便于扩容; + 虚拟farm,便于扩容;
+ 分布式算法client端实现,不需要中心服务器; + 分布式算法client端实现,不需要中心服务器;
...@@ -10,15 +13,18 @@ ...@@ -10,15 +13,18 @@
+ 使用libevent,异步IO方式,支持大并发; + 使用libevent,异步IO方式,支持大并发;
+ 自动failover; + 自动failover;
+ 支持长连接。 + 支持长连接。
FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。<br> FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。
FastDHT由客户端决定应该选择哪台服务器,为例避免查表,应该根据key的hash code来选择服务器,算法描述如下:<br> 组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。
FastDHT集群由一个或多个组(group)组成,每个组由一台或多台服务器组成,同组服务器上存储的数据是相同的,数据同步只在同组的服务器之间进行。
组内各个服务器是对等的,对数据进行存取时,可以根据key的hash值来决定使用哪台服务器。数据同步采用推(Push)的方式,由源服务器主动将数据同步到本组的其他服务器。
FastDHT由客户端决定应该选择哪台服务器,为例避免查表,应该根据key的hash code来选择服务器,算法描述如下:
1. 计算出key的hash值(hash_code) 1. 计算出key的hash值(hash_code)
2. group_index = hash_code % group_count 2. group_index = hash_code % group_count
3. new_hash_code = hash_code高16位和低16位互换 3. new_hash_code = hash_code高16位和低16位互换
4. server_index = new_hash_code % 组内server_count 4. server_index = new_hash_code % 组内server_count
计算server_index和group_index时使用了不同的hash code,是因为如果group_count和组内server_count相等,例如都等于2,那么对于一个组来说,任何key值都将选中其中一台固定的服务器(server_index == group_index)。<br> 计算server_index和group_index时使用了不同的hash code,是因为如果group_count和组内server_count相等,例如都等于2,
那么对于一个组来说,任何key值都将选中其中一台固定的服务器(server_index == group_index)。
需要的依赖库文件: libevent-1.4.so.2 , libdb-4.7.so。 需要的依赖库文件: libevent-1.4.so.2 , libdb-4.7.so。
## 二、安装 ## 二、安装
### 1、基本环境: ### 1、基本环境:
CentOS7、libfastcommon、Berkeley、FastDHT CentOS7、libfastcommon、Berkeley、FastDHT
......
Clone repository
  • Home