阅读:48872次
评论:39条
更新时间:2011-05-26
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,谢谢。
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采访
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:首先是我在前一家公司有用到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介绍
Dennis是Xmemcached 项目的创立者 dennis_zane,他做了大概4年JAVA开发,熟悉并发和网络,对技术很有热情,目前在国内著名大型网络公司就职。他刚做了爸爸,有一个6个半月大的儿子,他的头像就是他的可爱儿子。除了技术,他还是国际米兰球迷,喜欢看电影和打游戏,自称宅男。
dennis_zane:
访问 dennis_zane 的博客:http://dennis-zane.iteye.com/
dennis_zane:
访问 dennis_zane 的博客:http://dennis-zane.iteye.com/
9 楼 dennis_zane 2009-07-17 14:36
欢迎反馈BUG和建议
8 楼 gqf2008 2009-07-17 14:05
7 楼 gqf2008 2009-07-17 14:00
在低并发下,线程池+阻塞IO的模型确实更有优势,但是并发一上来,NIO的优势就出来了。
没错,高并发、短连接、网络有一定延时的情况下NIO有优势,但NIO不是意味着高性能,还是要看具体的应用场合。
6 楼 dennis_zane 2009-07-17 11:32
在低并发下,线程池+阻塞IO的模型确实更有优势,但是并发一上来,NIO的优势就出来了。
5 楼 gqf2008 2009-07-17 10:27
4 楼 gmizr 2009-07-17 08:35
3 楼 Arbow 2009-07-16 17:40
2 楼 yuan 2009-07-16 12:59
1 楼 lordhong 2009-07-16 12:08