写点什么

XMemcached——一个新的开源 Java memcached 客户端

  • 2009-10-21
  • 本文字数:1240 字

    阅读完需:约 4 分钟

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

2009-10-21 03:2110884

评论

发布
暂无评论
发现更多内容

如何处理分析Flink作业反压的问题?

华为云开发者联盟

实时计算 DWS Flink作业 反压 Sink

BOE(京东方)首度披露“千亿级西南战略” 全面布局物联生态

爱极客侠

centos7docker安装

happlyfox

Docker 学习 3月日更

Redis 如何应对并发访问

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

加码技术破圈创新,蚂蚁金融科技助力各行各业转型升级

Lily

CountDownLatch:别浪,等人齐再团!

王磊

Java 多线程

带你全面认识CMMI V2.0(四)——管理 赋能

IPD产品研发管理

项目管理 CMMI

爱奇艺大数据生态的实时化建设

Apache Flink

flink 实时计算

Rust从0到1-基础概念-控制流

rust 控制流

三天研读《中兴电路设计规范》精华总结

不脱发的程序猿

28天写作 电路设计 3月日更 中兴 中兴电路设计规范

C++中结构体的定义

Jack—Li

源码分析:Redisson分布式锁过程分析

程序员架构进阶

redis 源码分析 分布式锁 28天写作 3月日更

订单和产品的多对多表关系在crudapi系统零代码实现

crudapi

API crud crudapi 一对多 多对一

AI 事件驱动场景 Serverless 实践

Serverless Devs

Kubernetes 云原生 #Serverless

腾讯游戏实时计算应用平台建设实践

Apache Flink

flink

JVM 诊断之 jstat 工具使用

hepingfly

Java JVM jvm调优 jstat

NA(Nirvana) Chain主打应用而生NA公链NAC公链

区块链第一资讯

APP 防重放实现

草原狼

安全 API 防重放

CSP-J/S必备知识——文件输入输出

Jack—Li

有趣!一行代码居然无法获取请求的完整URL

Gopher指北

HTTP Go 语言

浅论指针(三)

Integer

c 指针

用 Go + WebSocket 快速实现一个 chat 服务

万俊峰Kevin

websocket go-zero Go 语言

已拿到6个Offer!主动分享成功秘籍:阿里巴巴Java面试参考指南(2021最新版)

比伯

Java 架构 面试 程序人生 技术宅

区块链推动知识产权数字化,区块链在知识产权中的价值体现

13828808769

区块链+ #区块链#

搭建 Mac 系统下的 C++开发环境

Jack—Li

面向复杂度架构设计的思考

Simon

架构实战营

BI大数据分析系统开发,助力企业数字化转型

13828808769

区块链 区块链+ #区块链#

SpringCloud技术专题-Hystrix以及FeginClient异常

码界西柚

SpringCloud Fegin

从两个模型带你了解DAOS 分布式异步对象存储

华为云开发者联盟

开源 对象存储 存储 分布式异步对象存储 NVM

Python OpenCV 之像素的加减法,取经之旅第 15 天

梦想橡皮擦

3月日更

kylin基本概念和原理

潮湿了我押韵的心情

XMemcached——一个新的开源Java memcached客户端_Java_霍太稳@极客邦科技_InfoQ精选文章