分布式缓存最全详解(图文全面总结)

分布式缓存最全详解(图文全面总结)

什么是分布式缓存

分布式缓存:就是将缓存数据分布在多个节点上,以提高系统的性能、可伸缩性、可用性。

分布式缓存通常采用键值对存储,可以存储各种类型的数据,比如:对象、数据库查询结果、计算结果等等。

分布式缓存里面,我们常用的分布式缓存包括:Redis和Memcached,Redis还会更多。

 

分布式缓存特点

分布式缓存具有如下4大特性:

1.高性能

这是分布式缓存最大的使用场景,就是提升性能。

比如:通过缓存热点数据,降低数据库、以及其他后端存储的访问频率,提高系统响应速度。

2.动态扩展性

可以轻松添加或移除缓存节点,以应对不断增长的负载。

3.高可用性

高可用性会增强,原因很简单,因为分布式缓存都是多个节点,而且,分布式缓存通常具有数据备份、故障转移机制等功能。

所以,可用更好的确保在节点故障时,仍能提供服务。

4.透明性

用户无需关心缓存的具体实现,可以像使用本地缓存一样,使用分布式缓存。

 

分布式缓存核心问题

分布式缓存面临比较大的问题,如下:

1.缓存雪崩

缓存雪崩,就是:大量缓存同时失效,导致大量请求直接访问后端存储,压力骤增,导致系统崩溃。

如下图所示:

分布式缓存最全详解(图文全面总结)

缓存雪崩通常发生在缓存中的大量数据在同一时间失效,例如:缓存的过期时间相同,或由于某种原因导致大规模数据同时失效。

一般会经历,如下步骤:

1.缓存失效

缓存中的大量数据同时失效,可能是由于过期时间相同、缓存清理操作或其他原因。

这导致之前缓存的数据不再可用,需要从后端存储重新加载。

2.请求压力增大

由于热点数据需要重新加载,大量的请求同时涌入系统,这些请求直接访问后端存储系统,而不经过缓存。

由于瞬时请求量的激增,后端存储系统可能难以应对,导致性能下降。

3.存储系统压力骤增

大量的请求直接访问后端存储系统,压力骤增,可能导致存储系统的性能下降,甚至宕机。

这就是缓存雪崩的最终步骤,系统可能无法正常提供服务。

 

2.缓存穿透

缓存穿透是指查询一个不存在的数据,由于缓存没有命中,导致请求直接访问底层存储系统。

如下图所示:

分布式缓存最全详解(图文全面总结)

缓存穿透通常由于一些恶意请求或异常查询引起,而这些查询无法在缓存中找到对应的数据。

可用采用,如下措施:

1.缓存空值

在缓存中设置空值,比如:null、或你自己指定的特定标记。

表示查询的键对应的数据不存在,防止相同的查询一直穿透到存储系统。

这种方式,就是会特比浪费内存空间,因为内存还是非常高贵的资源。

 

2.布隆过滤器

使用布隆过滤器等数据结构,快速判断查询的键是否存在于缓存中,减少对存储系统的访问。

布隆过滤器(Bloom Filter)是一种数据结构,用于判断一个元素是否属于一个集合,它具有高效的插入和查询操作。

这个是,目前使用比较多的方案,成本低,效果好。

 

3.缓存击穿

缓存击穿问题会导致系统性能下降,响应时间增加,可能引起雪崩效应,进而影响整个系统的可用性。

缓存击穿,通常发生在某个热点数据的缓存失效的瞬间,此时大量请求同时涌入系统。

如下图所示:

分布式缓存最全详解(图文全面总结)

此时,无法在缓存中获取数据,直接导致存储系统的压力骤增,数据库压力过大,也会出现同样的问题。

所以,设置合理的缓存过期时间时间,就变得非常的重要了。

 

 

4.缓存预热

缓存预热是在系统启动或低峰期时,提前将热点数据加载到缓存中。

比如,大家熟知的阿里双11秒杀,这些热点数据,都会提前放入到缓存。

一般,在系统启动或低峰期,通过手动或自动的方式,将热点数据加载到缓存中。

对于大量数据的情况,可以考虑使用异步加载机制等。

总之,通过提前加载热点数据到缓存中,系统可以更快地响应用户请求,提高系统的稳定性和性能。

 

分布式缓存应用

分布式缓存广泛用于高并发读取场景,如Web应用、电子商务平台等。

通过缓存热点数据,可以大大提高系统的读取性能,减轻对底层存储系统的负担。

分布式缓存常,还被用于存储用户会话数据,避免在每次请求中都需要查询数据库,也就是分布式Session。

除此之外,在分布式计算场景中,分布式缓存可以用于存储中间计算结果,提高计算效率。

 

以上就是分布式缓存详解,更多分布式系统方案,请查看:史上最强分布式系统详解(非常全面)

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧