莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          xmemcached發布1.0版本

          Posted on 2009-03-13 22:07 dennis 閱讀(1888) 評論(2)  編輯  收藏 所屬分類: javamy 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文檔,這里下載。



          評論

          # re: xmemcached發布1.0版本  回復  更多評論   

          2009-03-14 11:30 by it
          不錯。。。。。。。

          # re: xmemcached發布1.0版本  回復  更多評論   

          2009-04-12 01:23 by risk
          有問題請教博主,我重新用jdk1.5 編譯后,不把成jar包,能正常運行,但一打成jar包后,就出現下面這個錯誤:
          Exception in thread "main" java.lang.NoSuchMethodError: net.spy.memcached.transcoders.Transcoder.encode(Ljava/lang/Object;)Lnet/spy/memcached/transcoders/CachedData;
          at net.rubyeye.xmemcached.XMemcachedClient.sendStoreCommand(XMemcachedClient.java:759)
          at net.rubyeye.xmemcached.XMemcachedClient.set(XMemcachedClient.java:490)
          at org.ce.fast.test.XMemcachedClientTest.main(XMemcachedClientTest.java:17)
          主站蜘蛛池模板: 东乌珠穆沁旗| 泗洪县| 三门峡市| 黄骅市| 三门县| 漳州市| 吐鲁番市| 潍坊市| 乌海市| 鄄城县| 白河县| 报价| 隆安县| 哈巴河县| 通道| 明水县| 南雄市| 灌阳县| 建宁县| 舒城县| 本溪市| 深泽县| 榆中县| 陇南市| 西安市| 邛崃市| 宜丰县| 手机| 招远市| 体育| 子洲县| 宁陵县| 洞头县| 马关县| 绥芬河市| 孟津县| 福贡县| 敖汉旗| 东宁县| 三门峡市| 邵阳市|