memcachedb故名思義就是 memcached + bdb,是基于memcached Socket層和berkeley-db存儲層結(jié)構(gòu)的實現(xiàn), 是新浪互動社區(qū)技術(shù)團(tuán)隊2007年的一項重大的技術(shù)成果,現(xiàn)在應(yīng)用于新浪互動社區(qū)多個產(chǎn)品線中,其中包括新浪博客等重頭產(chǎn)品。能夠?qū)崿F(xiàn)任意memcache api的調(diào)用、數(shù)據(jù)實時落地以及主輔實時備份。
協(xié)議:New BSD License
作者:stvchu, gary.caokai, forever.sky81
團(tuán)隊:新浪互動社區(qū)事業(yè)部──博客產(chǎn)品
項目主頁:http://memcachedb.org/
為什么選擇memcached
為什么要選擇memcachedb:沒有什么特殊的原因,我們有最好的理由就是,在做到最大不犧牲數(shù)據(jù)讀、寫性能的前提下,我們能夠讓您原來存儲在memcache里的數(shù)據(jù)不再遭受系統(tǒng)宕機(jī)或者系統(tǒng)掉電而丟失,即使服務(wù)器電源爆炸了,只要硬盤還能夠正常工作,換到另外一臺服務(wù)器上,您的數(shù)據(jù)依然安然無恙地在硬盤上。
性能的擔(dān)憂:我們做過小數(shù)據(jù)測試,小數(shù)據(jù)(幾十個字節(jié))數(shù)據(jù)的讀寫,每秒鐘并發(fā)能夠維持在5000+(單塊146Scis硬盤,CPU和內(nèi)存配置幾乎可以忽略因為這不是性能瓶頸)。基本上滿足所有互聯(lián)網(wǎng)高效存儲的應(yīng)用。
應(yīng)用場合:需要頻繁讀寫的小數(shù)據(jù)。例如數(shù)字類服務(wù)就像點擊數(shù),需要頻繁寫入小數(shù)據(jù)的例如評論系統(tǒng),需要記錄用戶狀態(tài)的例如在線人數(shù)以及在線用戶等等。當(dāng)然,如果您想用來存儲單筆超過10K以上的數(shù)據(jù),例如新聞或者文章或者論壇帖子也可以,但是我們沒有嘗試過,如果您真的用來這樣子玩了,可以反饋給我們。
數(shù)據(jù)備份&&讀寫分離:memcachedb支持主輔實時無差異同步,配置主服務(wù)和輔服務(wù)僅僅需要很短的一條啟動命令。當(dāng)然,您也可以利用這一便利特性來實現(xiàn)讀寫分離,那樣子會讓您的系統(tǒng)更加的高效。
穩(wěn)定性:memcachedb目前被應(yīng)用于新浪互動社區(qū)多個產(chǎn)品線中,具有鋼鐵般的品質(zhì),Sina出品,品質(zhì)毋庸置疑。
編譯以及安裝
memcachedb跟memcache一樣,網(wǎng)絡(luò)socket數(shù)據(jù)處理依賴于libevent,所以,在安裝之前需要下載三個安裝包,即libevent、Berkeley Db以及memcachedb。
Libevent 下載頁面:http://monkey.org/~provos/libevent/ ,下載最新穩(wěn)定版本就行。
Berkeley Db下載頁面:http://www.oracle.com/technology/software/products/berkeley-db/index.html 需要安裝4.6版本
memcachedb下載頁面:http://code.google.com/p/memcachedb/ 下載最新版本 0.1.0版本
按照順序安裝,Libevent和Berkeley Db按照常規(guī)安裝即可,這里以Linux 環(huán)境為標(biāo)準(zhǔn)。
[======Libevent=====]
tar -zxvf libevent-1.3e.tar.gz
cd libevent-1.3e
./configure
make && make install
[======Berkeley Db=====]
tar -zxvf db-4.6.19.tar.gz
#需要進(jìn)入特定操作系統(tǒng)編譯環(huán)境,更常規(guī)軟件的編譯有些區(qū)別
cd db-4.6.19/build_unix/
#然后才能夠開始編譯
../dist/configure
make && make install
#如果沒有指定特殊安裝路徑,編譯完成,需要將Berkeley Db運(yùn)行庫的路徑添加到系統(tǒng)配置里面
echo "/usr/local/BerkeleyDB.4.6/lib/" >> /etc/ld.so.conf
#重載系統(tǒng)Ld運(yùn)行庫
ldconfig
[======Memcachedb=====]
tar -zxvf memcachedb-0.1.0.tar.gz
cd memcachedb-0.1.0
#如果您要存儲的內(nèi)容的鍵值的長度和單筆內(nèi)容的長度有變化,您需要更改一個文件 memcachedb.h
vim memcachedb.h
////////////////////////////////////////////////////////////
#define END_LEN 32 ----> 這是是 Key+Value 的最大長度
#define END_LEN_STR "31" ---> 這是是 key 的最大長度
/////////////////////////////////////////////////////////
#默認(rèn)key鍵值只預(yù)留了31個字節(jié)的長度,單筆數(shù)據(jù)最長是32個字節(jié)數(shù)。
#例如您如果需要用這個玩藝來存儲文本內(nèi)容數(shù)據(jù),假設(shè)您的鍵值是一個32個字節(jié)的md5,單筆數(shù)據(jù)允許最長10K,那您可以設(shè)定
////////////////////////////////////////////////////////////
#define END_LEN 102400 ----> 這是是 Key+Value 的最大長度
#define END_LEN_STR "32" ---> 這是是key的最大長度
/////////////////////////////////////////////////////////
#修改完之后,直接make就行
make
#編譯完之后,將生成可執(zhí)行memcachedb拷貝到 /usr/sbin/
cp -f memcachedb /usr/sbin/
#啟動 memcachedb
#第一種,讀寫合并模式,即不做輔拷貝,即讀又寫,不做冗余備份
memcachedb -p21211 -d -r -u root -H /data/mdb_11211 -N
#第二種,讀寫分離/備份模式
#主服務(wù)器 192.168.0.1 讀寫監(jiān)聽 11211 ,同步通過31211的端口完成,不占用繁忙的主服務(wù)端口
memcachedb -p21211 -d -r -u root -H /data/mdb_11211_m -N -R 127.0.0.1:31211 -M
# 輔服務(wù)器 192.168.0.2 只讀監(jiān)聽 21212,從192.168.0.1 的 31211端口同步數(shù)據(jù),同時再開一個31212端口對外提供數(shù)據(jù)同步服務(wù)
memcachedb -p21212 -d -r -u root -H /data/mdb_11211_from_16801_s -O 192.168.0.1:31211 -R 192.168.0.2:31212 -S
新聞熱點
疑難解答