QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:2110741

评论

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

MySync——企点通用MySQL数据同步解决方案

腾讯企点技术团队

MySQL 数据库 日志 Binlog 同步

怎么选择好的web前端开发培训课程

小谷哥

JS class 并不只是简单的语法糖!

掘金安东尼

JavaScript 前端 设计模式 7月月更

一文了解 Nebula Graph 上的 Spark 项目

NebulaGraph

spark 图数据库 知识图谱 NebulaGraph

好书推荐|《产业数字化转型精要:方法与实践》

李洋

职业 数字化转型 数字经济 书籍 CIO的秘密武器

学习web前端开发有哪些好的方法

小谷哥

大数据培训机构怎么选?

小谷哥

Java培训如何选择靠谱

小谷哥

web前端开发技术就业前景怎么样

小谷哥

百问百答第47期:极客有约——中信建投当前的监控体系建设情况

博睿数据

智能运维 博睿数据 中信建投 监控体系 系统监测

SAP 实施项目中涉及到编程方式操作 Excel 的几种场景介绍

汪子熙

Excel automation SAP abap 7月月更

编程技巧│超实用 nginx 中常见的配置合集

nginx 运维 经验分享 7月月更

小程序技术解决桌面应用敏捷迭代的一种思路

Speedoooo

小程序 移动开发 小程序容器 桌面应用

LP双币质押流动性挖矿dapp系统开发逻辑分析

开发微hkkf5566

小李:“有没有特别简单的Python解密rsa的案例?”“还真有”

梦想橡皮擦

Python 爬虫 7月月更

LabView中禁用模块(属性节点)

一碗黄豆酱

巧用RoaringBitMap处理海量数据内存diff问题

得物技术

Java HBase BitMap

云原生、Intel Arch及云原生机密计算 3 大 SIG 在线分享!今天见 | 第 32-34 期

OpenAnolis小助手

开源 云原生 虚拟化 龙蜥大讲堂 SIG双周会

函数递归习题(easy版)

芒果酱

c++ C语言 7月月更

庖丁解牛,复盘 HiveServer2 连接频繁卡顿问题

移动云大数据

大数据 hive

火爆各平台的拼团功能,宝子们在多商户系统中玩过吗?

CRMEB

云原生(七) | Docker篇之深入Docker Compose

Lansonli

云原生 7月月更

百度APP Android包体积优化实践(一)总览

百度Geek说

Java 安卓

浅析 Apache Kafka 分区重分配的实现原理

移动云大数据

kafka 开源

嵌入式操作系统多任务调度原理分析与RUST参考实现

Geek_0185b7

DevOps 实践多年,最痛的居然是?

飞算JavaAI开发助手

SDL文字显示

柒号华仔

7月月更

性能领域:你知道的越多,不知道的也就越多

博文视点Broadview

大数据入门学习指南

Lansonli

大数据 7月月更 大数据基础 大数据基础知识 大数据核心

直播预告 | 多云时代如何建设企业云管理平台?

BoCloud博云

cmp 云管理平台 云管理

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