当前位置: 首页 > news >正文

高性能架构模式——高性能缓存架构

目录

    • 一、引入前提
    • 二、缓存架构的设计要点
      • 2.1、缓存穿透
        • 2.1.1、缓存穿透第一种情况:存储数据不存在
        • 2.1.2、缓存穿透第二种情况:缓存数据生成耗费大量时间或者资源
      • 2.2、缓存雪崩
        • 2.2.1、解决缓存雪崩的第一种方法:更新锁机制
        • 2.2.2、解决缓存雪崩的第二种方法:后台更新机制
      • 2.3、缓存热点
        • 2.3.1、缓存热点的解决方法
    • 三、缓存架构的实现方式

本文来源:极客时间vip课程笔记

一、引入前提

  • 虽然我们可以通过各种手段来提升存储系统的性能,但在某些复杂的业务场景下,单纯依靠存储系统的性能提升不够的,典型的场景有:

  • 经过复杂运算后得出的数据,存储系统无能为力

    例如,一个论坛需要在首页展示当前有多少用户同时在线,如果使用 MySQL 来存储当前用户状态,则每次获取这个总数都要“count(*)”大量数据,这样的操作无论怎么优化 MySQL,性能都不会太高。如果要实时展示用户同时在线数,则 MySQL 性能无法支撑。

  • 读多写少的数据,存储系统有心无力

    例如,一个明星发一条微博,可能几千万人来浏览。如果使用 MySQL 来存储微博,用户写微博只有一条 insert 语句,但每个用户浏览时都要 select 一次,即使有索引,几千万条 select 语句对 MySQL 数据库的压力也会非常大

  • 缓存就是为了弥补存储系统在这些复杂业务场景下的不足,其基本原理是将可能重复使用的数据放到内存中,一次生成、多次使用,避免每次使用都去访问存储系统。

  • 缓存能够带来性能的大幅提升,以 Memcache 为例,单台 Memcache 服务器简单的 key-value 查询能够达到 TPS 50000 以上,其基本的架构是:
    在这里插入图片描述

  • 缓存虽然能够大大减轻存储系统的压力,但同时也给架构引入了更多复杂性。架构设计时如果没有针对缓存的复杂性进行处理,某些场景下甚至会导致整个系统崩溃。

二、缓存架构的设计要点

2.1、缓存穿透

  • 缓存穿透
http://www.dtcms.com/a/281853.html

相关文章:

  • python的慈善捐赠平台管理信息系统
  • 【前端】在Vue3中绘制多系列柱状图与曲线图
  • rocky8 --Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
  • 阿奇霉素:长效广谱抗菌背后的药理特性与研发历程
  • 利用Java自定义格式,循环导出数据、图片到excel
  • excel分组展示业绩及增长率
  • 解锁高效Excel技能:摆脱鼠标,快速编辑单元格
  • java操作Excel两种方式EasyExcel 和POI
  • DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级
  • HTML进阶
  • Spring Boot 整合 Nacos 实战教程:服务注册发现与配置中心详解
  • 分布式弹性故障处理框架——Polly(1)
  • 卷积神经网络-卷积的分类
  • 数据结构与算法学习(一)
  • 从函数调用到进程通信:Linux下的多语言协作实践
  • STM32 | 定时器 PWM 呼吸灯
  • 坚持继续布局32位MCU,进一步完善产品阵容,96Mhz主频CW32L012新品发布!
  • 尚庭公寓-------图片上传接口
  • 推客系统开发:从零构建高并发社交平台的技术实践
  • Python爬虫实战:研究PyYAML库相关技术
  • 多维动态规划题解——不同路径【LeetCode】递推写法空间优化
  • 【Qt开发】Qt的背景介绍(二)-> 搭建Qt开发环境
  • 从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论
  • Blender 云渲染高效流程:渲染 101 集群加速实战​
  • 硬件产品的技术资料管控是确保研发可追溯、生产可复制、质量可控制的核心环节。
  • Linux 716 数据库迁移
  • NodeJS Express 静态文件、中间件、路由案例
  • iPhone 数据擦除软件评测(最新且全面)
  • 为什么要使用nginx?
  • 网络基础10 业务访问控制--ACL与包过滤