阅读更多
xmemcached是最近频繁出现在JavaEye新闻频道的热点词汇,它就是JavaEye的资深会员Dennis开发的基于java nio实现的高性能可扩展的memcached客户端。

Dennis 在自己实现的一个nio框架 http://code.google.com/p/yanf4j/ 的基础上实现了xmemcached项目(目前1.1.3是基于yanf4j 0.7.0),xmemcached的序列化机制使用spymemcached的Transcoder并做了部分改造。 因此xmemcached的性能好于目前其他的Java memcached库。

xmemcached的项目主页在:http://code.google.com/p/xmemcached/

有关xmemcached的新闻请看:http://www.iteye.com/news/search?query=Xmemcached


欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,发站内短信给JavaEye管理员或者发信到webmaster@iteye.com,谢谢。

xmemcached作者Dennis采访 Top

JavaEye:Dennis,你可以介绍一下自己为什么要开发xmemcached项目吗?

Dennis:首先是我在前一家公司有用到memcached,期间我接触了spymemcached,读了它的源码,我对他的设计不是很感冒,它没有一个比较清晰的网络层,想改动也比较困难。其次,我那时候刚接触网络编程没多久,也需要一个练手的项目。第三,我对memcached client有一些自己的想法想实现,而spy不提供。

JavaEye:xmemcached主要有哪些特点呢?能简单介绍一下xmemcached吗?

Dennis:xmemcached是基于java nio的高性能memcached客户端, xmemcached主要特性是:

第一:同步API,我觉的异步的API难以使用,同步模型比较利于客户端编程,并且在memcached协议支持noreply之后,异步API的优势也没有了。

其次:xmemcached也是多线程安全的,这一点跟spy一样。

第三:xmemcached支持JMX监控,支持动态添加、移除memcached节点,这个特性spy暂未支持。

第四:xmemcached支持设置节点的权重,spy也暂未支持(我要确认下,好像最新的支持了)。

第五:xmemcached支持客户端的数据统计,memcached有提供自身的数据统计,但是客户端的统计还需要client来做,因为客户端可能连接多个节点。

第六:就是性能上的优势了,这个可以看我的测试报告: http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html。另外就是支持全部文本协议和分布,这个是一个client必备的,就不说了。

JavaEye:能详细比较一下xmemcached项目和其他Java memcached client吗?xmemcached的优点是什么?性能表现优势有多少?

Dennis:首先,基于nio这一点,可以在性能上跟传统基于阻塞io的client拉开差距,官方提供的client的性能是比较糟糕的,并且有隐藏的BUG, 其次,xmemcached有一个特性我想是比较关键的,就是对于动态增删节点的支持,可以做到不停机而动态地扩容, 然后,就是在代码结构上,我认为相对于spy来说是比较清晰的,借助于yanf4j,将逻辑处理跟网络的处理拆分的比较清楚。 另外,我想提供JMX支持这一点,是我想出来的:)

JavaEye:xmemcached未来的roadmap是什么?

Dennis:在开始项目时,我并没有明确的目标,因为那时候更多是自娱自乐。不过最近开始有用户在真实的项目中使用,因此多了一份责任感。 那么,现在一个比较明确的目标是,提供spy之外的另一个选择。这本身对spy也有促进:),本来那作者不支持权重的,现在要加入这一特性了。短期目标,1.2版本支持二进制协议,memcached 1.4.0正式发布,二进制协议估计对性能有比较大的影响,需要做评估。长期目标是做一个易于使用的、高性能的java memcached client。

JavaEye:xmemcached项目诞生多长时间了,现在你平均每天花在xmemcached上的时间是多久?

Dennis:没有每天,一般我晚上有空,并且不烦的情况下就去捣鼓,周末比较多,通常都会在3,4个小时以上。平均下来,我想没超过一个小时,呵呵。

JavaEye:这个项目从什么时候开始,到现在几年了?目前xmecached是你一个人开发?还是有其他contributor?

Dennis:这个项目开始于09年初,具体时间没印象了,现在就我一个开发者。我很欢迎有兴趣的朋友加入。

JavaEye:通过开发xmemcached,你对中国的软件开发人员做开源项目有什么感受和想法吗?

Dennis:事实上,我从不敢宣称自己是在做开源项目,你看我发的新闻,blog,从来没有提供开源这两个字。我更多认为是在分享,分享我学习到的东西。而我学习到的东西,又是来源于众多的开源项目。(JavaEye:太谦虚了。)认为不要一开始就抱一个做什么的想法,这个项目一开始更多是自娱自乐,真不啥谦虚。对开源,在路上想了下,我觉的对于我这样的个人开发者,其实有很多人是有想法的,想做些东西,就是缺乏行动,那么如果一开始不把目标定的那么高,那么明确,先从自娱自乐的目的开始,会更容易坚持下去。开源并没有成为我的负担,我觉的对我个人是一个促进,你做出来的东西有人要用,你就要负责了。如果说负担,那是谈不上,我是因为有乐趣在里面才做他。

JavaEye:作为一个JavaEye的老会员,你对JavaEye网站有什么建议和意见吗?


Dennis:我觉的博客有很大的改进余地,内容上是最主要的问题,真正有价值的文章很难被顶上来,而标题党和噱头的文章就很热门。功能,主要是博客的样式可以改进,确实不怎么好看,呵呵。我建议可以分区,将八卦和生活类与技术类内容分开。

JavaEye:是的,我们有对博客内容分类的开发计划,未来会实现,非常感谢您的建议,非常感谢您今天接受我们的采访。谢谢。

Dennis介绍 Top

Dennis是Xmemcached 项目的创立者 dennis_zane,他做了大概4年JAVA开发,熟悉并发和网络,对技术很有热情,目前在国内著名大型网络公司就职。他刚做了爸爸,有一个6个半月大的儿子,他的头像就是他的可爱儿子。除了技术,他还是国际米兰球迷,喜欢看电影和打游戏,自称宅男。 

dennis_zane


访问 dennis_zane 的博客:http://dennis-zane.iteye.com/



评论 共 35 条
35 楼 ayanami001 2012-05-22 14:40
NIO是个好东西~
34 楼 yangforward 2012-04-29 16:41
我的项目正在使用,很不错,感谢
33 楼 frank1998819 2011-07-20 14:33
  
32 楼 bbbbb1202 2011-06-24 08:58
31 楼 ahopedog2 2011-06-09 23:22
强烈支持,希望继续坚持,Dennis的行动力确实很强,值得佩服。
30 楼 chrrity 2011-06-06 14:37
国米球迷报道,最近也在搞memcached,先研究一下这个
29 楼 phoenixup 2011-06-03 17:15
eltonto 写道
感觉这个东东不好使。。

我的项目中就在使用xmemcached,而且yanf4j很简洁清晰~~
28 楼 罗卜头 2010-09-01 03:58
宅男废纸
27 楼 eltonto 2010-07-09 16:23
感觉这个东东不好使。。
26 楼 laonao 2010-01-15 13:47
25 楼 摆渡人 2009-10-14 14:29
这里也有一个
http://www.javaeye.com/topic/246729

也是对memcached的二次开发。

不知是否各有的优势方向不同呢
24 楼 dennis_zane 2009-09-26 20:19
zqrain 写道
性能测试报告中好像没有与http://code.google.com/p/memcache-client-forjava/比较的数据,能否帖出来看看?

其中的asf-memcached就是了。
23 楼 zqrain 2009-09-26 19:05
性能测试报告中好像没有与http://code.google.com/p/memcache-client-forjava/比较的数据,能否帖出来看看?
22 楼 dennis_zane 2009-09-13 23:14
lonelybug 写道
自己国人兄弟的项目,自己人不支持,谁支持!?

可是,不知道,这位仁兄能不能给一个系统结构还有类关系的图,这样比较好明白代码。

请参考这里
http://www.blogjava.net/killme2008/archive/2009/08/26/292674.html
21 楼 lonelybug 2009-09-13 21:26
自己国人兄弟的项目,自己人不支持,谁支持!?

可是,不知道,这位仁兄能不能给一个系统结构还有类关系的图,这样比较好明白代码。
20 楼 xahaowen 2009-08-22 11:29
好东西看起来兴奋,支持!!
19 楼 pan_java 2009-08-17 18:01
相关文档太少了,注解不全,希望完善!
18 楼 hankesi2000 2009-08-14 08:59
不知道有没有个小组、圈子啥的啊?我一直在学习线程、IO、cache相关的知识,很多用不在项目中的技术,都不能很好的得到更深层的学习
17 楼 constant 2009-07-30 09:55
强人,膜拜.
16 楼 dennis_zane 2009-07-23 14:53
vagrant1984 写道
只支持最新的memcached版本吧,我用memcached win32的1.2版本跑测试例子,报不正确的命令错误

这个怎么说呢,xmemcached支持最新的,也兼容过去的。如果你使用老版本的memcached,又想使用新版本memacched的一些协议,那当然不行了。具体查看你的memcached都支持些什么协议吧,这个问题跟xmemcached一点关系也没有。
15 楼 vagrant1984 2009-07-23 10:36
只支持最新的memcached版本吧,我用memcached win32的1.2版本跑测试例子,报不正确的命令错误
14 楼 C_J 2009-07-22 18:16
Support!!
13 楼 gqf2008 2009-07-20 13:35
dennis_zane 写道
gqf2008 写道
发现一个问题,shutdown后线程没停止

说下场景吧,我没有复现这个问题,可能你跑的是Example,Example有个长时间的sleep

我错了,是我的线程池没关
12 楼 rain2005 2009-07-17 15:40
我也正在研究NIO和并发方面的知识,希望以后可以讨教。
11 楼 dennis_zane 2009-07-17 15:03
gqf2008 写道
发现一个问题,shutdown后线程没停止

说下场景吧,我没有复现这个问题,可能你跑的是Example,Example有个长时间的sleep
10 楼 gqf2008 2009-07-17 14:52
发现一个问题,shutdown后线程没停止
9 楼 dennis_zane 2009-07-17 14:36
gqf2008 写道
刚刚把spy替换成了x,性能确实有很大提高,谢谢dennis_zane。

欢迎反馈BUG和建议 
8 楼 gqf2008 2009-07-17 14:05
刚刚把spy替换成了x,性能确实有很大提高,谢谢dennis_zane。
7 楼 gqf2008 2009-07-17 14:00
dennis_zane 写道
gqf2008 写道
nio在本地网络中并没有什么优势

在低并发下,线程池+阻塞IO的模型确实更有优势,但是并发一上来,NIO的优势就出来了。

没错,高并发、短连接、网络有一定延时的情况下NIO有优势,但NIO不是意味着高性能,还是要看具体的应用场合。
6 楼 dennis_zane 2009-07-17 11:32
gqf2008 写道
nio在本地网络中并没有什么优势

在低并发下,线程池+阻塞IO的模型确实更有优势,但是并发一上来,NIO的优势就出来了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • HTML5+CSS3小实例:手机充电特效(二)

    HTML5+CSS3小实例:手机充电特效(二)技术栈:HTML+CSS效果:源码:

  • CSS 滤镜实现安卓充电动画效果

    这个是安卓手机在充电的时候的效果,经过一番尝试,发现使用 CSS 也是可以很好的。模拟这种动画效果: 单独将两个滤镜拿出来,它们的作用分别是: filter: blur(): 给图像设置高斯模糊效果。 filter: contrast(): 调整图像的对比度。

  • Xmemcached 缓存开源项目源码及API

    基于java nio实现的高性能可扩展的memcached客户端。虽然Java的memcached库已经很多,但是这些Java开源memcached库并没有一个是基于NIO框架编写,因此...xmemcached的项目主页在:http://code.google.com/p/xmemcached/

  • Java的开源高性能memcached客户端XMemcached.zip

    高性能,稳定可靠,已经在众多公司的众多项目里得到应用。 功能完备:客户端分布式、权重、最新最完整的协议支持。 可扩展,易于集成 可动态增删memached节点 客户端操作统计 NIO...

  • xmemcached详解

    变更历史XMemcached简介XMemcached的主要特性 高性能支持完整的协议支持客户端分布允许设置节点权重动态增删节点支持JMX与Spring框架和Hibernate-memcached的集成客户端连接池可扩展性 使用指南 依赖包如果你...

  • xmemcached发布1.3.6

    开源的memcached Java客户端——xmemcached发布1.3.6版本。 主要改进如下: 1. 为MemcachedClientBuilder添加两个新方法用于配置: publicvoidsetConnectTimeout(longconnectTimeout);publicvoidsetSanitizeK...

  • xmemcached发布1.3.2版本

    Xmemcached是一个开源的java memcached client,具有高性能、更易用、功能完善等优点,距离上次发布1.3.1已经超过两个月,现在正式发布1.3.2这个新版本,主要的改进如下:1、Bug修复,从1.3.1版本以来发现的bug并...

  • 中国优秀开源项目

    B3log包括了个人博客(B3log Solo)、社区论坛(B3log Symphony)、兼容云平台的开发框架(B3log Latke)等开源项目。 当前11票 bboss bbossgroups是国内首款集AOP、MVC、持久层、JSP标签...

  • java xmemcached incr_xmemcached的使用

    转载http://www.voidcn.com/blog/u010408365/article/p-4972896.htmlxmemcached主要特性高性能XMemcached同样是基于java nio的客户端,java nio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较...

  • Xmemcached开源组件

     在项目中使用memcached处理缓存问题,发现一个用法差不过的开源组件据说,性能比较好,就随便看看,学习学习。  memcached之memcached介绍---------现在许多web应用都将数据保存到RDBMS中,应用服务器从中读取...

  • XMemcached

    XMemcached小使用 目录 1 简介 1 1.1 XMEMCACHED 1 2 XMEMCACHED的特性 1 2.1 高性能 1 2.2 支持完整的协议 1 2.3 支持客户端分布 1 2.4 允许设置节点权重 1 2.5 动态增删节点 1 2.6 支持JMX 2 ...

  • 一些开源项目记录

    #Core ##Apache Commons Lang 介绍:Apache’s library that provides a host of helper utilities for the java.lang API, such as String manipulation, object...

  • 分布式java缓存 XMemcached 介绍

    User_Guide_zh  用户指南 0.4版本  Phase-Support, UserGuide, 用户指南, Featured ...变更历史XMemcached简介XMemcached的主要特性 高性能支持完整的协议支持客户端分布允许设置节点权重动态增删节点支持

  • XMemcached 中文api

    变更历史 2010-06-22 添加客户端分布和SASL验证两节,更新spring配置一节。 2010-06-23 添加maven依赖说明 2010-10-17 1.2.6 released 2011-01-04 1.3 released。...XMemcached是一个新java memcached client

  • java之XMemcached使用及源码详解

    通过XMemcached的API调用与Memcached的set/get命令对比及跟踪XMemcached源码,使大家对XMemcached的API有更深层次的理解,能够从底层上去了解其工作原理,从而能在项目中进行一些针对性的接口封闭及优化工作。...

  • 我收藏的开源项目

     项目介绍  点评:查看这个项目,可以参考 动态数据库 适配   2) smart-framework Smart Framework 详细介绍  点评:Smart Framework 是一款轻量级 Java Web 开发框架,基于“核心 + 插件”的体系架构。不使用 ...

  • Xmemcached用户指南

    Xmemcached用户指南 一、XMemcached简介 XMemcached是一个新java memcachedclient。也许你还不知道memcached是什么?可以先看看这里。简单来说,Memcached 是一个高性能的分布式内存对象的key-value缓存系统,...

  • XMemcached API

    变更历史XMemcached简介XMemcached的主要特性 高性能支持完整的协议支持客户端分布允许设置节点权重动态增删节点支持JMX与Spring框架和Hibernate-memcached的集成客户端连接池可扩展性 使用指南 依赖包如果你使用...

  • xxljob从入门到精通-全网段最全解说

    其实网格计算:grid computing早在7,8年前就已经被提出过,我在《IBM网格计算与企业批处理任务架构》一文中详细有过介绍。 我们在一些项目中如:银行、保险、零商业门店系统中的对帐、结帐、核算、日结等操作中经常...

  • xmemcached作者Dennis采访(转)

    xmemcached是最近频繁出现在JavaEye新闻频道的热点词汇,它就是... Dennis 在自己实现的一个nio框架 http://code.google.com/p/yanf4j/ 的基础上实现了xmemcached项目(目前1.1.3是基于yanf4j 0.7.0),xmemcach...

Global site tag (gtag.js) - Google Analytics