你的系统是怎样支持高并发的?-多级缓存架构

Posted 中企老徐的架构笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你的系统是怎样支持高并发的?-多级缓存架构相关的知识,希望对你有一定的参考价值。

目录

① 多级缓存使用场景

② 多级缓存读写逻辑

③ 缓存预热

 总结



多级缓存使用场景

你的系统是怎样支持高并发的?-多级缓存架构


多级缓存适合用在对数据实时性不敏感的场景,比如商家修改了商品名称 商品描述,晚显示几分钟用户也不感知,对业务也没有影响


再比如新闻页面,修改了几个错别字,晚几分钟显示也没有什么大不了啊


下面我们还是用商品详情页这个场景来描述多级缓存的使用

有关商品详情的架构演化在另一篇文章做了讲解 

 

这一篇我们重点讲一下多级缓存的设计

多级缓存的读写逻辑

你的系统是怎样支持高并发的?-多级缓存架构


闲话少说,先上图,缓存部分已经用彩色文字标识

分别解释下,每级缓存的作用

1 nginx本地缓存

其特点是直接内存返回,速度极快 10毫秒内,

但单机内存有限,主要作为热点商品缓存,分担redis压力

2 redis集群缓存

其特点是无限扩容,高可用,访问速度速度也很快 几十毫秒

作为缓存的主要存储,商品详情的信息基本都保存在这里了

3 jvm 缓存

最要作用是保护数据库,防止在redis集群崩溃后 打死数据库



你的系统是怎样支持高并发的?-多级缓存架构

相信看了架构图 对数据的读取逻辑应该有了大概的了解

我们再来分析一遍

1 首先用户请求进入nginx 检查本地有无缓存,如果有 就直接返回

2 如果没有则查询redis缓存

3 如果命中redis缓存,返回并渲染后返回html

4 如果没命中redis缓存,直接调用‘‘商品详情页worker’’接口,商品详情页worker直接调用 ‘‘商品服务’’ ‘‘商家服务’’ ‘‘XX服务’’ 等依赖服务 生成数据写入redis 并返回(这一波操作可以说是相当直接 你的系统是怎样支持高并发的?-多级缓存架构


缓存预热

你的系统是怎样支持高并发的?-多级缓存架构


对于高并发系统,可能一上线就会有海量请求涌入

如果缓存没有预热,很有可能直接导致数据库压力过大,甚至打死的情况


这时候就要对缓存进行预热,但是这么多的商品到底选择那些进行预热呢?

可以采用实时计算来统计,计算出最近访问量频繁的商品,并记录

如下图

你的系统是怎样支持高并发的?-多级缓存架构

右侧流程为实时计算架构

  1. nginx讲日志发送给kafka

  2. 实时计算系统从kafka获取数据并实时分析,如果是热点商品就定期写入redis

  3. 热点商品数据可采用LUR算法来计算 请参考 


总结

你的系统是怎样支持高并发的?-多级缓存架构


还是强调下场景,多级缓存架构,用于可容忍短时间内数据不一致的场景


如果是强一致性场景,又想读高性能,请参考 



后续我们将分享

‘‘超超超级热数据‘’的读并发解决方案

高并发写入的解决方案

敬请期待!


你的系统是怎样支持高并发的?-多级缓存架构

End


你的系统是怎样支持高并发的?-多级缓存架构

送你小心心记得关注我哦!!

你的系统是怎样支持高并发的?-多级缓存架构

你的系统是怎样支持高并发的?-多级缓存架构

更多精彩内容

猛戳左边二维码

了解更多哦


以上是关于你的系统是怎样支持高并发的?-多级缓存架构的主要内容,如果未能解决你的问题,请参考以下文章

千万级并发!如何设计一个多级缓存系统?

关于分布式多级缓存架构,也许你一直考虑的太简单了

多级缓存系统设计

《终章》关于分布式多级缓存架构,也许你一直考虑的太简单了

华为技术架构师分享:高并发场景下缓存处理的一些思路

亿级流量电商详情页系统的大型高并发与高可用缓存架构实战