本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。
缓存概述

缓存的分类
缓存主要分为四类,如下图:

CDN 缓存
CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中。
在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
应用场景:主要缓存静态资源,例如图片,视频。
CDN 缓存应用如下图:


CDN 缓存优点如下图:

反向代理缓存
反向代理位于应用服务器机房,处理所有对 Web 服务器的请求。
如果用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。
如果没有缓冲则先向 Web 服务器发出请求,取回数据,本地缓存后再发送给用户。通过降低向 Web 服务器的请求数,从而降低了 Web 服务器的负载。
应用场景:一般只缓存体积较小静态文件资源,如 css、js、图片。
反向代理缓存应用如下图:

反向代理缓存应用图
开源实现如下图:

开源实现
本地应用缓存
指的是在应用中的缓存组件,其最大的优点是应用和 Cache 是在同一个进程内部,请求缓存非常快速,没有过多的网络开销等。
在单应用不需要集群支持或者集群情况下各节点无需互相通知的场景下使用本地缓存较合适。
同时,它的缺点也是应为缓存跟应用程序耦合,多个应用程序无法直接的共享缓存,各应用或集群的各节点都需要维护自己的单独缓存,对内存是一种浪费。
应用场景:缓存字典等常用数据。
缓存介质如下图所示:


本文详细介绍了分布式系统中缓存的理论、分类,包括CDN缓存、反向代理缓存、本地应用缓存、Ehcache和GuavaCache等开源实现,以及Memcached和Redis的分布式缓存。还探讨了缓存架构设计中的问题及解决方案,如数据一致性、缓存穿透、雪崩和热点,以及业界案例如微博的SSDCache应用。
最低0.47元/天 解锁文章
5073

被折叠的 条评论
为什么被折叠?



