ITPub博客

首页 > 数据库 > 数据库开发技术 > 多级缓存架构

多级缓存架构

原创 数据库开发技术 作者:greencoatman 时间:2023-08-25 18:48:00 0 删除 编辑

缓存 vs 缓冲


【缓存定义】

英文单词是 Cache,指位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为 Cache。

【常见 Cache】

1. CPU L1/L2/L3 cache;

2. Linux 文件系统 page cache;

3. Innodb buffer pool;

4. Redis、Memcached。

【缓冲定义】

英文单词是 Buffer,指某个临时存储区域,保存将要从一个设备(或者系统)传输到另一个设备(或系统)的数据。

【常见 Buffer】

1. Java IO BufferdInputStream等;

2. 磁盘控制器写缓存(Write cache);

3. MySQL log buffer;

4. 消息队列缓冲写请求;

5. Innodb buffer pool。

缓存的技术本质

凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为 Cache。

凡是位于性能相差较大的两种系统之间,用于协调两者性能差异的结构,均可称之为 Cache。

缓存技术本质:空间换时间,例如 CPU Cache、磁盘 Cache、OS 文件系统 Cache。

缓存设计框架 - 3W1H


缓存设计框架 - 更新机制

缓存设计案例讨论

多级缓存架构模式1 - 5级缓存架构

多级缓存架构设计关键点

问题1:应用多级缓存架构的时候,如果数据发生变化了,如何保证每一级及时更新数据?

问题2:多级缓存大大增加了架构复杂度,直接用分布式缓存不是更简单么?

问题3:是否所有业务都要按照这个多级缓存架构来做?



本地缓存

【APP定义】

App 将数据缓存在本地。

【应用场景】

所有能缓存的都可以缓存。

【常见技术】

1. SQLite 缓存;

2. 本地文件缓存;

3. 图片缓存:Picasso(Square)、

Fresco(Facebook)、Glide(Google)。

【HTTP定义】

HTTP 标准协议缓存。

【应用场景】

HTTP 资源。

【具体实现】

1. 参考 HTTP 协议、Cache-Control、ETag/If-None-Match 等指令。

CDN 缓存

【定义】

Content Delivery Network,即内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率,关键技术是内容存储和分发技术。

【优缺点】

1. 功能强大,能够支撑超高流量;

2. 贵。

【典型场景】

1. 直播(RTMP、HLS);

2. 视频;

3. 资讯。

【国内供应商】

阿里云、网宿、腾讯云、金山云、七牛云……

Web 容器缓存

Web 容器一般缓存静态资源,例如图片、JavaScript、CSS 等,配合 HTTP 协议实现缓存。


    

应用缓存 + 分布式缓存

【应用缓存定义】

应用在本地缓存数据。

【应用场景】

所有能缓存的都可以缓存。

【常见技术】

1. 进程内缓存、ConcurrentHashMap、

OSCache、Ehcache 等;

2. 进程外缓存,堆外内存;

3. 本地磁盘 SSD 缓存。

【分布式缓存定义】

由分布式系统提供缓存功能。

【应用场景】

所有能缓存的都可以缓存。

【具体实现】

1. Redis;

2. Memcached。

SSD 为何可以做缓存?


Redis vs Memcached

1. 如果有较多大的缓存对象读写就用Memcached,否则用 Redis。

技术原理:Redis 是单进程的。

2. 如果是数据库+缓存这种组合方案就能满足需求,用 Memcached 更简单一些;如果

业务上有 MySQL 难以满足用 Redis 可以很好满足的强需求,用 Redis。

技术原理:Redis 支持复杂的数据结构。

3. 如果缓存生成的代价很高,丢失后可能引起严重的系统问题,则用 Redis;如果短时间丢失部分缓存影响不大,则用Memcached。

技术原理:Redis 支持持久化。

原文作者:二进制跳动;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141086