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基本結構圖如下所示:
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以上版本
您可能感興趣的文章:
總結
以上是生活随笔為你收集整理的linux 2.6 hash表作用,高性能分布式哈希表FastDHT介绍及安装配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员如何高效的学习?
- 下一篇: 看漫画,学Linux内核!看完明白小企鹅