第一章 缓存为王
缓存分类
- 按位置分
- 客户端缓存
- 服务端缓存
- 网络中的缓存
- 按规模和部署方式
- 单体缓存
- 缓存集群
- 分布式缓存
为何使用缓存
- 从用户体验
- 缓存是软件系统中关于时间的艺术
从架构发展看缓存
- 前端页面缓存
- 动态页面组件缓存
- 数据缓存分布式缓存
-
客户端缓存
分类
- BS架构可分为页面缓存,和浏览器缓存
- 对于移动互联网是app自身所使用的缓存
- 页面缓存
- 将之前渲染的页面保存为文件
- SPA
- H5支持离线和本地存储
- 浏览器缓存
- Http1.0提供了一些特性, 如 Expires if-modified-since 304代码表示 not Motified 表示可以使用缓存
- Http1.1 引入 e-tag, etag 是文件或对象唯一标识,如果一个文件e-tag是有效的,则返回304
- app上的缓存
- iOS的 SDWebImage图片缓存框架
- 网络中的缓存
- 位于客户端和服务端之间, 代理或相应客户端的请求,面对重复的请求返回缓存中的内容,同时接受服务器的请求,更新缓存中的内容
- Web代理缓存
- 边缘缓存
- Varnish
- CDN
- 服务器缓存
- 数据库缓存
- mysql查询缓存, Query Cache 命中率= cache_hits / Qcache_hits+Qchace_inserts
- 平台级缓存
- Ehcache
- 应用级缓存
- Redis
- 术语
- 缓存命中
- 没有命中
- 存储成本
- 缓存失效
- 替代策略
- 替代策略算法
- LRU
- LFU
- LRU2
- 2Q
- SIZE
- LRU-Threhold
- Log(SIZE)+LRU
- Hyper-G
- Pitkow/Recker
- Lowest-Latency-First
- …
- 数据库缓存
第二章 分布式系统理论
概念 //TODO 此次目的重点是缓存,这块太大,这里不深入,另开专题
- Paxos算法
- 2PC
- 3PC
- Raft
- Lease 机制
- 脑裂问题
- Quorum NWR
- MVCC
- Gossip
第三章 动手写缓存
缓存定义的规范
- JSR 107 JCache API
- 核心概念
- CachingProvider
- CacheManager
- Cache
- Entry
- Store-By-Value Store-By-Reference