架构师训练营 - 第五周学习总结
分布式缓存
缓存:存储在计算机上的一个原始数据复制集,以便于访问。
缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用于加快读取的速度。
缓冲:内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据。
缓存(Cache)和缓冲(Buffer)的区别:缓存是用来加速数据从硬盘中“读取”的;缓存是用来加速数据“写入”硬盘的。
缓存的关键指标
缓存命中率
缓存是否有效依赖于能多少次重用同一个缓存响应业务请求。
如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是 90%。
影响缓存命中率的主要指标
缓存键集合大小:键的数量越少,缓存的效率越高。
缓存可使用内存空间:物理上缓存的空间越大,缓存的对象越多,缓存的命中率也就越多。
缓存对象生存时间:对象缓存的时间越长,缓存对象被重用的可能性就越高。
缓存手段
代理缓存:代理用户请求的数据
反向代理缓存:代理数据中心的数据
多层反向代理缓存
内容分发网络(CDN)
通读缓存:应用程序访问通读缓存获取数据时,如果通读缓存有需要的数据则返回;如果没有,那么通读缓存访问数据源,从数据源获取数据返回给应用程序,并将这个数据源存在自己的缓存中。
旁路缓存:应用程序访问旁路缓存获取数据时,如果旁路缓存中有应用程序需要的数据则返回;如果没有则返回空,应用程序需要自己从数据源读取数据,然后将这个数据写入到旁路缓存中。
技术栈各个层次的缓存
缓存为什么能提升性能
缓存数据通常来自内存,比磁盘上的数据有更快的访问速度。
缓存存储数据的最终结果形态,不需要中间计算,减少 CPU 资源的消耗。
缓存降低数据库、磁盘、网络的负载压力,使这些 I/O 设备获得更好的响应特性。
建议
缓存是系统性能优化的大杀器
技术简单
性能提升显著:缓存主要优化的是读性能
应用场景多
合理使用缓存:使用缓存对提高系统性能有很多好处,但是不合理的使用缓存可能非但不能提高系统的性能,还会成为系统的累赘,甚至风险。使用缓存会存在的问题:
频繁修改的数据不适合使用缓存
没有热点的访问的数据不适合使用缓存
数据不一致和脏读
缓存雪崩
缓存预热
缓存穿透
消息队列与异步架构
消息队列构建异步调用架构
点对点模式
发布订阅模式
消息队列的好处
实现异步处理,提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复:发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离,生产者和消费者互相不受对方失败影响。
解耦
MQ 产品比较
技术选型的建议:看社区是否活跃。简单的办法是:通过搜索引擎看搜索结果的总条数。
学习总结
之前只是知道应该用缓存和消息队列,但是不知道为什么要用缓存和消息队列,以及为什么这样用合理。藉着这样详细的梳理,能够更加清楚原因。架构师不是仅仅停留在我会用,而是需要更深一步寻找技术的适用场景。
藉着作业,看到算法的重要性,之前一直以为算法就面试的时候预备下,藉着老师在作业中的讲述,更新了自己的认知。
版权声明: 本文为 InfoQ 作者【chenlovehx】的原创文章。
原文链接:【http://xie.infoq.cn/article/b3a27e48e7a17bf8e24bf1bf9】。文章转载请联系作者。
评论