xmemcached 1.3.4 正式发布
openkk 13年前
<p></p> <div id="p_fullcontent" class="detail"> <p>Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。</p> <p>实际上是基于我实现的一个nio框架Yan4j的基础上实现的(目前是基于yanf4j 0.61-snapshot),序列化机制使用spymemcached的Transcoder并做了部分改造。</p> </div> <p><span style="font-weight:bold;">项目地址:</span><a style="font-weight:bold;" href="/misc/goto?guid=4958189573425465478" target="_blank">http://code.google.com/p/xmemcached/</a></p> <p><br /> xmemcached发布1.3.4版本,主要改进如下:</p> <p>1、修复一个相对严重的bug,在解析二进制协议时如果遇到从服务端返回的错误信息,会导致连接异常断开;如果你没有使用binary协议,不会遇到此问题。建议使用xmemcached并且使用二进制协议的朋友升级到此版本。</p> <p>2、允许XMemcachedClientFactoryBean配置opTimeout选项。</p> <p>3、添加RoundRobinMemcachedSessionLocator,轮询的连接选择器,仅用于kestrel或者memcacheq集群,这些应用都不要求同一个key要保存在固定的服务器上,而仅是作为集群分担负载。</p> <p>4、KetamaMemcachedSessionLocator添加额外选项,允许配置是否兼容 nginx-upstream-consistent,这个是网友 wolfg1969贡献的patch。如果要使得xmc的一致性哈希算法兼容nginx-upstream-consistent,只要设置 cwNginxUpstreamConsistent为true即可,示范代码:</p> <p>MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(servers));<br /> builder.setSessionLocator(new KetamaMemcachedSessionLocator(true));</p> <p>5、修复bug,包括<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="'Typo in INFO message: log.info(" creating="" "="" +="" selectorpoolsize="" rectors...");'"="" href="/misc/goto?guid=4958189574184920382">issue 132 </a>,<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="Counter的问题,请确认是否为BUG" href="/misc/goto?guid=4958189574909499590"> issue 142 </a>,<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="XMemcachedClientFactoryBean doesn't allow overriding of certain client properties" href="/misc/goto?guid=4958189575648049374"> issue 133 </a>,<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="Network layout exception" href="/misc/goto?guid=4958189576388174197"> issue 139 </a>,<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="Counter的问题,请确认是否为BUG" href="/misc/goto?guid=4958189574909499590"> issue 142 </a>,<a style="color:#006699;text-decoration:underline;" class="closed_ref" title="为配合nginx-upstream-consistent模块做了一个patch" href="/misc/goto?guid=4958189577809419532"> issue 145 </a>,<a style="color:#006699;text-decoration:underline;" title="'Throw " not="" a="" proper="" response"="" memcachedexception="" when="" using="" binary="" protocol'"="" href="/misc/goto?guid=4958189578542827280">issue 150</a>等。</p> <p><strong>memcached</strong>是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但目前被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权释出。</p> <p>memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。</p> <p>memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。</p> <p>memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/</p> <p></p>