7.3单机处理逻辑171

7.3.1多路复用171

7.3.2定时任务处理173

7.4持久化174

7.4.1基于全量模式的持久化174

7.4.2基于增量模式的持久化176

7.4.3基于增量模式持久化的优化178

第8章分布式Redis180

8.1水平拆分(sharding)181

8.1.1数据分布181

8.1.2请求路由182

8.2主备复制(replication)182

8.2.1主备复制流程183

8.2.2断点续传183

8.3故障转移(failover)184

8.3.1sentinel间的相互感知185

8.3.2master的故障发现186

8.3.3failover决策186

8.4Redis Cluster187

8.4.1拓扑结构187

8.4.2配置的一致性188

8.4.3sharding190

8.4.4failover193

8.4.5可用性和性能196

第9章Tair探秘198

9.1Tair总体架构198

9.2Config Server简介199

9.3Data Server简介201

9.4Tair高可用和负载均衡204

9.4.1对照表204

9.4.2数据迁移219

9.5存储引擎220

9.6Tair的API222

9.6.1key/value相关API223

9.6.2prefix相关的API226

第10章EVCache探秘229

10.1EVCache项目介绍230

10.1.1EVCache的由来231

10.1.2EVCache的发展232

10.1.3EVCache的演进234

10.2EVCache 的使用场景238

10.2.1典型用例238

10.2.2典型部署239

10.3EVCache的性能240

10.3.1EVCache集群的性能240

10.3.2全局化复制时的性能问题242

10.3.3Moneta项目中的组件性能243

10.4EVCache 的高可用性244

10.4.1AWS的多可用区244

10.4.2EVCache对AWS高可用性的增强245

10.5源码与示例245

10.5.1源码浅析245

10.5.2EVCache 示例253

第11章Aerospike原理及广告业务应用259

11.1Aerospike架构259

11.2Aerospike具体实现261

11.2.1Aerospike集群管理261

11.2.2数据分布263

11.3Aerospike集群配置和部署265

11.3.1搭建集群的方式与配置266

11.3.2部署集群267

11.4Aerospike与Redis的对比271

11.5Aeropsike在广告行业的具体应用272

11.5.1Aerospike在个性化推荐广告中的应用273

11.5.2Aerospike在实时竞价广告中的应用274

第12章社交场景架构进化:从数据库到缓存283

12.1社交业务示例283

12.1.1业务模型283

12.1.2业务场景284

12.1.3业务特点285

12.2关系(relation)的存储286

12.2.1基于DB的最简方案286

12.2.2DB的sharding方案288

12.2.3引入缓存290

12.2.4缓存的优化方案292

12.3帖子(post)的存储293

12.3.1基于DB的方案294

12.3.2引入服务端缓存296

12.3.3本地缓存297

12.4时间线(timeline)的存储297

12.4.1基于DB的方案—push模式298

12.4.2基于DB的方案—pull模式300

12.4.3增量查询引入服务端缓存302

第13章缓存在社交网络Feed系统中的架构实践304

13.1Feed系统架构304

13.2Feed缓存模型307

13.3Feed缓存架构的设计309

13.3.1简单数据类型的缓存设计310

13.3.2集合类数据的缓存设计312

13.3.3其他类型数据的缓存设计314

13.4Feed缓存的扩展 315

13.4.1Redis的扩展315

13.4.2计数器的扩展316

13.4.3存在性判断的扩展318

13.5Feed缓存的服务化319

第14章典型电商应用与缓存324

14.1电商类应用的挑战及特点324

14.2应用数据静态化架构高性能单页Web应用325

14.2.1整体架构326

14.2.2CMS系统326

14.2.3前端展示系统328

14.2.4控制系统328

14.3应用多级缓存模式支撑海量读服务329

14.3.1多级缓存介绍329

14.3.2如何缓存数据331

14.3.3分布式缓存与应用负载均衡332

14.3.4热点数据与更新缓存334

14.3.5更新缓存与原子性336

14.3.6缓存崩溃与快速修复336

14.4构建需求响应式亿级商品详情页337

14.4.1商品详情页前端结构338

14.4.2单品页技术架构发展338

14.4.3详情页架构设计原则343

14.4.4遇到的一些问题349

第15章同程凤凰缓存系统基于Redis的设计与实践357

15.1同程凤凰缓存系统要解决什么问题357

15.1.1Redis用法的凌乱358

15.1.2从实际案例再看Redis的使用360

15.1.3如何改变Redis用不好的误区362

15.1.4凤凰缓存系统对Redis系统化改造364

15.2用好Redis先运维好它366

15.2.1传统的Redis运维方式366

15.2.2Redis的Docker化部署368

15.2.3凤凰缓存系统对Redis的监控369

15.2.4凤凰缓存系统对Redis的集群分片优化370

15.2.5客户端在运维中的作用371

15.2.6凤凰缓存系统在Redis运维上的工具372

15.3凤凰缓存系统的使用效果373

第16章新的旅程374

16.1更好的引入缓存技术374

16.1.1缓存引入前的考量374

16.1.2缓存组件的选择375

16.1.3缓存架构的设计376

16.1.4缓存系统的监控及演进377

16.2缓存分类总结377

16.3缓存知识结构更多Tips378

16.3.1缓存使用模式379

16.3.2缓存协议379

16.3.3缓存连接池380

16.3.4几个关注点383

16.3.5管理缓存387

16.3.6缓存可用性390

16.3.7数据一致性392

16.3.8热点数据处理393

16.3.9注意事项Tips396

分布式定时任务_彩虹分布式云任务秒赞平台_上海分布式能源 分布式能源

推荐序

缓存技术的大规模使用是互联网架构区别于传统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微服务实战》作者

不同的存储介质,读写性能有很大的差异,价格亦是如此,性能越好的介质,价格就越贵,把最常访问的数据放在读写性能最好的设备上,达到成本和性能的均衡,这便诞生了缓存,本书的几位作者都是大型分布式环境下历练出来的沙场老将,丰富的经验和详实的案例,对于互联网行业的技术人员来说,颇有裨益。

—陈康贤 《大型分布式网站架构设计与实践》作者、阿里巴巴技术专家

缓存是当前互联网的基石,极大弥补了关系型数据库的天然缺陷。缓存技术也是每一个架构师的必修课,从最初不落盘坑爹无数的 memcached,到redis及各种扩展架构,发展至今已经有些百花齐放的感觉。本书难得的进行了全面梳理,并附以在电商、社交、广告等典型场景下的大型应用。您值得拥有。

—萧田国 高效运维社区发起人 DevOpsDays中国联合发起人

缓存是互联网架构的最关键的环节,陈波在缓存的性能及高可用方面有丰富的经验,很高兴看到他通过本书分享了他在微博研发团队多年的实践精华。

—杨卫华 微博研发副总经理

互联网高性能系统设计的核心关键之一就是缓存系统的设计,本书集合缓存理论、开源缓存系统、大规模业务中缓存的具体实践,全方位解读了分布式缓存设计,既能够帮助读者深入理解分布式缓存系统,又提供了很好的架构设计案例供参考,细细品读,受益良多!

—李运华 阿里游戏资深技术专家 《面向对象葵花宝典》作者

京东购书,扫描二维码:

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688