update:緊急修復(fù)一個(gè)嚴(yán)重的bug,影響多節(jié)點(diǎn)memcached下的余數(shù)哈希分布。jmx監(jiān)控正式啟用。更多單元測(cè)試。
XMemcached是一個(gè)基于java nio的memcached客戶端。最新發(fā)布1.10-RC1版本,這個(gè)版本其實(shí)早就完成,一直沒(méi)有環(huán)境來(lái)測(cè)試,本機(jī)測(cè)試沒(méi)有多大價(jià)值。今天做了一個(gè)初步測(cè)試,在效率上已經(jīng)超越了spymemcached最新的2.3.1版本,具體的測(cè)試數(shù)據(jù)請(qǐng)看下面,下載地址
這里,更新了
wiki。
1.10-RC1的主要改進(jìn):
1、
性能優(yōu)化,具體請(qǐng)參見wiki,在測(cè)試中已經(jīng)超越了spymemcached最新的2.3.1版本
2、
重構(gòu),引入Optimiezer、XMemcachedClientBuilder等類,并引入泛型方法,使API接口更趨實(shí)用性和便捷性。1.10rc1將不兼容1.0版本,具體API請(qǐng)參見javadoc。可以保證的是在1.10穩(wěn)定后,xmemcached在API接口不會(huì)再有大的變動(dòng)。
3、
引入maven做項(xiàng)目構(gòu)建,原來(lái)的ant構(gòu)建仍然可用。
4、
bug修復(fù),具體參見issues報(bào)告,更多測(cè)試提高健壯性。
5、
引入jmx監(jiān)控,可以通過(guò)java -Dxmemcached.jmx.enable=true來(lái)啟用jmx監(jiān)控,jmx功能可以統(tǒng)計(jì)xmemcached的各種操作次數(shù),以及優(yōu)化參數(shù)調(diào)整等,更多信息請(qǐng)參考javadoc和wiki
后續(xù)計(jì)劃:
1.10版本的正式發(fā)布
1.11版本的開發(fā)工作,引入JMX監(jiān)控。
今天給出的是memcached存儲(chǔ)java原生類型的效率測(cè)試,key和value都是字符串,memcached單節(jié)點(diǎn)跑在局域網(wǎng)內(nèi)的服務(wù)器上,spymemcached使用的是2.3.1版本,xmemcached使用的是1.10-RC1,兩者都是默認(rèn)配置。具體圖表請(qǐng)看下面及相應(yīng)說(shuō)明。
首先是在我本機(jī)windows xp環(huán)境(因?yàn)橹饕磳?duì)比,機(jī)器環(huán)境不再具體說(shuō)明),連接memcached服務(wù)器所做的測(cè)試,下面是xmemcached和spymemcached的set操作效率對(duì)比,縱坐標(biāo)為TPS,橫坐標(biāo)為線程并發(fā)數(shù)(下同)。
顯然,兩者的set操作效率在windows下極為接近。接下來(lái)是get操作的對(duì)比直方圖:
XMemcached在get操作上保持傳統(tǒng)優(yōu)勢(shì),并發(fā)越大,優(yōu)勢(shì)越明顯。在測(cè)試了windows下兩個(gè)客戶端的表現(xiàn),繼續(xù)做linux下的測(cè)試數(shù)據(jù),因?yàn)樗玫臋C(jī)器是一臺(tái)8核的牛機(jī),因此TPS非常驚人。首先是set操作的對(duì)比:
不用多說(shuō),xmemcached全面占優(yōu)。再看get操作的對(duì)比:
一個(gè)奇特的現(xiàn)象是在200線程并發(fā)的時(shí)候,spymemcached反而超過(guò)了xmemcached,這一現(xiàn)象反復(fù)測(cè)試還是如此。其他并發(fā)下,xmemcached全面占優(yōu),在達(dá)到500并發(fā)時(shí),spymemcached的get很多超時(shí),因此數(shù)據(jù)作廢,而xmemcached由于可以設(shè)置get的操作的超時(shí)時(shí)間更長(zhǎng),因此仍然正常運(yùn)行。
從以上測(cè)試可以看出,1.10-RC1版本的XMemcached存儲(chǔ)原生類型已經(jīng)在windows和linux平臺(tái)上的效率都超過(guò)了spymemcached。對(duì)于自定義對(duì)象和容器對(duì)象的存儲(chǔ)測(cè)試也證明xmemcached的效率已經(jīng)全面超越了spymemcached。很希望有更多的測(cè)試報(bào)告,畢竟我的測(cè)試可能還是不夠客觀。