【架构师训练营】第五期笔记

发布于: 20 小时前

缓存(Cache)和缓冲(Buffer)的区别

缓冲:数据写入速度

缓存:多次读写

 

缓存的实现:

缓存数据存储(Hash表)

 

用好缓存的衡量指标:

缓存命中率(三个影响要素,key的集合大小,缓存内存空间大小,缓存对象生存时间)

 

缓存为什么能提升性能

  • 缓存数据来自内存,比磁盘上的数据有更快的访问速度

  • 缓存数据是最终结果形态,不需要中间计算,减少CPU资源消耗

  • 降低数据库、磁盘、网络的负载压力,使得I/O设备有更好的响应特性

 

不适合使用缓存的场景:

  • 频繁修改的数据: 数据的读写比在2:1以上,缓存才有意义

  • 没有热点的访问:内存有限,不宜缓存所有数据,大部分的数据访问集中在小部分数据上(二八定律)

 

多层反向代理缓存

Restful Api对反向代理缓存友好,方便做缓存

 

内容分发网络(CDN)

通读缓存(read-through):

应用代码只能看到代理,看不到代理后的原始服务器

旁路缓存(cache-aside)

应用代码询问缓存对象是否存在

  • 如果存在,获取缓存对象

  • 如果不存在,应用连接数据源,并将数据保存至缓存中

 

例如:浏览器对象缓存,本地对象缓存

一致性Hash算法

基于虚拟节点的一致性Hash算法

技术栈各层的缓存

消息队列异步调用的三个角色:

  • 消息队列

  • 生产者

  • 消费者

 

消息队列的好处:

  • 实现异步处理,提升处理性能

  • 更好的伸缩性

  • 削峰填谷

  • 失败隔离和自我修复

  • 解耦

用户头像

云064

关注

还未添加个人签名 2018.05.24 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营】第五期笔记