10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

MySQL 实现排名

黄大路

数据挖掘 MySQL 数据库 sql 数据分析

打造高颜值 iTerm2

辛晓亮

macos Mac 终端 terminal

TensorFlow On Flink 原理解析

Apache Flink

大数据 flink 流计算 实时计算

Kylin 在互联网公司的实践合集

程序员小陶

大数据 kylin

什么是实时数仓,与离线数仓的区别是什么?

程序员小陶

大数据 数据仓库 实时数仓

必要的革命:深层学习与可持续创新

山楂大卷

学习 好书推荐 创新 系统性思考 价值观

(乱记)“怎样培养优秀孩子”

启润

ONTAP 9 巡检模板

HU

0风险高收益的投资

Neco.W

学习 投资 自我提升

上下文切换的资源消耗

麻瓜镇

多线程 操作系统

Rust安装注意事项

邱张华

rust 镜像源 diesel

概念有时候很坑

伯薇

抽象 思考力 沟通 概念

死磕Java并发编程(9):无界线程安全队列ConcurrentLinkedQueue源码解析

Seven七哥

Java并发 jdk源码 队列

说说数据库主从同步延迟的一个解决方案

M1racle

数据库 主从同步

回“疫”录(14):跨越时空的相同选择

小天同学

疫情 回忆录 现实纪录 感恩

笔记:《如何系统思考》之系统基模

wiflish

思维方式

自助设备系列——菜品的自助识别结算

孙苏勇

人工智能 产品 行业资讯 智能设备

谈谈控制感(1):控制感与职业方向选择

史方远

嫌 OSS 查询太慢?看我们如何将速度提升 10 倍!

苏锐

大数据 性能优化 数据湖 OSS 对象存储

CentOS 6 升级 OpenSSH 8.1p1

wong

centos openssh

阅读有术:怎么记住书中的内容

子不语

学习 方法论 读书方式

SpringBoot前后端分离项目,集成Spring Security(完整版)

读钓

Java spring Spring Boot spring security

01-Taro打造hello-world应用

页面仔小杨

小程序 微信小程序 taro

一个关于成长的经验公式

oldj

成长

真特么是个好东西

非著名程序员

程序员 效率工具 写作

深入解读 IaaS、PaaS、SaaS

燕陈华

IaaS PaaS SaaS

在线修改主从复制选项

Simon

MySQL

为什么我们要工作

黄大路

思考 工作

引入了绩效管理,团队反而一天不如一天了?(二)

Geek_6rptuk

团队管理 企业文化 绩效

实时数仓 | 你需要的是一款强大的 OLAP 引擎

程序员小陶

大数据 OLAP

高仿瑞幸小程序 07 为你推荐模块

曾伟@喵先森

小程序 微信小程序 大前端

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