万本电子书0元读

万本电子书0元读

顶部广告

深入分布式缓存:从原理到实践电子书 租阅

售       价:¥

纸质售价:¥68.30购买纸书

1243人正在读 | 2人评论 6.7

作       者:于君泽

出  版  社:机械工业出版社

出版时间:2017-11-01

字       数:33.6万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(2条)
  • 读书简介
  • 目录
  • 累计评论(2条)
本书的产生要追溯到多年前。笔者一直对缓存技术抱有热情,关注开源框架的发展,亦在工作中关注所遇、所见,乃至所听的案例。从应用程序研发方面看分布式缓存,并不需要所有的程序员都具备开发一套组件的能力,但是需要具备正确使用它的能力。正如易宝CTO陈斌老师所言:“解决雪崩问题的最好办法是不发生雪崩”。不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事。笔者亦了解一些缓存因为代码缺陷或者使用不当被击穿的案例,不同数量级的请求产生的结果有天壤之别,不可不慎。 书内容在逻辑上共分为三个部分,按照从理论到实现,再到实践的思路撰写。首先介绍分布式缓存的背景知识,对本书“分布式”和“缓存”这两个关键词行了全面的综述,作为后续章节叙述的基础;第二部分介绍业界主流的缓存,关注其原理与实现,囊括了Ehcache、Memcached、Redis、tair、EVCache、Aerospike等六个缓存或类缓存系统;后一部分讨论缓存在互联网系统中的实践,从广告、社交、新闻、电商、营销等五类典型的互联网应用手,分析它们面临的性能稳定性问题以及如何利用分布式缓存解决这些问题。
【作者】
蚂蚁金服高级技术专家、支付核算技术部负责人、成都研发中心技术团队创建者之一,先后负责或参与过转账类业务、账单类业务、社区支付、放平台、支付平台、资金核算平台、类营销类支付工具的建设;之前有数年电信业务研发经验,涉及BSSOSS针对性营销等平台。个人感兴趣的方向:高并发、分布式技术、稳定性模式;内建质量、技术型管理。
目录展开

赞誉

推荐序1

推荐序2 无处不在的缓存,空间换时间的艺术

推荐序3 缓存为王

作者寄语

前言

为了初心的纪念

第1章 缓存为王

1.1 什么是缓存?

1.2 为什么使用缓存?

1.2.1 从用户体验说起

1.2.2 关于系统的性能

1.3 从网站的架构发展看缓存

1.4 客户端缓存

1.4.1 页面缓存

1.4.2 浏览器缓存

1.4.3 APP上的缓存

1.5 网络中的缓存

1.5.1 Web代理缓存

1.5.2 边缘缓存

1.6 服务端缓存

1.6.1 数据库缓存

1.6.2 平台级缓存

1.6.3 应用级缓存

第2章 分布式系统理论

2.1 分布式系统概论

2.2 分布式系统概念

2.2.1 进程与线程

2.2.2 并发

2.2.3 锁

2.2.4 并行

2.2.5 集群

2.2.6 状态特性

2.2.7 系统重发与幂等性

2.2.8 硬件异常

2.3 分布式系统理论

2.3.1 CAP理论

2.3.2 CAP理论澄清

2.3.3 Paxos

2.3.4 2PC

2.3.5 3PC

2.3.6 Raft

2.3.7 Lease机制

2.3.8 解决“脑裂”问题

2.3.9 Quorum NWR

2.3.10 MVCC

2.3.11 Gossip

2.4 分布式系统设计策略

2.4.1 心跳检测

2.4.2 高可用设计

2.4.3 容错性

2.4.4 负载均衡

2.5 分布式系统设计实践

2.5.1 全局ID生成

2.5.2 哈希取模

2.5.3 一致性哈希

2.5.4 路由表

2.5.5 数据拆分

第3章 动手写缓存

3.1 缓存定义的规范

3.1.1 新规范的主要内容及特性

3.1.2 新规范的API介绍

3.2 缓存框架的实现

3.2.1 前期准备

3.2.2 缓存的架构介绍

3.2.3 设计思路以及知识点详解

3.3 缓存框架的使用示例

第4章 Ehcache与Guava Cache

4.1 Ehcache的主要特性

4.2 Ehcache使用介绍

4.2.1 Ehcache架构图

4.2.2 缓存数据过期策略

4.2.3 Ehcache缓存的基本用法

4.2.4 在Spring中使用Ehcache

4.3 Ehcache集群介绍

4.3.1 集群的方式

4.3.2 如何配置集群

4.4 Ehcache的适用场景

4.5 Guava Cache的使用

4.5.1 Guava Cache的适用场景

4.5.2 Guava Cache的创建方式

4.5.3 缓存数据删除

4.5.4 并发场景下的使用

4.6 本章小结

第5章 从Memcached开始了解集中式缓存

5.1 Memcached基本知识

5.1.1 Memcached的操作命令

5.1.2 Memcached使用场景

5.1.3 Memcached特征

5.1.4 Memcached的一些问题

5.2 Memcached内存存储

5.2.1 Slab Allocation机制

5.2.2 使用Growth Factor进行调优

5.2.3 Item

5.3 典型问题解析

5.3.1 过期机制

5.3.2 哈希算法

5.3.3 热点问题

5.3.4 缓存与数据库的更新问题

5.3.5 别把缓存当存储

5.3.6 命名空间

5.3.7 CAS

5.4 Memcached客户端分析

5.4.1 Memcached的Client

5.4.2 Spymemcached设计思想解析

5.5 Memcached周边工具发展

第6章 Memcached周边技术

6.1 Twemcache

6.1.1 Twemcache的设计原理

6.1.2 Twemcache的安装及命令行详解

6.1.3 基于Java的Twemcache用法

6.2 Twemproxy

6.2.1 Twemproxy的常用部署模式

6.2.2 Twemproxy的可扩展性

6.2.3 Twemproxy源代码简析

6.3 Mcrouter

6.3.1 Mcrouter路由算法

6.3.2 典型的使用场景

6.3.3 Mcrouter的可扩展性

6.3.4 源码简要解析

第7章 Redis探秘

7.1 数据结构

7.1.1 value对象的通用结构

7.1.2 String

7.1.3 List

7.1.4 Map

7.1.5 Set

7.1.6 Sorted-Set

7.2 客户端与服务器的交互

7.2.1 客户端/服务器协议

7.2.2 请求/响应模式

7.2.3 事务模式

7.2.4 脚本模式

7.2.5 发布/订阅模式

7.3 单机处理逻辑

7.3.1 多路复用

7.3.2 定时任务处理

7.4 持久化

7.4.1 基于全量模式的持久化

7.4.2 基于增量模式的持久化

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

第8章 分布式Redis

8.1 水平拆分(sharding)

8.1.1 数据分布

8.1.2 请求路由

8.2 主备复制(replication)

8.2.1 主备复制流程

8.2.2 断点续传

8.3 故障转移(failover)

8.3.1 sentinel间的相互感知

8.3.2 master的故障发现

8.3.3 failover决策

8.4 Redis Cluster

8.4.1 拓扑结构

8.4.2 配置的一致性

8.4.3 sharding

8.4.4 failover

8.4.5 可用性和性能

第9章 Tair探秘

9.1 Tair总体架构

9.2 Config Server简介

9.3 Data Server简介

9.4 Tair高可用和负载均衡

9.4.1 对照表

9.4.2 数据迁移

9.5 存储引擎

9.6 Tair的API

9.6.1 key/value相关API

9.6.2 prefix相关的API

第10章 EVCache探秘

10.1 EVCache项目介绍

10.1.1 EVCache的由来

10.1.2 EVCache的发展

10.1.3 EVCache的演进

10.2 EVCache的使用场景

10.2.1 典型用例

10.2.2 典型部署

10.3 EVCache的性能

10.3.1 EVCache集群的性能

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

10.3.3 Moneta项目中的组件性能

10.4 EVCache的高可用性

10.4.1 AWS的多可用区

10.4.2 EVCache对AWS高可用性的增强

10.5 源码与示例

10.5.1 源码浅析

10.5.2 EVCache示例

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

11.1 Aerospike架构

11.2 Aerospike具体实现

11.2.1 Aerospike集群管理

11.2.2 数据分布

11.3 Aerospike集群配置和部署

11.3.1 搭建集群的方式与配置

11.3.2 部署集群

11.4 Aerospike与Redis的对比

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

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

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

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

12.1 社交业务示例

12.1.1 业务模型

12.1.2 业务场景

12.1.3 业务特点

12.2 关系(relation)的存储

12.2.1 基于DB的最简方案

12.2.2 DB的sharding方案

12.2.3 引入缓存

12.2.4 缓存的优化方案

12.3 帖子(post)的存储

12.3.1 基于DB的方案

12.3.2 引入服务端缓存

12.3.3 本地缓存

12.4 时间线(timeline)的存储

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

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

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

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

13.1 Feed系统架构

13.2 Feed缓存模型

13.3 Feed缓存架构的设计

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

13.3.2 集合类数据的缓存设计

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

13.4 Feed缓存的扩展

13.4.1 Redis的扩展

13.4.2 计数器的扩展

13.4.3 存在性判断的扩展

13.5 Feed缓存的服务化

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

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

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

14.2.1 整体架构

14.2.2 CMS系统

14.2.3 前端展示系统

14.2.4 控制系统

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

14.3.1 多级缓存介绍

14.3.2 如何缓存数据

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

14.3.4 热点数据与更新缓存

14.3.5 更新缓存与原子性

14.3.6 缓存崩溃与快速修复

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

14.4.1 商品详情页前端结构

14.4.2 单品页技术架构发展

14.4.3 详情页架构设计原则

14.4.4 遇到的一些问题

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

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

15.1.1 Redis用法的凌乱

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

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

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

15.2 用好Redis先运维好它

15.2.1 传统的Redis运维方式

15.2.2 Redis的Docker化部署

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

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

15.2.5 客户端在运维中的作用

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

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

第16章 新的旅程

16.1 更好的引入缓存技术

16.1.1 缓存引入前的考量

16.1.2 缓存组件的选择

16.1.3 缓存架构的设计

16.1.4 缓存系统的监控及演进

16.2 缓存分类总结

16.3 缓存知识结构更多Tips

16.3.1 缓存使用模式

16.3.2 缓存协议

16.3.3 缓存连接池

16.3.4 几个关注点

16.3.5 管理缓存

16.3.6 缓存可用性

16.3.7 数据一致性

16.3.8 热点数据处理

16.3.9 注意事项Tips

累计评论(2条) 2个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部