缓存 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