Memcached 在大型网站被应用得越来越广泛,不同语言的客户端也都在官方网站上有提供,但是 Java 开发者的选择并不多。这也是为什么本文作者决定自己封装优化 Memcached 的 Java 客户端的原因,本文主要介绍了该客户端的封装优化历程。
文章开篇介绍了 MemCached 是什么。有很多开发人员将其看做是一种分布式缓存系统,但是作者并不这么认为,他介绍说:
其实 Memcached 服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是 Memcached 服务端的一个或者多个实例,如果将客户端也囊括到 Memcached 中,那么可以部分概念上说是集中式的。
然后从内存存储、集中式缓存、分布式扩展、Socket 通信、特殊的内存分配机制和客户端的重要性等方面对 Memcached 做了深入的介绍。随后作者从对 Memcached 官方推荐的 Java 客户端之一 Whalin 进行封装开始,介绍了整个整个优化过程。压力测试比较结果显示不论是在易用性和性能上,优化的客户端都有很大程度上的提高。
难得可贵的是,作者现在已经将该优化客户端的源代码、范例和说明等资料发布在 Google Code 上,有兴趣的朋友可以阅读查看。
详细内容,请阅读全文:缓存系统 MemCached 的 Java 客户端优化历程。
更多内容推荐
Redis Cluster 你弄明白了吗?
上一篇文章我们聊到客户端分片(Redis Sharding)技术,这里我们接着聊一下Redis Cluster这种服务端分片的解决方案。我对服务端分片的理解是对1)具体数据片数如何实现;2)服务端的数据的存储、迁移;3)数据分片的高可用对客户端来说就是透明无感的。
2020 年 11 月 1 日
一次线上 JVM 调优实践,FullGC40 次 / 天到 10 天一次的优化过程
通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。
2020 年 10 月 15 日
服务端缓存选型:Redis、Memcached 的区别与技术选型
2020 年 5 月 21 日
ASP.NET 2.2 Preview 1 首次支持 Java SignalR 客户端
微软的Sourabh Shirhatti宣布ASP.NET Core 2.2的第一个预览版已经发布。有兴趣在本地机上尝鲜的开发人员可以从相关来源下载预览版。
Java 容器化部署:从应用服务器到云原生
演讲嘉宾张建锋,永源中间件共同创始人,原红帽公司 JBoss 应用服务器核心开发组成员。毕业于北京邮电大学和清华大学,曾供职于金山软件,IONA 科技公司和红帽软件。内容介绍Java 容器化部署–从应用服务器到云原生当前已经进入云计算容器化时代,Java 作为主要的软件编程语言,存在着内存占用较大,启动时间久等问题。原有的 JavaEE 应用程序如何进行微服务改造,又如何适应云原生技术要求呢?容器技术发展到现在已经较为成熟,软件架构如何设计,才能更好的运行在容器中?我们通过技术分析和实例说明,来阐述 Java 应用如何更好的实现容器化部署。演讲大纲 应用服务器中 JavaEE 部署方式; Rest 服务接口和单页应用成为主流; 微服务改造后的软件架构; 容器化管理和服务编排; 应用服务器中 Java 应用组件和 Kubernetes 管理的软件组成,功能具有相似性; 利用 GraalVM 使 Java 应用本地化; Quarkus 项目开发云原生 Java 应用,其核心技术原理; 构建 Serverless 服务平台。
2019 年 6 月 11 日
JVM 的早期优化与晚期优化
最近重新翻开《深入理解Java虚拟机》,看到肥壕三年前留下的稚嫩的笔记,感叹道年轻真好。再次重新阅读 “早期优化与晚期优化”的章节,来自内心的拷问: 我的天!!!我是失忆了吗???三年前我看的是什么???我当时是脑子进水了???
2020 年 8 月 30 日
缓存分类(一):客户端缓存的分类和介绍
2020 年 4 月 30 日
三年 JAVA 开发经验,字节四面成功拿下 2-2Offer,入职就是 30K16 薪
当你准备跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是两个字——凉凉!而在如今的市场,什么多线程、高并发、分布式、负载均衡、集群、微服务等等等等,都可说是Java高级后端开发求职的必备技
2021 年 1 月 5 日
Perfect:Swift 语言服务端开发工具包
Perfect是一个使用Swift编程语言开发Web和其他REST服务的框架,其主要目标是简化需要后端服务器软件的移动应用的开发,使开发人员可以使用同一种语言进行客户端和服务端开发。
Facebook 宣布放弃 Java 支持
日前,著名社交网站Facebook在其开发者网站上宣布不再为其官方Java客户端库提供支持,并称此举是为了改进整个Facebook平台的体验。社区对此反响不一。
为什么 HTTPS 需要 7 次握手以及 9 倍时延?
我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。
缓存系统 MemCached 的 Java 客户端优化历程
Memcached在大型网站被应用得越来越广泛,不同语言的客户端也都在官方网站上有提供,但是Java开发者的选择并不多。这也是为什么本文作者决定自己封装优化Memcached的Java客户端的原因,本文主要介绍了该客户端的封装优化历程。
Kotlin 与 Java 完全兼容,就可以随便调用了吗?
无
2018 年 7 月 9 日
文章:案例研究之 Lawson 并购产品线的架构集成
Lawson与Intentia在2006年的合并,迫使开发人员不得不面对一大难题——如何实现现有众多采用了不同技术的业务系统的集成。本文是这一高难度集成项目的经验总结。
钉钉企业级 IM 存储的挑战与实践
作为ToB产品,钉钉具备独特的业务场景。首先是超级大群,在钉钉上,企业的组织关系可映射到 IM 的群。例如全员群就是包含企业所有员工的一个群。这带来为数众多的超级大群。在节假日时期,特别是元旦、春节或者双11这样的重大活动,老板和员工在群里高频互动,给 IM 存储系统带来巨大的压力。第二是聊天数据长期保存,历史消息可实时回溯。与 ToC 的消息所不同的是,钉钉的聊天数据属于企业资产,需要长期保留。随着钉钉体量迅速增长,面临着存储容量扩展瓶颈,存储成本高昂等问题。第三是稳定性要求高。一旦钉钉的消息发不出去或者收消息出现延迟,会大面积影响企业的核心业务运转。从历史经验来看,存储恰恰是非常容易出问题的依赖。面对上述挑战,我们将IM存储模型从写扩散升级为读写扩散混合,减少超级大群对存储的扩散量;与阿里自研的 X-Engine 存储引擎共创,实现了一个低成本,适应钉钉IM业务的冷热存储架构;同时通过存储冗余,应对高稳定性的要求。本次分享系统介绍我们的解决思路和关键细节,希望可以让你有所收获。讲师介绍劲弩,主要负责钉钉 IM 的存储架构优化、成本控制和消息发送稳定性保障。2016年加入钉钉,擅长高可用、低成本的企业级系统架构,对钉钉 IM 的技术演进深有体会。
2020 年 1 月 3 日
阿里 P8 大牛爆肝的《Java 核心技术总结》+《面试题总结》简直赞爆了
是的,你没看错,在 Java 核心基础总结的基础上,作者又淦了一本 Java V2.0,它不是第一版的升级版本,而是第一版的补充,第二版适合有一定基础的同学阅读,当然第一版作者也遗漏了很多东西,这些东西作者后面肯定会予以完善和总结,来为你呈现出一个完整 的
2020 年 10 月 6 日
Redis Cluster 宕机引发的事故
本文转载自技术琐话公众号
为什么 Redis 6 只支持 RESP3 ?
我想解释为什么我要做出这个决定,以及如何减轻用户和客户端库作者的问题。
在 Spring 中访问 Redis
2019 年 2 月 27 日
推荐阅读
微服务查询语言 restQL 已在 GitHub 上发布
七牛存储运维实践
2018 年 12 月 26 日
给类和方法加 Java 注释
2019 年 6 月 3 日
使用接口隔离原则优化 Cache 类的设计
2020 年 6 月 16 日
PHP 安全专题:序列化及反序列化漏洞
2020 年 10 月 15 日
谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒
2020 年 6 月 8 日
AJAX 应用的客户端负载均衡问题探究
电子书
大厂实战PPT下载
换一换 郭翔 | 腾讯 高级前端工程师
康德胜 | 众安保险 CTO
赵健博 | 快手 高级架构师、大数据架构团队负责人
评论