SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(一)——三级缓存架构体系

最近在学习整理软件架构中的三级缓存架构,使用SpringBoot+Redis+MemCache+Nginx+Lua来实现该架构体系,来提高系统的并发访问能力,该三级缓存架构主要适用于对请求并发量比较高的数据变动不是很大的业务场景

三级缓存架构

在博文开始的时候,这里我们需要了解下本博文说的三级缓存架构是什么/p>

首先确定一点,本博文中的三级缓存不是我们学硬件时的三级缓存,而是在软件开发过程中,在互联网的项目中,通常都是为了解决某些特定业务场景中请求并发量比较大,与数据库请求多的问题,为了减少请求直接访问数据库的次数,通过降低访问数据库的次数来减轻数据库的压力,那如何减轻呢/p>

那就是使用缓存了,请求过来之后,先从缓存中查询,如果缓存查询到了,就直接返回,否则再从数据库中加载最新的数据到缓存中,然后再返回给数据,这样的话,维护好缓存就能解决数据库的压力了。

image
  • 用户请求过来,首先经过Nginx层,Nginx层这里分为双层,一层作为分发层,一层作为应用层
  • 分发层集成Lua,来请求定向(针对同一请求固定打到某一服务上),另一层做数据缓存
  • 如果请求在Nginx的应用层找不到数据,则直接请求到后台服务系统,服务系统到Redis缓存中查询数据
  • Redis中请求到数据直接返回Nginx层,同时将数据缓存到Nginx层中
  • Redis中查询不到数据,则从Tomcat堆缓存中查询数据,如果查询到则直接返回,同时将数据缓存到Reids和Nginx的缓存中
  • Tomcat堆缓存中查询不到数据,则直接请求数据库,然后返回,将数据缓存到Tomcat堆缓存、Redis缓存和Nginx缓存中
  • 这样的话数据库的压力就会非常小了,再加上Ridis的QPS很高,所以整个服务的性能就比较好了

当然三级缓存架构模式只适用于数据变动不是很大,但请求并发量比较大的场景,针对数据变动变动的处理,可以参考我的博文 缓存与数据库双写一致性的解决方案——附上代码解决方案

下一篇博文我们再根据我们的三级缓存架构模型,来搭建我们需要的系统环境:搭建Nginx、Redis集群、SpringBoot集成Memcache缓存以及数据库安装等,然后基于此环境来编码实现简单的场景交互功能

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8582 人正在系统学习中

来源:Amos zhu

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月21日
下一篇 2019年7月21日

相关推荐