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

举报
mikechen的互联网架构 发表于 2024/10/31 21:14:46 2024/10/31
【摘要】 本文详细介绍分布式缓存的核心概念、特点及常见问题,如缓存雪崩、缓存穿透和缓存击穿,并探讨其应用场景和解决方案。欢迎交流。关注【mikechen的互联网架构】,10年+ BAT架构经验倾囊相授。

关注△mikechen的互联网架构△,10年+BAT架构经验倾囊相授

image.png

大家好,我是 mikechen | 陈睿

分布式缓存在分布式架构里面占据了非常核心地位,可以说是分布式的基石,所以需要掌握好分布式缓存,下面我就全面来详解分布式缓存。

分布式缓存

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

image.png

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

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

分布式缓存特点

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

image.png

1.高性能

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

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

2.动态扩展性

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

3.高可用性

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

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

4.透明性

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

分布式缓存核心问题

分布式缓存面临比较大的问题,经常会涉及:缓存雪崩、缓存击穿等问题。

1.缓存雪崩

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

如下图所示:

image.png

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

一般会经历,如下步骤:

1.缓存失效

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

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

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

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

3.存储系统压力骤增

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

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

2.缓存穿透

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

如下图所示:

image.png

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

可用采用,如下措施:

1.缓存空值

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

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

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

2.布隆过滤器

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

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

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

3.缓存击穿

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

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

如下图所示:

image.png

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

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

4.缓存预热

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

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

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

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

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

分布式缓存应用

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

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

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

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

以上,是分布式缓存详细解析,欢迎评论区留言交流或拓展。

我是 mikechen | 陈睿 ,关注【mikechen的互联网架构】,10年+BAT架构技术倾囊相授。

本文已同步我的技术博客 www.mikechen.cc,更新至我原创的《30W+字大厂架构技术合集》中。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。