From: http://www.infoq.com/cn/news/2009/10/xmemcached-introduction
XMemcached是一个基于Java nio的memcached客户端。它线程安全,结构简单,支持所有的memcached文本协议和二进制协议,并且有比较优异的性能表现。它还支持一些高级特性,如JMX、动态增删节点、客户端统计以及nio连接池等。InfoQ中文站编辑采访了该工具的核心开发人员Dennis Zhuang。
和同类型的memcached客户端相比,XMemcached有什么特点?
与同是基于java nio的spymemcached相比来说,XMemcached具有以下特点:
1)API模型是同步,异步的API使用比较繁琐,在memcached协议加入noreply后,异步模型的存在价值就更可疑了;
2)支持设置memcached的节点权重;
3)支持动态增删节点,可以通过编程或者JMX;
4)支持nio连接池,并且允许让用户对网络层面有更多的控制,提供更多的性能优化选项;
5)支持客户端数据统计;
6)支持Kestrel,Kestrel是一个scala编写的MQ server。
有其他项目使用Xmemcached吗?他们有没有给你一些有价值的反馈?
因为xmemcached是在今年下半年才开始发展的,因此用户并不多,就我所知有rensea.com(人间网)、dii.cn(滴,一种聊天工具)以及一些企业的内部项目在使用。非常感谢他们的信任。
rensea.com的开发者给了我很大帮助,他们的持续使用给了我一些有价值的反馈,例如在1.2.0-stable刚发布的时候,由于引入了心跳检测,发现在特定场景下心跳检测会引起xmemcached的性能急剧下降,存储数据总是超时。最后通过查找发现是由于网络层在连接的idle判断条件上有遗漏。这个问题已经在yanf4j 1.0.1上及时修正。
XMemcached在哪些方面还需要改进,下一步你计划实现哪些功能?
XMemcached需要改进的地方有两个:文档和二进制协议的实现。文档很不完善,因为精力有限,我希望能补上更完善的用户指南。其次是二进制协议的实现,在效率上还有可以提高的地方。
另外,在*nix系统上,对于同一台主机的应用和memcached,使用unix domain socket可以进一步提高效率,这也是XMemcached准备探索的一个方向。由于Java不支持unix domain socket,可能需要通过JNI来实现。
在和人间网创始人兼CTO曹晓钢的沟通中,他谈到人间网不仅使用XMemcached连接到memcached服务器,也使用它连接到kestrel服务器,很稳定的支持了网站的需求。在选用Xmemcached之前,曹晓钢对几个类似的工具进行了评估:
主要的备选还有spy memcached和岑文初的memcache-client-forjava。开始的时候,我们选用的是spy memcached。他的问题在于因为使用异步模型,使用比较繁琐,代码量比较大;看过memcache-client-forjava的代码,觉得其中夹杂了一些不应该由memcached client实现的功能,例如客户端缓存,比较担心其会带来一些潜在的问题。
选中XMemcached的另外一个原因是其经过了仔细的性能调试。当然最根本的一个原因是,当我们和开发者接触后,开发者的支持很到位,反应迅速,代码质量也很高。经过实际的验证,最终我们选定了XMemcached。
有关Xmemcached项目的更多信息请浏览Google Code上的项目主页和wiki。
分享到:
相关推荐
Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。它的主要特点: 高性能,稳定可靠,已经在众多公司的众多项目里得到应用。 功能完备:客户端分布式、权重、最新最完整的协议支持。 ...
Spymemcached由Dustin Sallings编写,利用了Java 1.5引入的并发和NIO功能,提供了一个异步、单线程的客户端。它的优点在于存取速度较快,但在高并发环境下可能会遇到稳定性问题,如报告超时异常。适合对性能有较高...
3. **Java_memcached-release_2.6.6**:这个文件名可能是另一个Java Memcached客户端版本,比如Xmemcached。Xmemcached是一个高性能、线程安全的Java Memcached客户端,它支持异步操作,提供全面的API和配置选项。...
Memcached的java客户端已经存在三种了: 1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端。 较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。 2.spymemcached,支持异步,单线程的memcached客户端...
XMemcached 是另一个流行的 Memcached Java 客户端,它提供了更丰富的功能,如支持多线程、异步操作等。在项目中引入 XMemcached 的 JAR 包: ```xml <groupId>com.googlecode.xmemcached</groupId> ...
xmemcached是由Ketoo开发的一个高性能、高可用性的Java Memcached客户端。它提供了丰富的API,支持异步和同步操作模式,能够满足各种应用需求。以下是一些xmemcached的关键特性: - **高性能**:xmemcached利用NIO...
Xmemcached是另一个强大的Java Memcached客户端,提供了丰富的功能和高可用性。使用方法与Spymemcached类似,但API设计略有不同。 4. 使用Xmemcached创建客户端: ```java MemcachedClientIF client = new ...
2. **Java** - `spymemcached` 和 `XMemcached`:Java开发者可以使用 `spymemcached`,这是一个基于原生Memcached协议的高性能客户端,具有丰富的API和异常处理机制。`XMemcached` 提供了更多的高级特性,如异步操作...
测试类包括Xmemcached客户端与memcached client for java两者,可运行比较性能。 XMemcached简介: XMemcached是基于 java nio的Memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下...
Java社区提供了多种memCache客户端,如spymemcached、xmemcached、memcached-client等。其中,spymemcached是较常用的一款,它由Danga Interactive开发并开源,具有简单易用、性能稳定的特点。 ### 二、...
2. **Java客户端库**:为了在Java应用中使用memcached,我们需要一个客户端库,如spymemcached、xmemcached或者memcached-java-client等。这些库提供了与memcached服务器通信的接口和方法。 3. **安装与配置**:在...
首先,要连接到Memcached服务器,你需要一个Java客户端库。常见的有spymemcached和XMemcached。这里我们以spymemcached为例,因为它是社区中广泛使用的客户端之一。要添加spymemcached库,可以在Maven项目的pom.xml...
2. **初始化连接**:在代码中,首先需要创建一个Memcached客户端实例,通常使用Spymemcached或XMemcached等客户端库,指定memcached服务器的地址和端口。 3. **操作缓存**:现在你可以开始进行基本的缓存操作,如`...
xmemcached是一个高性能、易用且功能丰富的Java Memcached客户端库。它提供了全面的API,使得开发者能够方便地与Memcached缓存系统进行交互,从而提高Web应用的性能和响应速度。本文将深入探讨xmemcached的相关知识...
首先,我们需要创建一个`MemcachedClient`实例,连接到运行的Memcached服务器: ```java import net.spy.memcached.AddrUtil; import net.spy.memcached.MemcachedClient; import java.net.InetSocketAddress; ...
介绍XMemcached是Java中的一种高性能,易于使用的阻塞多线程memcached客户端。 它是基于nio的,并且经过了精心设计,以实现最佳性能。快速开始:有助于源代码并将其签出到本地计算机。 进行更改并创建拉取请求。 ...
虽然Java的memcached库已经很多,但是这些Java开源memcached库并没有一个是基于NIO框架编写,因此并不能够充分发挥Java NIO的性能优势.... xmemcached的项目主页在:http://code.google.com/p/xmemcached/
Xmemcached是一个高性能、线程安全的Java实现的分布式缓存系统,专为Memcached设计。这个库的主要目标是提供简单、快速、无阻塞的客户端API,以便于开发人员在Java应用程序中集成和利用Memcached的强大功能。下面将...
“memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...
3. **初始化Memcached客户端**:在Java代码中,将根据配置创建一个Memcached客户端实例。比如,使用spymemcached,代码可能如下: ```java MemcachedClientIF client = new MemcachedClient(new ...