架构训练营学习笔记:5-1 计算架构模式之多级缓存架构

    本节主要是计算架构。

多级缓存架构

  缓存与缓冲:通常场景是读缓存,写缓冲。

缓存技术的本质:空间换时间,因此缓存架构属于高性能计算 架构。

缓存设计框架

    主要考虑存什么?存多久?存哪里?如何存的问题。

更新机制

过期更新

缓存有效期内一直用缓存,超过有效期后去重新读取。例如:HTTP缓存

定期更新

定期更新缓存

主动更新:

 当数据修改后,主动更新缓存。例如:业务写数据库时更新Redis缓存。

多级缓存架构

 这是一个完整的多级缓存架构,要根据自己的业务场景来考虑,不是都要上CDN。

考虑点:性能需求、架构复杂度。

缓存技术概要介绍

本地缓存

CDN缓存 

Content Delivery Network,即内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率,关键技术是内容存储和分发技术。

Web容器缓存

  Web容器缓存一般缓存静态资源,例如图片、JavaScript、CSS等,配合HTTP协议实现缓存

应用缓存+分布式缓存

redis 与memcache的选择

redis相对 均衡,支持复杂数据结构,支持持久化,至于大对象,还可以结合业务来优化。 

下面这张图很有用,很多常见的耗时都有,比如内存、磁盘、机房等,值得收藏。

 数据缓存

设计核心:1、用什么缓存系统;2、如何应对数据一致性挑战

应用场景:实时性要求高的业务,读多写少的业务

结果缓存

缓存结果,实时性要求不高。

分布式缓存架构设计思路

 这里上缓存之前,可以先读写分离考虑下,这是一种折中,就是如果这样能满足业务需求,代价更小,架构没有那么复杂。

数据缓存一致性设计

本质是需要保证缓存系统和存储系统实现分布式事务。推荐方案3:先删除缓存再写存储。就是应对异常的情况。

一致性解决方案

其中canal 跟3消息队列原理差不多

缓存穿透

缓存没有发挥作用,业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要再次去存储系统中查询数据。

 应对方法:

方法3:缓存预热

应对运营活动、秒杀、大促等场景

  1. 模拟请求触发系统生成缓存,实现比较复杂
  2. 后台按照规则批量生成缓存,实现工作量较大
  3. 灰度发布/预发布触发系统生成缓存(推荐)

方法4:随机失效

缓存有效期设定为一个时间范围内的随机值。应对后台批量生成的缓存

缓存雪崩

缓存失效引起雪崩效应

 

缓存雪崩应对方式

缓存雪崩通常是少量的热点key异常导致的,而不是像穿透那种大量的key造成的。即使后台更新,也不能完全保证没问题,例如Redis 内存空间不足,会有淘汰机制,使用随机淘汰也可能导致缓存雪崩。

缓存热点

部分缓存访问量超高。例如:热点事件、突发事件

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/22476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023华数杯数学建模竞赛C题思路解析

如下为:2023华数杯数学建模竞赛C题 母亲身心健康对婴儿成长的影响 的思路解析 C题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护,还为婴儿提供情感支持和安全感。母亲心理健康状态的不…

将css文件中的px转化为rem

pxToRem.js /*** 使用方式:* 与引入的文件放在同一目录下进行引用配置,执行:node (定义的文件)*/ const fs require(fs) const path require(path) /*** entry:入口文件路径 type:Strng* pxtopx:以倍数转…

JS_判断打开的是什么手机品牌,判断是否是手机,平板,pc

判断业务是否是 iphone、华为、小米、oppo、view、三星 打开 手机品牌userAgent库 http://www.fynas.com/ua function judgeBrand(sUserAgent) {var isIphone sUserAgent.match(/iphone/i) iphone;var isHuawei sUserAgent.match(/huawei/i) huawei;var isHonor sUserAge…

【LNMP】LNMP

LNMP:是目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件;能够提供静态页面服务,也可以提供动态web服务 L Linux系统,操作系统N Nginx网站服务,前端,提供前端的静态…

神策新一代分析引擎架构演进

近日,神策数据已经推出全新的神策分析 2.5 版本,该版本支持分析模型与外部数据的融合性接入,构建全域数据融合模型,实现从用户到经营的全链路、全场景分析。新版本的神策分析能够为企业提供更全面、更有效的市场信息和经营策略&am…

Springboot部署ELK实战

Springboot部署ELK实战 1、部署docker、docker-compose环境安装docker安装docker-compose 2、搭建elk1、构建目录&&配置文件1、docker-compose.yml 文档2、Kibana.yml3、log-config.conf 2、添加es分词器插件3、启动 3、Springboot项目引入es、logStash配置1、引入依赖…

【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

数据治理实践:元数据管理架构的演变

数据治理实践:元数据管理架构的演变 前言 近几年来数据的量级在疯狂的增长,由此带来了系列的问题。作为对人工智能团队的数据支撑,我们听到的最多的质疑是 “正确的数据集”,他们需要正确的数据用于他们的分析。我们开始意识到&…

MyBatis-动态SQL-if-案例

案例 完善更新员工的功能,修改为动态更新员工数据信息原代码如下: Update("update emp\n" "set username #{username},\n" " name#{name},\n" " gender#{gender},\n" " image#{image},\n…

如何去除 JavaScript 对象中的空值和空对象

在 JavaScript 开发中,我们经常需要处理对象数据,但有时这些对象可能包含一些空值或空对象。在处理数据时,通常需要将这些空值或空对象去除,以便得到更干净、更紧凑的数据结构。本文将介绍几种方法,教你如何去除 JavaS…

https请求异常引发(Received fatal alert: unrecognized_name):如何快速解决项目中问题?

总结思考:如何做一个出色的开发者? 首先我们要承认我们大部分程序员是应用开发,不是操作系统、协议、框架开发等这类底层开发者。 其一:是否能快速定位问题。如找到出现问题的代码,bug出现在哪一行,哪个应…

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发, 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…

在Ruoyi中采用Ajax动态生成Echarts图表实践

前言 在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下: 序号 博客连接1一款基于JAVA开发的Echarts后台生成框架2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法3解决Ruoyi单体版本集成Echarts多图表时…

uni、css——制作表格样式的模型

案例展示 这里以5列做展示&#xff08;可随意调节&#xff09; 案例代码 <view class"list"><view class"item" v-for"(item,index) in list" :key"index">1</view> <!-- 有内容 --><view clas…

蓝桥 13期 java c组 特殊日期

【问题描述】 2022 年 2 月 22 日 22:20 是一个很有意义的时间&#xff0c;年份为 2022&#xff0c;由 3 个 2 和 1 个 0 组 成&#xff0c;如果将月和日写成 4 位&#xff0c;为 0222&#xff0c;也是由 3 个 2 和 1 个 0 组 成&#xff0c;如果将时间中的时和 分写成 4 位&am…

redis五种数据类型介绍

、string&#xff08;字符串&#xff09; 它师最基本的类型&#xff0c;可以理解为Memcached一模一样的类型&#xff0c;一个key对应一个value。 注意&#xff1a;一个键最大能存储 512MB。 特性&#xff1a;可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512…

《Java-SE-第二十八章》之CAS

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

SpringCloudAlibaba之Sentinel(一)流控篇

前言&#xff1a; 为什么使用Sentinel&#xff0c;这是一个高可用组件&#xff0c;为了使我们的微服务高可用而生 我们的服务会因为什么被打垮&#xff1f; 一&#xff0c;流量激增 缓存未预热&#xff0c;线程池被占满 &#xff0c;无法响应 二&#xff0c;被其他服务拖…

面向视频会议场景的 H.266/VVC 码率控制算法研究

文章目录 面向视频会议场景的 H.266/VVC 码率控制算法研究个人总结摘要为什么要码率控制码率控制的关键会议类视频码率控制研究背景视频会议系统研究现状目前基于 R-λ模型的码率控制算法的问题文章主要两大优化算法优化算法1&#xff1a;基于视频内容相关特征值的码率控制算法…