浏览器、负载均衡 、进程内部层... 那些你需要掌握的多级缓存
本文分享自华为云社区《面试官怒了:多级缓存不了解怎么行,那可是数量级的提升?》,作者: 知识浅谈 。
从客户端到服务端,多级缓存层层剖析总结
为什么需要用缓存?因为受制于机械硬盘的读写耗时的原因,即使是 SSD 这种固态硬盘,其读写 IO 耗时也是一个不小的耗时,所以就引出了内存中存储,也就是缓存的概念。像是电商这种读多写少的环境更适合使用多级缓存来提高读取的效率。
多级缓存都包含哪些方面
客户端(浏览器)层、Nginx(负载均衡)层 、进程内部层、 分布式(Redis)层
客户端层缓存
主要是对 html 种 css,js,图片等一些静态资源进行缓存到本地,在之后进行网页访问的时候后就不用再次去服务端去获取了。
常用的像是百度的 logo 标志是设置 expires 这个过期时间来限制这个 logo 静态资源的多次访问。
Nginx/CDN 层缓存
CDN 内容分发网络/Nginx 负载均衡层是主要通过在 CDN 的节点或者是 Nginx 的节点上进行缓存来达到内容的缓存便于快速的查找资源。
CDN 层缓存:
Nginx 层缓存:
进程内部层缓存
作为进程内部缓存的意思是在运行的过程中,应用数据被载入到进程中的,通过本地内存的低延迟高吞吐的特性来调高数据资源的查询效率。
像是 Mybatis 的一二级缓存,Hibernate,Springmvc 的页面缓存,对于这些缓存的实现有 Ehcache 等。
分布式 Redis 缓存
针对分布式的架构中,我可以使用 Redis 这种 Nosql 数据库对整体架构中应用数据进行缓存,一般想起缓存我们都是使用 Redis 来解决其实,在高并发的环境中所有的请求都打到 Redis 这种 nosql 缓存上也不是一个好的选择,所以还像是静态资源还需要客户端缓存和 Encache 这种进程中的缓存来一起实现。
总结
针对从客户端到服务的不同层面做了一个总体不同的缓存实现形式的总结,希望对你有所帮助。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/aad3937d4923cd84a6484b2c4】。文章转载请联系作者。
评论