第一章 缓存为王

缓存分类

  • 按位置分
    • 客户端缓存
    • 服务端缓存
    • 网络中的缓存
  • 按规模和部署方式
    • 单体缓存
    • 缓存集群
    • 分布式缓存

为何使用缓存

  • 从用户体验
    • 缓存是软件系统中关于时间的艺术

从架构发展看缓存

  • 前端页面缓存
  • 动态页面组件缓存
  • 数据缓存分布式缓存
  • 数据库自身缓存,

    客户端缓存

  • 分类

    • 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