【架构师训练营】第五期笔记
缓存(Cache)和缓冲(Buffer)的区别
缓冲:数据写入速度
缓存:多次读写
缓存的实现:
缓存数据存储(Hash 表)
用好缓存的衡量指标:
缓存命中率(三个影响要素,key 的集合大小,缓存内存空间大小,缓存对象生存时间)
缓存为什么能提升性能
缓存数据来自内存,比磁盘上的数据有更快的访问速度
缓存数据是最终结果形态,不需要中间计算,减少 CPU 资源消耗
降低数据库、磁盘、网络的负载压力,使得 I/O 设备有更好的响应特性
不适合使用缓存的场景:
频繁修改的数据: 数据的读写比在 2:1 以上,缓存才有意义
没有热点的访问:内存有限,不宜缓存所有数据,大部分的数据访问集中在小部分数据上(二八定律)
多层反向代理缓存
Restful Api 对反向代理缓存友好,方便做缓存
内容分发网络(CDN)
通读缓存(read-through):
应用代码只能看到代理,看不到代理后的原始服务器
旁路缓存(cache-aside):
应用代码询问缓存对象是否存在
如果存在,获取缓存对象
如果不存在,应用连接数据源,并将数据保存至缓存中
例如:浏览器对象缓存,本地对象缓存
一致性 Hash 算法
基于虚拟节点的一致性 Hash 算法
技术栈各层的缓存
消息队列异步调用的三个角色:
消息队列
生产者
消费者
消息队列的好处:
实现异步处理,提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复
解耦
评论