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

【系统设计】高可用之缓存基础

缓存的缘起

使用缓存的主要原因包括提高系统性能、降低数据库负载、提升用户体验和保证系统可用性。‌

在计算机体系结构中,由于处理器和存储器的处理时间不匹配,在处理器和一个较大较慢的设备之间插入一个更小更快的存储设备(如高速缓存)成为现代设计和实现的一个普遍观念。下图是一个典型的存储器层次结构(来自《深入理解计算机系统·第三版》):
存储器层次结构-图片来自《深入理解计算机系统·第三版》

进入互联网时代后,基于网络的分布式系统逐步成为主流。互联网应用的用户多、访问量大,用户对系统响应时间感知很敏感,因此对系统提出来新的要求。

与CPU的时间相比,单个用户要求的响应时间很长,如果是人工操作,可能到百毫秒级即可;如果是服务调用,可能要求在毫秒级。数量庞大的请求量则对系统的处理能力提出了新的挑战,也产生了众多的解决方案。

在这些解决方案中,主流的方案之一是使用缓存。根据应用服务功能的特性,提供各种各样的缓存机制。

应用缓存的原理:

与处理器和存储器的处理时间不匹配类似.
处理请求和响应不匹配的本质仍然是处理时间不匹配。

造成响应时间长的典型原因有以下几种:

  • 业务逻辑的复杂性增加了响应的时间;
  • 物理资源的限制引起资源的竞争、排队,从而延长了响应时间;
  • 访问量的突发性,加剧了上述问题的发生概率;
  • 利用上述特性进行主动/恶意攻击,加剧了上述问题发生几率。

缓存的分类

根据缓存所处的位置、担任的角色不同,缓存具有不同的分类方法。
根据缓存在应用中的位置,可以分为浏览器缓存、客户端缓存、服务器缓存、数据库缓存等。
根据缓存的放置方式,可以分为本地缓存、分布式缓存等。
根据缓存的生命周期,有不过期缓存和带过期时间缓存。

几点注意

由于增加了缓存这一中间交互,不可避免的增加了复杂度,也就引出了一些相关的问题点需要注意。

数据不一致

最典型的,是缓存数据和数据库的数据不一致。
其次,如果是分布式缓存,如果存在节点异常,可能会存在多个节点的数据不一致,有脏数据。

热点问题

对于突发事件、重大热点、秒杀、抢票等类似问题,如果采用缓存,相应的数据就会变成热点(hotkey),需要避免热点问题带来的系统崩溃。

缓存雪崩、穿透、击穿

缓存雪崩,是指大量的缓存(不同缓存key)同时大面积失效,导致缓存无效从而导致后端数据库系统的压力过大而崩溃。
缓存穿透,是指请求到空数据,缓存和数据库中都不存在,每次都会落到数据库查询。
缓存击穿,大量请求命中不到缓存而查到数据库,而这些请求请求的是同一条数据。这一点与缓存雪崩有显著差别。

小结

本文根据缓存的来源,简要的介绍了缓存的来源、分类和注意事项,便于对缓存有个概念上的了解。在后续内容将会介绍具体实践内容,以便于更细致的了解。

http://www.lryc.cn/news/498000.html

相关文章:

  • 《Java核心技术I》volatile字段
  • 2024运维故障记 | 12/2 网易云音乐崩了
  • 架构设计读后——微服务
  • 软考高级架构-9.4.4-双机热备技术 与 服务器集群技术
  • 聊聊前端工程化
  • “放弃Redis Desktop Manager使用Redis Insight”:日常使用教程(Redis可视化工具)
  • mmdection配置-yolo转coco
  • 聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程
  • 力扣67. 二进制求和
  • 网络安全中的 SOC 是什么?
  • 16、鸿蒙学习——Visibility与(if...else)该如何选择
  • PH热榜 | 2024-12-05
  • Qt Chart 模块化封装曲线图
  • 【AI系统】MobileFormer
  • python数据分析之爬虫基础:解析
  • uniapp中导入uview或者uview plus
  • 【LeetCode】122.买卖股票的最佳时机II
  • openGauss开源数据库实战十九
  • 恶补英语初级第18天,《询问他人的喜好(上)》
  • centos 报 ping: www.baidu.com: Name or service not known
  • Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算
  • 数据库表约束完全指南:提升数据完整性和准确性
  • 【JavaEE】多线程(6)
  • BERT和RoBERTa;双向表示与单向的简单理解
  • Pytorch使用手册-计算机视觉迁移学习教程(专题十三)
  • Jackson - Java对象与JSON相互转换
  • 怎麼解決路由器IP地址衝突?
  • 趣味数学 2.3.7 | 完全免费,无注册登录,简约纯净
  • Oracle ASM特性介绍和增删盘操作
  • 深度优先搜索迷宫路径