多级缓存架构

缓存 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 支持持久化。

原文始发于微信公众号(二进制跳动):多级缓存架构

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/167247.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!