1.【多级缓存架构】多级缓存架构以及每一层的意义

1.【多级缓存架构】多级缓存架构以及每一层的意义

1. 多级缓存架构

nginx本地缓存 + redis分布式缓存 + tomcat堆缓存 构成多级缓存架构


2. 缓存数据分类

2.1 时效性高的数据,比如:库存

  • 特点:时效性高,随着商品的不断交易,库存会不断变化,当库存数据发生变化时,我们希望更快的将最新的库存数据显示到页面上去,而不是说等了很长时间,库存才反应到页面上去。
  • 方式:采用【数据库和redis双写】的方案,可以保证缓存的最大时效性

2.2 失效性不高的数据,比如:商品颜色,版本,规格参数等等

  • 特点:时效性不高,当数据发生变更,数据可以隔一段时间反应到页面上去

  • 方式:采用MQ异步通知的方式,开发一个数据生产服务,监听MQ消息,然后异步拉取服务数据,更新 tomcat jvm缓存 + redis缓存

2.3 案例:nginx + lua脚本做页面动态生成的工作,

  1. 每次请求过来,优先从nginx本地缓存提取各种数据,结合页面模板,生成需要的页面

  2. 如果nginx本地缓存过期,那么就从nginx到redis中去拉取数据,然后更新nginx本地缓存

  3. 如果redis中的数据也被LRU算法清理掉了,那么就从nginx走http请求接口到后端服务中拉取数据,数据生成服务中,先在本地tomcat里的jvm堆栈内存中找,ehcache;

  4. 如果jvm堆栈内存中的数据也被LRU清理掉了,那么就从新发送请求到源头服务中去拉取数据,然后再次更新tomcat堆内存缓存 + redis缓存,并返回数据给nginx,nginx缓存到本地。

2019-11-10-16-38-29.png


3. 多级缓存架构中每一层的意义

3.1 nginx本地缓存

抗的是热数据高并发访问,经常会被访问的那些数据,就会被保留到nginx本地缓存中。对于那些热数据的大量访问,直接走nginx就可以了。

nginx本地内存有限,只能用于抗部分热数据,其他相对不那么热的数据会走redis。

3.2 redis分布式大规模缓存

抗的是很高的离散访问支撑海量的数据,高并发的访问,高可用的服务

redis缓存最大量的数据,最完整的数据和缓存,1T+数据;支撑高并发的访问,QPS最高的几十万;可用性非常好,能提供非常好的服务。

redis cluster的多master写入,横向扩容,1T+以上的海量数据支撑,几十万的数据读写QPS,99.99%的高可用性,可以有效的抗住大量的离散请求。

3.3 tomcat jvm 对内存缓存

主要是抗redis大规模灾难的,如果redis出现了大规模的宕机,导致nginx大量流失直接涌入数据生产服务,那么最后tomcat堆内存缓存至少可以再抗一下,不至于请求直接跑到数据库,导致数据压力倍增。 tomcat jvm堆内存缓存,也可以抗住redis没有cache住的最后那少量的部分缓存。

参考石衫老师亿级流量笔记

如果对你有用,点个赞再走呗!!!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值