架构设计(三):引入缓存

news2024/11/25 12:43:00

架构设计(三):引入缓存

作者:Grey

原文地址:

博客园:架构设计(三):引入缓存

CSDN:架构设计(三):引入缓存

缓存是一个临时存储区域,如果请求的数据获取代价比较高或者数据的访问频率比较高,则会把响应结果存储在内存中,以便更快速地提供后续请求。

每次加载一个新的网页,都要执行一次或多次数据库调用来获取数据。反复调用数据库会大大影响应用程序的性能。缓存可以缓解这个问题,架构如下

img

在收到一个请求后,网络服务器首先检查缓存是否有可用的响应。如果有它有,它就把数据发回给客户。如果没有,它就查询数据库,将响应存储在缓存,并将其发回给客户端。这种缓存策略被称为"读过式缓存"。根据数据的类型、大小和访问模式,还有其他的缓存策略。与缓存的交互也很简单,因为大多数缓存中间件都提供了适用于普通编程语言的 API。

缓存层是一个临时数据存储层,比数据库快得多。有一个独立的缓存层的好处有如下几点

  1. 更好的系统性能,减少数据库工作负载。

  2. 缓存层也可以做独立的扩展(集群)。

使用缓存的考虑因素如下

  • 当要访问的数据经常被读取但不经常被修改时,可以考虑使用缓存,因为缓存的数据存储在易失性内存中,所以缓存服务器并不是持久保存数据的理想选择。如果缓存服务器重新启动,内存中的所有数据都会丢失。因此,重要的数据应该保存在持久性数据存储中。

  • 过期策略。为缓存设置过期策略是缓存使用的最佳实践。一旦缓存的数据过期,它就会从缓存中删除。当没有过期策略时,缓存的数据将被永久地保存在内存中。建议不要把过期日期定得太短,因为这将导致系统过于频繁地从数据库中重新加载数据;同时,建议不要使过期日期太长,因为数据会变得陈旧。

  • 缓存一致性。这就涉及到保持数据存储和缓存的数据同步。因为对数据存储和缓存的数据修改操作不在一个事务中。当跨区域扩展时,保持数据存储和缓存之间的一致性是一个挑战。

  • 单点故障预防。如果使用单个缓存服务器,这就可能会导致潜在的单点故障,单点故障(SPOF)是一个系统的一部分,如果它发生故障,将使整个系统停止工作,因此,建议在不同的数据中心设置多个缓存服务器以避免SPOF。可以参考架构设计(一):从单服务器模式到负载均衡设计,另一个推荐的方法是按一定的百分比超额配置所需的内存,这可以在内存使用量增加时提供一个缓冲。

  • 驱逐策略。一旦缓存已满,任何向缓存添加项目的请求都可能导致现有项目被删除。这就是所谓的缓冲区驱逐。最小最近使用(LRU)是最流行的缓冲区驱逐策略。还有其他的驱逐策略,如最不常使用(LFU)或先进先出(FIFO)。

参考资料

System Design Interview

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

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

相关文章

红黑树详解及代码实现(C++)

红黑树定义 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位标识节点的颜色,RED或BLACK。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而接近平衡。&#xff0…

共同转债,新化转债上市价格预测

共同转债基本信息转债名称:共同转债,评级:A,发行规模:3.8亿元。正股名称:共同药业,今日收盘价:32.66,转股价格:27.14。当前转股价值 转债面值 / 转股价格 * …

TPU编程竞赛系列|基于TPU-MLIR实现UNet模型部署,比“快”更快!

由算能举办的TPU编程竞赛-AI应用挑战赛正式开赛啦!本次大赛会为选手们提供一个预训练的分割模型UNet及数据集,无需训练模型,选手使用算能的MLIR开源编译器进行编译、量化及调优,兼顾精度与推理速度,最终实现UNet模型在…

社媒营销14问

👇点击一键关注主笔:邹小困、邝晴岚主持人:增长黑盒分析师刘千出品:增长黑盒研究组前言移动互联网和智能终端的发展,共同催生了很多社交媒体,并吸引了大批量的用户。社交媒体已经成为日常生活的一部分&…

RTOS概念及线程的引入

目录 RTOS的概念 用人来类比单片机程序和RTOS 程序简单示例 提出问题 RTOS的概念 用人来类比单片机程序和RTOS 妈妈要一边给小孩喂饭,一边加班跟同事微信交流,怎么办? 对于单线条的人,不能分心、不能同时做事,她只…

深入解读云场景下的网络抖动 | 龙蜥技术

文/eBPF 技术探索 SIG 一、网络抖动背景 延时高,网络卡,卡住了美好! 应用抖,业务惊,惊扰了谁的心? 当你在观看世界杯梅西主罚点球突然视频中断了几秒钟 当你在游戏中奋力厮杀突然手机在转圈圈无法响应…

毕业设计-基于大数据的新闻推荐系统-python

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

Qt第四十三章:弹出框QDialog

弹出框类型 ①模态框(阻塞窗口):QDialog().exec() ②窗口模态框(阻塞当前窗口):QDialog().open() ③非模态框(非阻塞):QDialog().show() 弹出框事件 ①触发accept()信号返回1 ②触发reject()信号返回0 ③触发done(int)信号返回int ④擦除弹…

MySql 事务的ACID与实现原理

数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行。 一、事务的ACID: (1)原子性:事务是一个不可分割的工作单元,事务里的操作要么都成功&…

华秋干货分享|PCB电气安全间距设计规则

PCB工程师在设计电子产品的过程中,不能只考虑设计出来的精度以及完美要求,还有很大一个制约条件就是生产工艺的能力问题,因此DFM可制造性分析非常重要。避免设计出来的产品无法生产浪费时间及成本的问题发生。 那么走线层的可制造性都有那些…

nodejs092学生考勤请假管理系统vue

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.3 B/S结构 4 2.4 MySQL数据库 4 前端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 系统…

我阳了

大家好,我是kaiyuan。我阳了。太开心可以如此轻松自由地公开说出这三个字,毕竟在不久之前,这三个字可能会让我的生活走向完全改变,所有人也都是对这3个字讳莫如深。所以虽然在阳的期间身体非常难受,心理倒是十分轻松舒…

6种更优雅书写Python代码!

1 简介 一些比较熟悉pandas的读者朋友应该经常会使用query()、eval()、pipe()、assign()等pandas的常用方法,书写可读性很高的「链式」数据分析处理代码,从而更加丝滑流畅地组织代码逻辑。 但在原生Python中并没有提供类似shell中的管道操作符|、R中的…

MMPs-PEG-BSA 多基质金属蛋白酶-聚乙二醇-牛血清白蛋白

产品名称:多基质金属蛋白酶-聚乙二醇-牛血清白蛋白 英文名称:MMPs-PEG-BSA 质量控制:95% 原料分散系数PDI:≤1.05 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用,不用…

RK3399平台开发系列讲解(中断篇)掌握信号处理

🚀返回专栏总目录 文章目录 一、信号的基本概念二、信号处理流程三、可重入与异步信号安全3.1、可重入函数3.2、异步信号安全沉淀、分享、成长,让自己和他人都能有所收获!😄 📢信号在操作系统中有悠久的历史,信号的概念和使用方式都非常简单,但是要编写出真正实用而稳…

Py根据对象的某个属性排序,比大小

目录 核心代码 一个练习题 核心代码 方法1 不对原来的list进行改变 m sorted(需要排序的list集合, keylambda x: x.对象的属性名) 括号中加上reverseTrue表示反转顺序,你默认的顺序是从小到大加上之后变成从大到小OK 方法2 对原来的list进行排序 cmp operator…

javaSE -面向对象编程(包,继承,组合,多态,抽象类,接口)

一、包(package) 1.1、包(package)是组织类的一种方式 包里存的基本上都是类,而这些类都是别人写好的。我们只需要拿着用。前提是导入对应的包 比如说:打印数组 import java.util.Arrays; public class T…

鲜花店如何数字化转型,鲜花店管理小程序

鲜花的用途非常广泛,除了平时祝福送亲友外,还有七夕/情人节送情侣/爱人等,商圈中的各品牌花店也都不少,并且其收益也相当可观,虽然是非必需品,但却又不可缺。 雨科网观察了鲜花行业相关数据报告后&#xff…

基于java+springmvc+mybatis+vue+mysql的学生竞赛模拟系统

项目介绍 本系统采用java语言开发,后端采用springboot框架,前端采用vue技术,数据库采用mysql进行数据存储。 前台: 首页、公交信息、论坛交流、试卷、校园资讯、个人中心、后台管理 后台: 首页、个人中心、用户管理…

别再随意说 Redis 的 SET 保障原子性,在客户端不一定

分布式系统有一个特点,就是无论你学习积累多少知识点,只要在分布式的战线中,总能遇到各种超出主观意识的神奇问题。比如前文使用Jedis来实现分布式锁的技术知识点储备,本以为很稳不会再遇到什么问题,但实际情况却是啪啪…