展开全部

主编推荐语

这是国内首本从大型互联网系统的应用角度探讨分布式缓存的书籍,包含了原理、框架、架构、案例等多方面的视角。

内容简介

书内容在逻辑上共分为三个部分,按照从理论到实现,再到实践的思路撰写。首先介绍分布式缓存的背景知识,对本书“分布式”和“缓存”这两个关键词进行了全面的综述,作为后续章节叙述的基础;第二部分介绍业界主流的缓存,关注其原理与实现,囊括了Ehcache、Memcached、Redis、tair、EVCache、Aerospike等六个缓存或类缓存系统;后一部分讨论缓存在互联网系统中的实践,从广告、社交、新闻、电商、营销等五类典型的互联网应用入手,分析它们面临的性能稳定性问题以及如何利用分布式缓存解决这些问题。

目录

  • 版权信息
  • 赞誉
  • 推荐序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
展开全部

评分及书评

4.0
3个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。