感怀
一本历时2年的书即将出版难免有些激动,同时亦有些忐忑。激动在于这是一次有意义的社会实践,诸多作者参与其中。至完稿时,作者与发起计划时已有些不同。一些朋友因为各种原因退出了,所以从坚持的角度看,完成就意味着第一层面的成功。忐忑在于从初心出发,通读全稿仍有不足之处,诸位作者在具体实践中所遇到的线上问题远非本书所能尽数容纳。而最后精华的实践章节亦经过公司PR审核,略有删减。再一层,设计和编码很重要,运维管理同等重要。是否㓟好用、易用、稳定的运维工具支撑也是选择一套开源组件的重要参考因素,为了集中注意力,本书基本未覆盖运维部分的内容,且待有心人续之。写一本书,面世之后,作者或喜或忧,因为臧否之权利在于读者。
自觉而言,本书适合有一定研发经验的朋友阅读,它山之石,亦有攻玉之效。本书在逻辑上可分为三大篇章:基础概念篇、开源框架篇、应用案例篇。基础概念除了基础知识,也介绍了一些分布式方面的方法和思路;开源框架篇遴选了近年来流行的框架(比如Redis),同时对淘宝Tair、EVCache也做了一些探索。在Redis大行其道之时,对于memcached及其周边知识也做了介绍,某些公司还有大量的memcached实例,比如微博、Twitter等。工具的革新总是源自需求的不断被满足,而根据被满足的特性可以归纳其共性,比如解决单点高可用问题就是一个普适性问题,涉及主从模式、双活模式等,可用性同时又和性能、数据一致性相关。缓存为性能而生,但“缓存”设施的存在就决定了这个设施要符合分布式理论的要求。业界介绍理论和概要,或介绍设计原则的书不少,但拿出具体实践的稀有,比如新浪微博、Twitter这样的社交SNS具体如何设计缓存。简约而不简单!在应用案例篇,笔者邀请了对应领域的专家为大家解读案例,可以让大家触摸到真实的设计意图。重要的是大家可以获得不同场景下不同设计策略的启发。
参与本书作者有蚂蚁金服于君泽、渡鸦科技曹洪伟、蚂蚁金服邱硕、拍拍贷刘暻宇、爱农智惠程超、唯品会何涛、新浪微博陈波、时趣宋慧庆、京东张开涛、同程旅游王晓波。
推荐序
缓存技术的大规模使用是互联网架构区别于传统IT技术最大的区别,对缓存的理解和使用深度决定了是否能架构出一个高性价比,高扩展性的系统。阿里巴巴的系统大量的使用了缓存技术(内部缓存的产品名字叫Tair),有个指标是从07年开始缓存服务器的增长速度远远超过了数据库服务器规模的增长速度,而因为对缓存的充分使用,系统具备的吞吐量能力的增速则又远远高于缓存本身规模的增速,这是一件非常划算的事情,成本下降非常明显,大概一台缓存服务器的使用可以给整体集群带来3台服务器的节省。
缓存是代表了高性能的一项技术,同时缓存也是系统架构里非常核心的部分,一个系统缓存承担着90%以上的热点流量,缓存出一点点问题,系统的可用性会马上受到影响,一般在阿里巴巴的系统架构讨论会上,都会把做缓存产品的同事叫上,要求其在了解系统架构规模的前提下给出流量规模、分区方案、热点节点等方面的建议,负责缓存产品的同学往往也需要对业务有所了解,否则就不能设计出一个更好的产品。缓存的使用也使得架构更加清晰,更容易理解,流量走向变的更加简单,这对于系统持续可用性有了明显的提升。
本书比较系统的介绍了缓存在各个层面的原因,作用和价值,通过对缓存使用的理解,对架构一个高性能分布式系统有很大的帮助。
--阿里研究员小邪(蒋江伟)
无处不在的缓存,空间换时间的艺术
《分布式缓存》书序
Cache这个词,据说来自于法语,本意是当CPU处理数据时,先到Cache中去寻找,如果数据在之前的操作已经读取而被暂存其中,就不需要从主内存(Main memory)中读取。后来 Cache的范围有所扩大,凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,都称之为Cache。
现在,我们谈的缓存,已经远远突破了原有的概念,在我看来,缓存是一种通用的设计模式:这种模式利用增加存储空间的方式,实现低速部件与高速部件之间的解耦。换而言之,只要实现了解耦的地方,就有存在缓存的可能,既然解耦是计算机系统架构设计中最常用的手段,那么缓存就必将在计算机系统中无处不在。缓存是以空间换时间的方式解决问题,而空间不可能无限使用,使用缓存时我们通常会考虑如何选择存储方式,如何使用多级缓存节省空间,如何有效提高缓存的命中率,如何确定有效的更新策略等问题,这些思考会有相当普遍的适用性。
本书重点解读了分布式系统下如何使用缓存。分布式系统中大规模使用缓存是从早期互联网三大法宝(MemCache、反向代理、分库分表)开始的,利用这种集中式、大规模的缓存技术,我们解决了数据库低速IO与高速应用之间的矛盾。我们也发现,除了缓存的通用问题之外,分布式系统缓存还需要解决更多的问题,例如如何对多种类型数据选择不同的存储方式,如何保证数据一致性,如何提高缓存自身的可用性、如何增强系统的可维护性。为了系统性解决这些问题,分布式缓存越来越变成了分布式架构系统中的一个基础设施。
缓存的使用虽然广泛,但把缓存作为一种基础设施,发展历史并不长,大多数的商业化软件比较复杂,主要以内存数据库为主,而轻量型分布式缓存在不同场景下有不同的关注点和使用方式。右军集合了一批老司机,为大家展示了多种分布式系统中缓存的使用场景与方案,既有新浪微博这样重量级社交平台信息聚合、分发缓存方法,也有海量广告业务信息撮合的缓存模式,既有电商系统冷热数据分离的缓存策略,也有对完整分布式系统缓存的技术选型和总结。
通过分布式、微服务架构,实现业务的云化/数字化,建立起应用的生态,是一个复杂的体系结构,其中方方面面的著作很多,但专注在缓存方面还没有,右军选择了这个方向,就是希望能帮助我们形成一个完整的技术视图,我相信这是他们做这件事的初衷。
--普元信息CTO 焦烈焱
缓存为王
君泽人很低调也很友善,第一次和他见面还是在2016年的年底。2017年的春夏之交,当我正在机场为飞机晚点心烦不已的时候,收到了君泽的一条微信。内容是说他自己正在忙着准备一本书,而且把主要的章节内容发给了我。在百无聊赖之间我就读了起来。
这本书是君泽组织国内互联网技术领域具有实战经验的部分专家,分工合作联合撰写的技术专著。以最常用、最有效果也最容易出问题的缓存为主题。从基础概念、开源框架和应用案例三个层次进行了讨论。给我的感觉是既有理论也有实践,既有广度也有深度,既有国外的开源软件也有国内的具体实践案例,是非常值得深入阅读和细心揣摩的一本工具书。
给我印象比较深刻的是开篇的“缓存为王”,因为今年年初我也专门写过一篇同名的文章,论述了从网络靠近用户端的CDN,到内部网络缓存,到应用缓存,再到数据库缓存的一系列缓存手段、技术和方法。不敢说英雄所见略同,至少大家的关注点差不多。我还记得在当初的文章中用了一句耐人寻味的话,“解决雪崩问题的最好办法是不发生雪崩”。不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事。核心的解决方案大同小异,都是通过缓存,逐层减少流量的冲击,保护用户的体验和平台的服务可用。金融、财务行业有现金为王的说法,互联网技术行业用“缓存为王”清楚地概括了缓存的重要性。
这本书还深入浅出地讨论了Ehcache、Memcached、Redis、Tair、EVCache 等各种常用缓存开源系统的方案及精粹。我读过不少国外有关缓存的技术专著,大多数偏原则和理论,具体实施方案和案例较少,特别是结合中国互联网技术实践的更少。所以君泽组织的这本书实际上填补了缓存技术文献在这方面的空白。尤其是结合微博、社交和电商平台的应用实践探讨,对想学习如何利用缓存技术解决实践中具体问题的读者大有裨益。
--易宝支付CTO 陈斌
推荐语
本书围绕分布式缓存的基础概念、开源框架、应用案例三方面进行讲解,从理论到实战,循序渐进,深入浅出。看完部分章节后,意犹未尽,欲罢不能。国内这样真实应用案例的好书太少了,君泽以及他的朋友们填补了这一空白,十分期待这本书能早日上市。
—黄勇 特赞科技 CTO、《架构探险》作者
分布式缓存,是任何一个互联网公司在成长过程中都会面临的技术难题,本书作者结合理论研究和长期的互联网行业从业经验,深入浅出的介绍了分布式系统理论和分布式缓存实战,给业界以借鉴和启发,是作者的用心之作。
—朱攀 德比软件架构师
使用缓存是软件性能优化的大杀器,分布式缓存是网站架构的必杀技,玩转缓存就玩转了网站架构的半边天。遗憾的是目前市面上并没有专门讲述分布式缓存的书籍,幸运的是现在终于有一本这方面的专著,作者都是在网站架构一线多年实践的老司机,值得信赖,推荐给大家。
—李智慧 《大型网站技术架构:核心原理与案例分析》作者
从十几年前的ehcache到最近几年流行的Redis,从CDN、浏览器、API Gateway到后端微服务,以及数据访问层的二级缓存,缓存无处不在,在体验为王、唯快不破的时代,分布式缓存是关键。本书从理论到实践,详细剖析了分布式缓存的实现原理以及应用案例,是本接地气的好书。
—李林锋,华为PaaS平台架构师、 公司总裁技术创新奖获得者
随着现代应用对速度的要求变得越来越高,对缓存机制的使用也变得越来越常见、越来越频繁。这本《分布式缓存》以缓存机制的基本原理为开始,逐渐过渡至缓存系统的组建以及使用上面,全书分析和讲解了多个缓存系统,并列举了缓存的各种使用场景。如果你正准备构建自己的缓存系统,又或者你想要进一步地学习更多与缓存有关的知识,那么这本《分布式缓存》将是你不容错过的一本书。
—黄健宏《Redis设计与实现》作者
在计算机的世界里,不论硬件层面还是软件层面,缓存都被广泛的应用于解决处理响应慢的瓶颈。我们在构建微服务架构系统的时候也一样,缓存也是提升性能的关键技术手段。然而,缓存在不同场景下的应用都有所不同,如何用对缓存、用好缓存并不容易。本书针对不同的缓存类型、实现手段、算法策略做了非常细致入微的讲解,所以我推荐开发者和架构师们可以通过本书来对缓存做一次全面的学习,有助于更好的使用缓存来优化我们的系统性能。
—翟永超《SpringCloud微服务实战》作者
不同的存储介质,读写性能有很大的差异,价格亦是如此,性能越好的介质,价格就越贵,把最常访问的数据放在读写性能最好的设备上,达到成本和性能的均衡,这便诞生了缓存,本书的几位作者都是大型分布式环境下历练出来的沙场老将,丰富的经验和详实的案例,对于互联网行业的技术人员来说,颇有裨益。
—陈康贤 《大型分布式网站架构设计与实践》作者、阿里巴巴技术专家
缓存是互联网架构的最关键的环节,陈波在缓存的性能及高可用方面有丰富的经验,很高兴看到他通过本书分享了他在微博研发团队多年的实践精华。
—杨卫华 微博研发副总经理
互联网高性能系统设计的核心关键之一就是缓存系统的设计,本书集合缓存理论、开源缓存系统、大规模业务中缓存的具体实践,全方位解读了分布式缓存设计,既能够帮助读者深入理解分布式缓存系统,又提供了很好的架构设计案例供参考,细细品读,受益良多!
—李运华 阿里游戏资深技术专家 《面向对象葵花宝典》作者
点击“阅读原文”购书!