分布式缓存架构
1.什么是缓存?
缓存是存储在计算机上的一个原始数据复制集。缓存是介于数据访问者和原始数据之间的一种高速存储,当数据需要多次访问时,用于加快访问速度。
2.缓存种类
CPU缓存、操作系统缓存、数据库缓存、JVM缓存、CDN缓存、代理与反向代理缓存、应用程序缓存、分布式对象缓存
3.缓存的关键指标
缓存命中率:缓存是否有效依赖于能多少次重用同一个缓存响应业务请求,这个度量指标被称作缓存命中率。
影响缓存命中率的主要指标:
一.缓存键集合大小
二.缓存可使用空间
三.缓存对象生存时间
4.通读缓存
代理缓存、反向代理缓存、CDN缓存都是通读缓存。通读缓存给客户端返回缓存资源,并在请求未命中缓存时获取实际数据。客户端连接的是通读缓存而不是生成响应的原始服务器。
5.旁路缓存
对象缓存是一种旁路缓存,旁路缓存通常是一个独立的键值对存储。应用代码通常会询问对象缓存需要的对象是否存在,如果存在,会获取并使用缓存的对象,如果不存在或者过期,应用会连接数据源来组装对象,并将其保存回对象缓存中以便将来使用。
6.浏览器缓存
localStorage
7.本地对象缓存
对象直接缓存在应用程序内存中。对象存储在共享内存,同一台机器的多个进程可以访问它们。缓存服务器作为独立应用和应用程序部署在同一个服务器上。
8.缓存为什么能显著提升性能
缓存数据通常来自内存,比磁盘上的数据有更快的访问速度。缓存存储数据的最终结果形态,不需要中间计算,减少CPU资源的消耗。缓存降低数据库、磁盘、网络的负载压力,使这些I/O设备获得更好的响应特性。
9.缓存常见问题
缓存雪崩:当缓存服务器崩溃或者大量缓存失效的时候,数据库会因为不能承受压力而宕机,进而导致整个网站不可用,这种情况称为缓存雪崩。
缓存穿透:如果业务不恰当或者恶意攻击继续高并发的请求某个不存在的数据,因为缓存没有保存该数据,所有请求都会落到数据库上,会对数据库造成很大的压力,甚至崩溃。一个简单的对策就是将不存在的数据也缓存起来,并设定一个较短的失效时间。
评论