细说缓存在大型网站架构中的应用

简介: 缓存的基本知识在整个计算机体系构造中(无论是硬件层面还是软件层面),缓存都是无处不在的。在计算机硬件构造中,由于两种介质的速度不匹配,高速介质在和低速介质交互时速度趋向低速方,这就导致了高速介质的资源闲置。

缓存的基本知识

在整个计算机体系构造中(无论是硬件层面还是软件层面),缓存都是无处不在的。

在计算机硬件构造中,由于两种介质的速度不匹配,高速介质在和低速介质交互时速度趋向低速方,这就导致了高速介质的资源闲置。而通过引入第三种介质(速度和成本介于两者中间),将低速方读写的部分内容数据保存在该介质中,高速方大多数情况下则无需和低速方直接交互,这样就能整体提升了交互的性能。这就是计算机体系中缓存的由来。比较典型的就是CPU缓存(CPU寄存器=>L1 cahce =>L2 cache =>内存=>硬盘),如图:

 

在计算机系统和应用软件层面,缓存更是无处不在。我们在使用浏览器上网时,很多静态资源会被缓存到本地。我们在手机上采用微信聊天时,很多好友的头像等数据会被缓存到手机中。在操作系统层面,I/O操作也会被内核缓存(一般将数据缓存在文件系统的缓存页中),当然,这个可能相比前两个场景更加抽象,但缓存的目的都是一致的,为了提升读写性能。

 

缓存在狭义上解决介质读写速度不匹配问题,广义上包括任何利用中间媒介提高速度的方法,包括:空间换时间,动态操作变为静态操作。

 

缓存(CACHE)和缓冲(BUFFER

缓存:可以共享,多种数据,大小不固定,可以重复使用,已知数据,用于提高IO效率。

缓冲:不可以共享,单一数据,大小固定,读取后失效,命中100%,未知数据,用于减少IO次数。

缓存的属性

命中率:从缓存中返回正确数据的次数/总请求次数。

容量:超过这个值启用一定的策略:转移到磁盘;转移到远端;清空部分。

存储介质:内存、磁盘。

成本:开发成本、部署成本、硬件成本。

效率:SET效率、GET效率、序列化、哈希算法、分布式算法。

缓存的限制

由于价格的因素,缓存实现依赖的存储往往有大小限制——保存什么,舍弃什么,命中率。

缓存往往是从无到有的——在最初阶段不能发挥作用,在不命中的时候性能颠簸。

 

缓存的分类

按照存储介质来分

内存(网站进程内、同服务器独立进程、独立服务器、分布式服务器组)。

磁盘(本地文件和数据库,独立服务器、分布式服务器组)。

缓存可以使用磁盘而不仅仅是内存。

按照存储的数据来分

直接用于输出的整页(HTML、脚本样式、图片)。

片段页(可供多个客户端使用的HTML、脚本样式等)。

索引和聚合数据(空间换时间)。

耗时查询的结果数据。

和业务相关的大块数据(列表数据,引用数据)。

和业务相关的小级数据(行级数据,资源数据)。

和上下文(用户)相关的数据(活动数据)。

按照实现方式来分

框架或引擎内置的缓存(比如ORM缓存和SQL SERVER缓存)。

安装特定的组件根据规则自动实现缓存(比如反向代理和输出缓存)。

需要由开发以编程方式实现的缓存(比如业务数据缓存)。

按照作用来分

用于数据的读取(之后介绍的大部分内容都是基于此类缓存)

用于(允许丢失)数据的写入——写到缓存的队列中,再由工作线程提交处理(写入存储)

 

网站架构中的缓存

浏览器缓存(HTTP缓存头)

代理缓存(Squid Vanish CDN

Web服务器缓存(内核缓存、应用缓存)

页面输出缓存(片段缓存、整页缓存)

业务数据缓存(本地缓存,分布式缓存)

其它缓存(ORM、数据库、搜索引擎等缓存)

 

缓存的常见模式和策略(过期、更新、清除)

缓存的常见模式:

 

缓存的策略:

缓存的更新策略

A 由获取数据请求触发的被动更新

B 由更新数据请求触发的主动更新(双写)

C 使用独立线程主动定时更新缓存

D 回调方式更新(过期或依赖)

E 永远不更新?

  

缓存的过期(失效)策略

F 绝对的过期时间

G 平滑过期(有人使用就不会过期)

H 依赖方式(依赖数据库、依赖文件)

I 永远不过期?

缓存的清除(替换)策略:

RAND 删除随机数据,不能反映局部性。

SIZE 删除最大的数据。

FIFOFirst In First Out 删除最先进入缓存的数据,不能反映局部性。

LFULeast Frequently Used 删除一直以来最少被使用的数据。

LRULeast Recently Used 删除最近最少使用的数据。

常见模式

延迟加载方式:A+F

预加载方式:B/C/E+I

目录
相关文章
|
5月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
4月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
811 3
|
7月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
6月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
343 0
|
2月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
274 6
|
3月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
3月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
471 0
|
2月前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
4月前
|
Web App开发 Linux 虚拟化
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
274 0
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
|
6月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
5012 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性