微服务实战系列之Cache

前言

欢迎来到Cache(缓存)的世界!
自从世界第一台计算机诞生之日起,人们对效率的渴望逐步增强。从CPU到存储,从芯片到内存,一批又一批的先驱以一种孜孜不倦的“工匠”精神,为计算机运行效率的提升做出了不可磨灭的贡献。从而也为世界各国计算机的快速发展和普及铺平了道路,迎来了发展的春天!

本期主题,博主带着大家了解Cache,进而掌握如何使用Cache
首先,按惯例,请允许微服务大家族成员前来报到。如有需要请回看,欢迎三连:

  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

提到Cache,各位盆友,可联想到什么?

  • A. redis
  • B. cookie
  • C. ehcache
  • D. memcache
  • E. 其它

欢迎开始今天的旅程,允许博主带着各位盆友“逛一逛”,探一下Cache的内幕。


一、Cache简介

首先我们看一下,什么是缓存:

缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。
L1 Cache(一级缓存)是CPU第一层高速缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般L1缓存的容量通常在32—256KB。
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速率与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,普通台式机CPU的L2缓存一般为128KB到2MB或者更高,笔记本、服务器和工作站上用CPU的L2高速缓存最高可达1MB-3MB。由于高速缓存的速度越高价格也越贵,故有的计算机系统中设置了两级或多级高速缓存。紧靠CPU的一级高速缓存的速度最高,而容量最小,二级高速缓存的容量稍大,速度也稍低。——百度百科

这是一段来自百科的标准定义,翻译成通俗的语言,大致是:

Cache是用于临时存储频繁使用的数据的存储 空间。

因此它具备几个特征:

1. 占内存
2. 多层级
3. 速度快
4. 体验佳

在这里插入图片描述

接下来,博主带着各位盆友对Cache的核心内容进行初步的剖析。

二、Cache核心

1. 数据共享

为什么数据共享?
那还要借上图加以说明:
在计算机组成结构中,数据读取大致遵循依次CPU—>缓存—>内存—>硬盘路线,当然成本逐步降低,效率也会变的渐行渐远。
因此,缓存数据不能太多,多而不美,也就失去了缓存的意义。
所以,我们在设计缓存的时候,一定考虑Hit(命中率),合理定义哪些属于高热数据。
在这里插入图片描述

2. 多层级

多层级什么概念?
根据服务的执行时序,在每个“关卡”设置缓存,达到综合利用资源的目的。
比如浏览器/客户端设置缓存;
比如web前端设置缓存;
比如后端服务设置缓存;
又比如,我们在架构设计时,可以考虑两级缓存等等。
在这里插入图片描述

3. 一致性

为什么考虑一致性?
因为缓存是缓存,数据是数据,操作有先后,结果分轻重。
如果缓存设计不佳,各种千奇百怪的问题就出现了,比如“幻读”等。那如何解决一致性问题呢?通常有几种策略:

  • 缓存失效

数据更新后,主动将缓存失效,下次请求时,重新load缓存,此乃最简单的策略。

  • 广播更新

在分布式系统中,我们常常最头疼的问题是如何发送消息,因此MQ也成了微服务中常见的组件。所以当数据更新后,可以通过MQ发布订阅消息,由各节点接收订阅并刷新缓存。此策略适用于异步交互场景。

  • 读写互斥

数据更新,有且仅有一个线程在操作。通过引入锁机制完成。此策略可能遇到性能问题。

  • 延迟刷新

与缓存失效策略相比,时间延后,但可能带来数据的延迟问题。

4. 时效性

缓存具备时效性,结合命中率,设计缓存时,应合理定义缓存的过期时间。通常与业务场景有关,需要加以鉴别。


结语

综上,博主针对Cache的基础,进行了初步的介绍。所谓平地起高楼,基础尤重要
理解了缓存的定义,就能够合理使用它。
好了,博主今日到此为止,下期再见!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-Plus及多数据源入门教程

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2、MySQL 8.0.34 框架介绍 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis 是一款非常优秀的开源…

快速了解Spring AOP的概念及使用

文章目录 1. AOP概念1.1 什么是AOP?1.2 什么是Spring AOP? 2. Spring AOP的使用2.1 引入Spring AOP依赖2.2 编写AOP程序 3. Spring AOP详解3.1 Spring AOP核心概念1. 切点(Pointcut)2. 连接点(Join Point)3…

C++ day37 贪心算法 单调递增的数字 监控二叉树

题目1&#xff1a;738 单调递增的数字 题目链接&#xff1a;单调递增的数字 对题目的理解 返回小于或等于n的最大数字&#xff0c;且数字是单调递增&#xff08;单调递增数字的定义&#xff1a;每个相邻位上的数字满足x<y&#xff09; 贪心算法 注意本题的遍历顺序是从…

【算法刷题】Day7

文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目&#xff0c;首先看一下题干的要求&#xff0c;是在原数组内进行操作&#xff0c;平切保持非零元素的相对顺序 这个时候我们看到了示例一&#xff1a; [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …

16.spirng源码解析-registerBeanPostProcessors

注册拦截bean创建的bean处理器 此部分实质上是在BeanDefinitions中寻找BeanPostProcessor&#xff0c;之后调用BeanFactory.addBeanPostProcessor方法保存在一个List中&#xff0c;注意添加时仍然有优先级的概念&#xff0c;优先级高的在前面。

内测分发平台是否支持敏捷开发和持续集成?

大家好&#xff0c;我是咕噜-凯撒。敏捷开发和持续集成是软件开发中非常重要的流程和方法。内测分发平台作为应用开发和测试的关键环节需要具备这种能力。下面我简单的介绍一下敏捷开发和持续集成和提供的功能。图片来源&#xff1a;news.gulufenfa.com 敏捷开发是一种迭代、协…

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性&#xff0c;让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量&#xff0c;SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作&#xff0c;T-POP Incorporation 是泰国流行文化在全球舞台上的领…

leetcode算法之字符串

目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一&#xff1a;两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…

Ps:子路径的上下排列以及对齐与分布

不论是一个形状图层&#xff08;或图层的矢量蒙版&#xff09;上的多个形状还是同一路径层上多个路径&#xff0c;只要对应“路径”面板的一个路径层&#xff0c;可以将这些路径称为该路径层的“子路径”&#xff0c;也称为“组件”。 当一个路径层上有两个以上的子路径时&…

量子力学:科技前沿的探索与挑战

量子力学:科技前沿的探索与挑战 一、量子力学的魅力与挑战 量子力学是研究微观粒子如电子、光子等行为的物理学分支。与经典力学不同,量子力学描述了一个充满不确定性和概率性的世界。在这个世界里,粒子可以同时处于多个状态,只有当我们对其进行测量时,它才会“选择”一个…

【Python基础】爬取豆瓣电影Top250+爬取知乎专栏文章标题

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

xcode opencv

1、导入报错 Undefined symbols: linker command failed with exit code 1 (use -v to see invocation) 直接添加如下图内容即可

Spark_Spark高阶特性

wscg filter导致断链 Codegen 向量化 simdjson Orc Parquet 支持批量读取 spark本身对parquet支持比较好&#xff0c;因为parquet

服务器中深度学习环境的配置

安装流程 11.17 日&#xff0c;周末去高校参加学术会议&#xff0c;起因&#xff0c; 由于使用了某高校内的公共有线网络&#xff0c; 远程连接服务器后&#xff0c;黑客利用 ssh 开放的 22 端口&#xff0c; 篡改了主机的配置&#xff0c; 使得只要一连上网络&#xff0c; 服…

如何用Python批量删除视频的头尾(88)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 关注我&#xff0c;一起趣味学编程&#xff01; 今天我们继续用Python玩转视频。 还是用Python的第三方库moviepy。 如果你对此文章感兴趣的话&#xff0c;可以看看之前的…

跨越威胁的传说:揭秘Web安全的七大恶魔

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

nodejs669在线图书借阅管理系统vue前端

系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户模块、用户表模块、图书借阅模块、图书归还模块、图书分类模块、token表模块、收藏表模块、书籍信息模块、图书资讯模块、留言板模块、书籍信息评论表模块、注册用户模块、配置文件模块、处罚记录模块、在线客…

excel表格在线编辑(开源版)

文章目录 前言一、Luckysheetvue3vite 例子如有启发&#xff0c;可点赞收藏哟~ 前言 本文记录好用的开源在线表格 具体如图显示 另外记录下更名后的univer~&#xff0c;如下图&#xff08;有兴趣可自行详细了解&#xff09; univer 在线思维导图 一、Luckysheet 参考git…

从苹果到蔚来,「车手互联」网罗顶级玩家

作者 |Amy 编辑 |德新 汽车作为家之外的第二大移动空间&#xff0c;正与手机这一移动智能终端进行「车手互联」。 车手互联始于十年前的苹果CarPlay&#xff0c;一度成为时代弄潮儿&#xff0c;不断有后继者模仿并超越。时至今日&#xff0c;CarPlay2.0依旧停留在概念阶段&am…

idea社区版免费下载方式

1.访问中国区网站 下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 2.完成下载安装