BeansDB分布式key/value存儲(chǔ)系統(tǒng)
BeansDB 是一個(gè)主要針對(duì)大數(shù)據(jù)量、高可用性的分布式KeyValue存儲(chǔ)系統(tǒng),采用HashTree和簡(jiǎn)化的版本號(hào)來(lái)快速同步保證最終一致性(弱),一個(gè)簡(jiǎn)化版的 Dynamo。
它采用類似memcached的去中心化結(jié)構(gòu),在客戶端實(shí)現(xiàn)數(shù)據(jù)路由。目前只提供了 Python版本的客戶端,其它語(yǔ)言的客戶端可以由memcached的客戶端稍加改造得到。
主要特性包括:
高可用:通過(guò)多個(gè)可讀寫的用于備份實(shí)現(xiàn)高可用;
最終一致性:通過(guò)哈希樹(shù)實(shí)現(xiàn)快速完整數(shù)據(jù)同步(短時(shí)間內(nèi)數(shù)據(jù)可能不一致);
容易擴(kuò)展:可以在不中斷服務(wù)的情況下進(jìn)行容量擴(kuò)展;
高性能:異步IO和高性能的Key Value數(shù)據(jù)Tokyo Cabinet;
可配置的可用性和一致性:通過(guò)N,W,R進(jìn)行配置;
簡(jiǎn)單協(xié)議:Memcached兼容協(xié)議,大量可用客戶端。
Python 操作示例:
from dbclient import Beansdb
# three beansdb nodes on localhost
BEANSDBCFG = {
"localhost:7901": range(16),
"localhost:7902": range(16),
"localhost:7903": range(16),
}
db = Beansdb(BEANSDBCFG, 16)
db.set('hello', 'world')
db.get('hello')
db.delete('hello')
性能測(cè)試:
$ beansdb -d $ memstorm -s localhost:7900 -n 1000000 -k 10 -l 100 ---- Num of Records : 1000000 Non-Blocking IO : 0 TCP No-Delay : 0 Successful [SET] : 1000000 Failed [SET] : 0 Total Time [SET] : 51.77594s Average Time [SET] : 0.00005s Successful [GET] : 1000000 Failed [GET] : 0 Total Time [GET] : 40.93667s Average Time [GET] : 0.00004s
評(píng)論
圖片
表情
