写点什么

架构师训练营 - 第五周学习总结

用户头像
chenlovehx
关注
发布于: 2020 年 10 月 25 日

分布式缓存

缓存:存储在计算机上的一个原始数据复制集,以便于访问。

缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用于加快读取的速度。

缓冲:内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据。

缓存(Cache)和缓冲(Buffer)的区别:缓存是用来加速数据从硬盘中“读取”的;缓存是用来加速数据“写入”硬盘的。

缓存的关键指标

缓存命中率

  • 缓存是否有效依赖于能多少次重用同一个缓存响应业务请求。

  • 如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是 90%。


影响缓存命中率的主要指标

  • 缓存键集合大小:键的数量越少,缓存的效率越高。

  • 缓存可使用内存空间:物理上缓存的空间越大,缓存的对象越多,缓存的命中率也就越多。

  • 缓存对象生存时间:对象缓存的时间越长,缓存对象被重用的可能性就越高。

缓存手段

  • 代理缓存:代理用户请求的数据

  • 反向代理缓存:代理数据中心的数据

  • 多层反向代理缓存

  • 内容分发网络(CDN)

  • 通读缓存:应用程序访问通读缓存获取数据时,如果通读缓存有需要的数据则返回;如果没有,那么通读缓存访问数据源,从数据源获取数据返回给应用程序,并将这个数据源存在自己的缓存中。

  • 旁路缓存:应用程序访问旁路缓存获取数据时,如果旁路缓存中有应用程序需要的数据则返回;如果没有则返回空,应用程序需要自己从数据源读取数据,然后将这个数据写入到旁路缓存中。

技术栈各个层次的缓存


缓存为什么能提升性能

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

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

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

建议

缓存是系统性能优化的大杀器

  • 技术简单

  • 性能提升显著:缓存主要优化的是读性能

  • 应用场景多


合理使用缓存:使用缓存对提高系统性能有很多好处,但是不合理的使用缓存可能非但不能提高系统的性能,还会成为系统的累赘,甚至风险。使用缓存会存在的问题:

  • 频繁修改的数据不适合使用缓存

  • 没有热点的访问的数据不适合使用缓存

  • 数据不一致和脏读

  • 缓存雪崩

  • 缓存预热

  • 缓存穿透

消息队列与异步架构

消息队列构建异步调用架构


点对点模式


发布订阅模式


消息队列的好处

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

  • 更好的伸缩性

  • 削峰填谷

  • 失败隔离和自我修复:发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离,生产者和消费者互相不受对方失败影响。

  • 解耦

MQ 产品比较

技术选型的建议:看社区是否活跃。简单的办法是:通过搜索引擎看搜索结果的总条数。


学习总结

  • 之前只是知道应该用缓存和消息队列,但是不知道为什么要用缓存和消息队列,以及为什么这样用合理。藉着这样详细的梳理,能够更加清楚原因。架构师不是仅仅停留在我会用,而是需要更深一步寻找技术的适用场景。

  • 藉着作业,看到算法的重要性,之前一直以为算法就面试的时候预备下,藉着老师在作业中的讲述,更新了自己的认知。

发布于: 2020 年 10 月 25 日阅读数: 31
用户头像

chenlovehx

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-第五周学习总结