Posted on 2009-03-13 22:07
dennis 閱讀(1885)
評論(2) 編輯 收藏 所屬分類:
java 、
my open-source
xmemcached發布1.0穩定版,下載地址
這里。
相比于1.0-beta版本,這個released版本的主要改進如下:
1、xmemcached跟yanf4j都是默認采用common-logging,你可以使用log4j,也可以默認使用jdk的日志庫。1.0添加了log4j的配置和依賴包。log4j的性能比jdk自帶的日志庫性能好多了。
2、添加了BufferAllocator接口,用于分配ByteBufferWrapper,ByteBufferWrapper顧名思義就是ByteBuffer的包裝接口,因此BufferAllocator就是ByteBuffer的分配器,有兩個實現:SimpleBufferAllocator,直接調用ByteBuffer.allocate(capacity)方法,不做任何緩存;一個是CachedBufferAllocator,采用ThreadLocal緩存ByteBuffer,避免重復創建,如果你對mina熟悉的話,這個概念沒什么特別的。默認xmemcached采用的是SimpleBufferAllocator,你可以通過XMemcachedClient的構造方法設置想要采用的BufferAllocator:
public XMemcachedClient(BufferAllocator allocator) throws IOException;
//其他重載構造函數
經過測試,采用CachedBufferAllocator并沒有帶來顯著的性能提升,需要更多測試,慎用。
3、允許設置網絡參數,在多個memcached節點的情況下,強烈推薦將網絡層的讀線程數(處理OP_READ)設置為接近節點數(具體還是要看場景測試,因為讀線程數本質上是啟動了一個線程池來處理讀事件,太大也會影響效率):
//XMemcachedClient的getDefaultConfiguration靜態方法,獲取默認配置
public static Configuration getDefaultConfiguration() {
Configuration configuration = new Configuration();
configuration.setTcpRecvBufferSize(TCP_RECV_BUFF_SIZE);
configuration.setSessionReadBufferSize(READ_BUFF_SIZE);
configuration.setTcpNoDelay(TCP_NO_DELAY);
configuration.setReadThreadCount(READ_THREAD_COUNT);
return configuration;
}
使用方法:
Configuration conf=XMemcachedClient.getDefaultConfiguration();
//設置讀線程數為節點數,更多設置方法請參見Configuration類
conf.setReadThreadCount(5);
XMemcachedClient mc = new XMemcachedClient(
conf,new CachedBufferAllocator());
mc.addServer(ip1, port1);
mc.addServer(ip2, port2);
mc.addServer(ip3,port3);
mc.addServer(ip4,port4);
mc.addServer(ip5,port5);
4、修復一系列發現的bug,如Command返回結果需要設置成原子引用、更嚴格的方法參數檢查、提示信息的友好、日志的優化、操作超時的時候取消操作等,重構部分代碼
5、提供了javadoc文檔,
這里下載。