文档章节

深入分布式缓存从原理到实战之无处不在的缓存

须臾之余
 须臾之余
发布于 08/15 23:15
字数 1020
阅读 28
收藏 0

缓存分类

一.按照所处位置来分:

  • 客户端缓存
  • 服务端缓存
  • 网络中缓存

二.按照规模和部署方式来分:

  • 单体缓存
  • 缓存集群
  • 分布式缓存

可见,在软件系统中缓存几乎无处不在!

为什么去使用缓存

一:提高用户体验

二:提升系统性能(响应时间、延迟时间、吞吐量、并发用户数和资源利用率等..)这几个方面。

通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么就可以选择采用静态页面缓存,这样程序上可以不做修改,就能很好的减少对web服务器的压力以及减少对数据库连接资源的竞争。

缓存介绍

一:客户端缓存:对于互联网通常来说的是BS架构应用,可以分为页面缓存和浏览器缓存;对于移动互联网来说,指的是APP自身所使用的缓存。

页面缓存、浏览器缓存、APP上的缓存

二:网络中的缓存:位于客户端和服务端之间,对重复的请求返回缓存中的数据资源。同时接受服务端的请求,更新缓存中的内容。

web代理缓存(Squid):支持建立复杂的缓存层级结构,拥有详细的日志,高性能缓存,支持多种插件。

边缘缓存(nginx):向用户提供静态内容。CDN

三:服务端缓存:整个缓存的重头戏

数据库缓存:Mysql使用了查询缓冲机制,将select语句和查询结果放在缓冲区中,以后对同样的SQL语句,将直接从缓冲区中读取结果,节省查询时间,提高SQL查询的效率。

平台级缓存:EHCache,配置简单,结构清晰,功能强大

应用级缓存:通过代码实现缓存机制,Redis

多级缓存流程

  • 首先用户的请求被负载均衡服务分发到Nginx上,此处常用的负载均衡算法是轮询或者一致性哈希,轮询可以使服务器的请求更加均匀,而一致性哈希可以提升Nginx应用的缓存命中率。
  • 接着,Nginx应用服务器读取本地缓存,实现本地缓存的方式可以是Lua脚本,如果本地缓存命中,则直接返回。Nginx本地缓存在对热点数据的反复读取问题上非常有效。
  • 如果Nginx本地缓存没有命中,就会进一步读取响应的分布式缓存Redis,如果,命中,则返回数据,并写回到Nginx应用服务器本地缓存中。
  • 如果Redis分布式缓存还没有命中的话,则会回溯到tomcat集群,可以使用轮询或者一致性哈希算法,如果缓存命中则直接返回数据,并会同步写到主Redis集群,然后再同步到从Redis集群。
  • 当所有缓存都没有命中,就会去查询数据库并返回,当然数据库也是有缓存的。

整体来看,这是一个使用了多级缓存的系统。Nginx应用服务器的本地缓存解决了热点数据的缓存问题。Redis分布式缓存集群减少了访问回溯率,Tomcat应用集群使用的平台级缓存防止了缓存失效、缓存雪崩之后的冲击,数据库缓存提升数据库查询时的效率。

参考书籍:深入分布式缓存从原理到实战

© 著作权归作者所有

须臾之余
粉丝 125
博文 68
码字总数 178724
作品 0
吉安
程序员
私信 提问
有经验JAVA程序员如何提升自己?

具有一到五年开发经验 需要学习内容很多 JVM/分布式/高并发/性能优化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty源码分析等等等 01、透彻理解Tomcat原理手写动静态资源的实现 02、分...

阿阳啊啊
2017/11/29
0
0
架构师必备词汇和知识点

01 高可用 负载均衡(负载均衡算法) 反向代理 服务隔离 服务限流 服务降级(自动优雅降级) 失效转移 超时重试(代理超时、容器超时、前端超时、中间件超时、数据库超时、NoSql超时) 回滚机...

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

对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术。然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memca...

登录404
2017/06/05
1K
0
Redis源码及实战分析(三)高可用原理

这个问题也是我自己不太熟悉的一个地方,有空的话希望结合<>来理解集群上的架构 一般用 redis 缓存技术的话,肯定要考虑如何用 redis 来加多台机器,保证 redis 是高并发的,还有就是如何让 ...

语落心生
07/10
0
0
三流程序员与一流程序员之间的区别,看看你是属于哪一类?

源码系列 手写spring mvc框架 基于Spring JDBC手写ORM框架 实现自己的MyBatis Spring AOP实战之源码分析 Spring IOC高级特性应用分析 ORM框架底层实现原理剖析 手写Spring MVC框架实现 手把手...

茶轴的青春
2018/04/17
34
0

没有更多内容

加载失败,请刷新页面

加载更多

秒杀系统思路

业务分析 技术挑战 请求响应要快:无论成功失败,需要尽快返回给用户 架构设计   前端:静态化   站点层:限制请求数   服务层:乐观锁写缓存   数据库CAP:读写高可用,一致性,扩容...

雷开你的门
25分钟前
10
0
最全的教育行业大数据解决方案,个个针对痛点

大数据的悄然兴起也带动了教育行业的革新,移动教育、云课堂等的出现,使得教育行业再次成为了可以中长期保持高景气的行业。然而,初涉数据领域的教育行业同时也面临着相当大的难题,还需要更...

朕想上头条
29分钟前
7
0
预约模块设计分析

1.预约功能描述: 预约是小程序中常见的一种商品管理系统,商家可根据商品或服务的特性,灵活设置预约细节,为用户提供线上预约服务,如场地预约,商品预定等,实现高效经营。 预约场景: ...

鱼煎
32分钟前
5
0
阿里云日志服务构建网站实时分析大盘实战

场景分析 挖掘数据价值是当前企业级网站共同面临的问题。买买网是一个电商平台网站,每天拥有大量的用户访问和购买记录。为了引导用户直接消费,提升购买率和转化率,不同的用户类别需要推荐...

阿里云官方博客
33分钟前
5
0
TL665xF-EasyEVM开发板硬件处理器、NAND FLASH、RAM

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
37分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部