前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入分布式缓存从原理到实战之无处不在的缓存 顶

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

作者头像
须臾之余
发布2019-08-20 10:58:58
4650
发布2019-08-20 10:58:58
举报
文章被收录于专栏:须臾之余须臾之余

缓存分类

一.按照所处位置来分:

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

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

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

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

为什么去使用缓存

一:提高用户体验

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

通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么就可以选择采用静态页面缓存,这样程序上可以不做修改,就能很好的减少对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应用集群使用的平台级缓存防止了缓存失效、缓存雪崩之后的冲击,数据库缓存提升数据库查询时的效率。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存分类
    • 一.按照所处位置来分:
      • 二.按照规模和部署方式来分:
      • 为什么去使用缓存
      • 缓存介绍
      • 多级缓存流程
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档