高并发系统设计(三)缓存 未完

广义上讲,凡是位于速度相差较大的两种硬件之间,用于协调二者数据传输速度差别的结构,都可称之为缓存
是一种常见的空间换时间的性能优化手段
算法

常见案例

  • Linux MMU 使用LTB来缓存最近虚拟地址和物理地址的映射。
  • 刷视频预缓存下一个视频
  • HTTP协议 ETag

缓存与缓冲区

缓存区是用于弥补高速设备和低速设备通讯时的速度差。一块临时存储数据的区域,这些数据后面会一次性传输到其余设备上数据库

缓存分类

  • 静态缓存
    HTML,对动态请求的数据无力。
  • 分布式缓存
    Redis、Memcached
  • 热点本地缓存
    极端的热点数据查询。 HashMap,Guava Cache

缓存的不足

系统复杂度、数据不一致、运维、内存有限,比较适合读多写少,数据带有一点热点属性的业务场景后端

缓存的读写策略

  • Cache Aside 旁路缓存策略
    • 读策略
      • 从缓存中读取数据
      • 命中,直接返回
      • 不命中,从数据库中查
      • 查后,数据写入缓存,并返回给用户
    • 写策略
      • 更新数据库中的记录
      • 删除缓存
        最经常使用,但当写入比较频繁时,缓存中的数据会被频繁地清理。
  • Read/Write Through 读穿/写穿策略

由缓存节点而非用户来和数据库打交道,而且写数据库是同步的,对性能来讲比较大影响缓存

  • Write Back 写回策略
    在写入数据时只写入缓存,并把缓存块标记为“脏”,脏块只有被再次使用时才会将其中的数据写回后端存储中

分布式缓存高可用方案

  • 客户端方案
    • 缓存数据如何分片
      • Hash分片算法
        性能优化

      • 一致性Hash分片算法
        运维

    • Memcached的主从机制
    • 多副本
  • 中间代理层方案
    分布式

  • 服务端方案
    ide

缓存穿透

缓存中没有查到数据,不得不从后端系统中查询的状况。性能

相关文章
相关标签/搜索